# 通过Raspberry Pi实现无障碍上网

- URL: https://wuming.si/blog/183/
- Author: Aaron
- Published: 2013-01-13
- Language: zh-Hans
- Categories: Progaming, Raspberry Pi, Technology
- Originally published at: https://blog.wo.ai/archives/183

最近貌似google的服务实在不给力，搜索一直都无法打开。正好发挥手头树莓派的功能，来实现家庭无障碍上网。

网络环境：树莓派通过无线连接路由器，其他电脑通过树莓派中转，国内网址直接走路由器，被墙网址通过VPN出去。

首先设置树莓派，通过无线上网：

1.无线配置，修改/etc/network/interfaces，下面的SSID，PASSWORD换成你自己的
    
    
    auto lo
    iface lo inet loopback
    iface eth0 inet dhcp
    allow-hotplug wlan0
    iface wlan0 inet static
    address 192.168.88.10
    netmask 255.255.255.0
    gateway 192.168.88.1
    wpa-ssid "SSID"
    wpa-psk "PASSWORD"
    wireless-power off

2.安装ppp客户端
    
    
    sudo apt-get install pptp-linux
    

3.Next, Create a file in /etc/ppp/peers with arbitrary name and the following contents:  
在/etc/ppp/peers目录创建一个文件，其中VPNHOSTNAME,$USERNAME,$PASSWORD换成你自己的帐号密码
    
    
    pty "pptp $VPNHOSTNAME --nolaunchpppd --debug"
    name $USERNAME
    password $PASSWORD
    remotename PPTP
    require-mppe-128
    require-mschap-v2
    refuse-eap
    refuse-pap
    refuse-chap
    refuse-mschap
    noauth
    debug
    persist
    maxfail 0
    defaultroute
    replacedefaultroute
    usepeerdns
    
    

3.测试vpn拨号是否成功

sudo pon 配置文件名

然后ping www.facebook.com看是否通过。

4\. 启动内核的IPv4转发

sudo sysctl -w net.ipv4.ip_forward=1  
记得同时修改/etc/sysctl.conf保证重启也有效。

5.下载chnroutrs.py，用 chnroutes 生成路由脚本（google chnroutes.py，头条就是）

python chnroutes.py -p linux

会生成ip-down,ip-pre-on等文件。

执行ip-pre-on，会把所有的国内的ip地址段加入路由表。

6.在RPi中启动iptables的NAT转换

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

后来验证似乎还需要这几条指令：

iptables -A INPUT -i ppp0 -j ACCEPT  
iptables -A OUTPUT -o ppp0 -j ACCEPT  
iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE  
iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE

其中wlan0是你的无线网卡的id，如果只有一块网卡，就直接用这个，不需要改了。

在你的客户端电脑上把网关改成PI的ip地址，dns改成8.8.8.8或者8.8.4.4，防止国内dns污染。看看是不是可以打开facebook之类的网站了？

不确定的话，你可以ipconfig /flushdns后，tracert不同域名，看看是不是走不同路由出去的。

tracert www.china.com 这个应该是走路由器出去的

tracert www.facebook.com这个应该是走VPN的。

所有网站畅通无阻的出去了，包括google随便什么关键字都不会重置了。

后记：俺VPN流量有限制，所以都没有加到自动启动里面，每次登录上去手动启动一下就可以了。如果需要自动启动，可以参考其他文章。如果不想每次都要修改dns和网关，在pi上建一个dhcp服务器，网关,dns都配在里面，自动获得就可以了。

比如下面的方法，让系统自动启动VPN

To start your VPN client on boot, you can follow the instructions on<http://pptpclient.sourceforge.net/howto-debian.phtml> (point 8 or 9, Hand configuration section)

An alternate method to make your VPN client run on boot is to make a script in `/etc/init.d`containing these contents:
    
    
    #! /bin/sh
    
    case "$1" in
      start)
        pon $/etc/ppp/peers/FILENAME
        echo "PPTP Started"
        ;;
      stop)
        poff $/etc/ppp/peers/FILENAME
        echo "PPTP Stopped."
        ;;
      *)
        echo "Usage: /etc/init.d/blah {start|stop}"
        exit 1
        ;;
    esac
    
    exit 0
    

Then run:
    
    
    update-rc.d [filename of script] defaults
    

To make it run at startup.
