由于需要在本地虚拟机编译openwrt固件,编译期间需要不断下载依赖,由于GFW的存在,会造成编译的失败,所以需要编译虚拟机连接VPN
虚拟机系统为CentOS6,以连接PPTP为例
首先安装pptp客户端:
yum install pptp pptp-setup
创建VPN连接:
pptpsetup --create myvpn --server 123.456.789.123 --username vpnuser --password 123456 --encrypt #这
里创建了一个名为myvpn的VPN连接
如果出现 FATAL: Module ppp_mppe not found. 错误,需注册模块:
modprobe ppp_mppe
连接VPN
pppd call myvpn
验证是否连接:
ip a |grep ppp
如果没有信息,则连接失败,需参考/var/log/message排错
连接成功后,如需访问VPN服务器的其他客户端,添加路由:
route add -net 192.168.0.0 netmask 255.255.255.0 dev ppp0 #192.168.0.0为VPN服务器内网网段
如需全部流量通过VPN,在连接VPN成功后添加路由:
ip route replace 123.456.789.123 via 192.168.1.1 dev eth0 src 192.168.1.188 #123.456.789.123为VPN服务器ip,192.168.1.1为虚拟机网关(由于虚拟机使用的桥接,所以也是我的路由器地址),192.168.1.188虚拟机的ip
ip route replace default dev ppp0
当断开VPN后,也需要删除路由:
ip route del 123.456.789.123 via 192.168.1.1 dev eth0 src 192.168.1.188
ip route add default via 192.168.1.1
ppp还提供了更方便的方式来连接和断开VPN:
cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin/
cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin/
chmod +x /usr/sbin/pon
chmod +x /usr/sbin/poff
pon myvpn #连接VPN
poff myvpn #断开VPN
我这里也写了一个脚本来整合VPN的连接和断开,每次就不用设置路由了,使用前根据情况修改ip即可
vpnstart脚本:
#!/bin/bash
/usr/sbin/pon myvpn
echo "Ok! Change route now!"
sleep 5
/sbin/ip route replace 123.456.789.123 via 192.168.1.1 dev eth0 src 192.168.1.188
ip route replace default dev ppp0
echo "Successful! VPN is start!"
vpnstop脚本:
#!/bin/bash
/usr/sbin/poff myvpn
echo "Wait! Change route now!"
sleep 5
/sbin/ip route del 123.456.789.123 via 192.168.1.1 dev eth0 src 192.168.1.188
/sbin/ip route add default via 192.168.1.1
echo "Successful! VPN is stop!"