设为首页 - 加入收藏 焦点技术网
热搜:java
当前位置:首页 >

用树莓派做VPN路由网关,让其他设备(Chromecast)通过VPN上网

导读:最近玩Google Chromecast,由于现在Chromecast无法直接连接Google服务器,导致无法使用,所以想用树莓派做个VPN代理,然后chromecast就可以通过国外VPN代理访问Goolge了。晚上回家实验一下,现在先把文章放在这里备份。实验成功了告诉大家结果!下面转自:http://shumeipai.nxez.com/2013/10/26/raspberry-pi-make...。。。
最近玩Google Chromecast,由于现在Chromecast无法直接连接Google服务器,导致无法使用,所以想用树莓派做个VPN代理,然后chromecast就可以通过国外VPN代理访问Goolge了。晚上回家实验一下,现在先把文章放在这里备份。实验成功了告诉大家结果!

下面转自:http://shumeipai.nxez.com/2013/10/26/raspberry-pi-make-a-vpn-gateway-router.html

对于一般家用的路由器,一直苦于路由OS的功能限制,DD-WRT系的软件陈旧。想用PC直接当路由,但价钱上显然是狮子抓耗子。
我的目标是将树莓派做成VPN路由网关,即本身是一个VPN的Client,同时可以转发网络请求。这样只要连上家里的WIFI就可以无缝访问公司网络和其它网络。
实际情况我用的是PPTP协议,当然你可以用其它各种协议来实现。
组网
拓扑如下,也可以再买USB2RJ11和WIFI天线将树莓派变成一个完整的WIFI路由,我这个拓扑是考虑到TP-Link路由可以做备用的网关。


Raspberry Pi安装基本环境
先装Debian,安装方法可以参考这里。
默认只有vi和nano,可以装个vim或emacs。
装PPTP Client:
1 sudo apt-get install pptp-linux 

为系统配置静态IP,实际情况里我使用192.168.1.69做网关静态IP,详细见 Debian Wiki
配置PPTP连接
配置以太网口可用时自动连接PPTP服务器:sudo vi /etc/network/if-up.d/vpn,键入以下内容(< >里的内容按实际情况填写)
12 #! /bin/bash/usr/sbin/pptpsetup --create <名字(随便起)> --server <服务器地址> --username <用户名> --password <密码> --encrypt --start 

配置PPTP链接断开后自动重连,执行以下命令
1 sudo cp /etc/network/if-up.d/vpn /etc/ppp/if-down.d/vpn 

修改路由表,将PPTP服务器作为下一跳的网关,即默认使用PPTP连接发送所有流量(如果你有这个需求)。在PPTP连接成功后进行修改:sudo vi /etc/ppp/ip-up.d/vpn,键入以下内容
12 #! /bin/sh/sbin/route add default dev $PPP_IFACE 

由于家里使用的PPPoE上网,加上PPTP协议封装,链路实际可用的MTU减小。我的PPTP服务器使用的MTU是1300,当内网中其它终端以树莓派为网关时并不知道网关的下一跳链路的MTU小于1500,终端也不会在DHCP过程中主动配置MTU值,1500大小的包转发到PPTP链路中会被丢弃,造成无法上网的现象。解决方法是配置TCP MSS值,使系统遇到大于MSS值的包时先拆包再转发:
1 sudo iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1268 

配置网关相关功能
修改/etc/sysctl.conf,使树莓派可以转发ipv4的流量
1 net.ipv4.ip_forward=1 

使sysctl.conf的修改马上生效
1 sudo sysctl -p 

配置iptables,使系统强制转发所有流量
1 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

其它配置
保存iptables的信息,用于之后快速恢复当前配置
1 sudo iptables-save > /etc/iptables.rules 

当以太网端口可用时,恢复iptables配置,sudo vi /etc/network/if-up.d/iptables,键入以下内容:
12 #! /bin/shiptables-restore < /etc/iptables.rules 

如果你使用了PPTP服务器作为网关转发所有流量,你很可能需要配置路由表,使某些ip是例外,不走PPTP链路的。这种脚本网上很多,一般分ip-pre-up和ip-down两个脚本分别用于添加、删除路由表记录。将ip-pre-up放到/etc/network/if-up.d/下;ip-down放到/etc/network/if-down.d/下
确保上面的所有钩子脚本都有执行权限:
1 sudo chmod +x /etc/network/if-up.d/* /etc/network/if-down.d/* /etc/ppp/ip-up.d/* /etc/ppp/ip-down.d/* 

配置DHCP
配置DHCP服务器信息,网关填上树莓派的静态ip,我是在TP-Link上配置DHCP信息的
结束语
以上就是VPN路由的所有配置,现在你可以iPhone、iPad、 Android、电脑、PSVita、3DS、PS3、XBOX360等等连上你的TP-Link,即可无缝使用VPN链路,树莓派也会像一般的路由器一样稳定工作。
所有终端因为DHCP的配置将流量发向树莓派,树莓派按路由表的配置选择使用PPTP链路。
要配置的地方比较多,中间有一步出了问题都可能使树莓派无法稳定工作,需要你熟悉计算机网络,Linux网络配置。

(编辑: offbye)

网友评论
相关文章