通过Raspberry Pi实现无障碍上网

最近貌似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 onhttp://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.dcontaining 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.

Raspberry Pi跑起来了

Raspberry Pi是什么?
引用维基百科的一句话:

The Raspberry Pi is a credit card sized single-board computer developed in the UK by the Raspberry Pi Foundation with the intention of stimulating the teaching of basic computer science in schools.

Pi 已经流行了一段时间了,找到一个开始测试。

入手第一件事,就是刷SD卡。从各个官网下载固件,然后烧到SD卡上。花了两天,把所有的固件都刷了一遍,总算把基本功能跑起来。

Raspberry PI官网固件,直接进桌面,体现了它的原始想法–教育,但是没有媒体功能,所有的东西都需要自己折腾,UI方面的折腾实在不想花太多时间,放弃。

Raspbmc,功能比较齐全,直接进入XBMC,Airplay只有声音没有图像,无线网卡无法启动,总不能从客厅拖一根网线到房间吧,只能放弃。

Openelec,直接进入XBMC,但是功能是在太精简,完全没办法在上面开发定制自己的功能,放弃。

Xbian,很精简,直接进入XBMC,无线网卡功能能用,但是Airplay直接无线。配置好了XBMC,加入中国视频网站的支持,至少摆在房间可以用来做播放器,后台可以用来做智能控制,就选这个了。

今天试了红外接收板接收遥控器信号,信号能够接收到,但是还没办法解码。或者不解码了,直接通过发射板发射出去好了,改天再研究。

实现目标,通过Pi能够通过红外来控制各种家电,比如电视、机顶盒、空调、dvd、取暖器;控制摄像头,可以实现监控;通过温度感应器,读取温度,然后启动取暖器或者空调;无障碍翻墙;做个定时撞钟发微博的机器人…