d.進入 Network -> Interfaces ,此時應該已經可以看到 VPN Interface 並可以連接,效果如圖:
e.此時在本機 traceroute www.google.com,應該能得到類似以下的結果:
復制代碼代碼如下:
FL-MBP:~ fatlyz$ traceroute www.google.com
traceroute: Warning: www.google.com has multiple addresses; using 74.125.239.113
traceroute to www.google.com (74.125.239.113), 64 hops max, 52 byte packets
fc_r0.lan (192.168.7.1) 2.266 ms 0.999 ms 0.946 ms
10.7.0.1 (10.7.0.1) 189.259 ms 187.813 ms 188.368 ms
23.92.24.2 (23.92.24.2) 189.847 ms 190.489 ms 188.939 ms
10ge7-6.core3.fmt2.he.net (65.49.10.217) 188.508 ms 192.216 ms 202.863 ms
10ge10-1.core1.sjc2.he.net (184.105.222.14) 195.695 ms 195.691 ms 284.242 ms
72.14.219.161 (72.14.219.161) 189.196 ms 192.287 ms 193.220 ms
216.239.49.170 (216.239.49.170) 192.496 ms 188.547 ms 189.881 ms
66.249.95.29 (66.249.95.29) 190.125 ms 190.335 ms 190.026 ms
nuq05s01-in-f17.1e100.net (74.125.239.113) 189.804 ms 190.556 ms 190.242 ms
可以看出,其中第二跳是 VPN 的網關,而 traceroute www.baidu.com 的話第二跳應該也是同樣的結果。
這時已經可以訪問 Google, Baidu 等國內外的站點了。
5.配置 chnroutes
a.到 chnroutes 項目的下載頁面:http://chnroutes-dl.appspot.com/ 下載 linux.zip,解壓
b.把 ip-pre-up 重命名為 chnroutes.sh,打開編輯,在 if [ ! -e /tmp/vpn_oldgw ]; then 前插入以下代碼,以避免 ppp 連接腳本重復執行導致重復添加路由表項:
復制代碼代碼如下:
if [ $OLDGW == 'x.x.x.x' ]; then
exit 0
fi
其中 x.x.x.x 是 VPN 的網關,可以先本機連接上去之後查看一下網關地址。
c.ssh 連接到路由器,執行以下命令:
復制代碼代碼如下:
cd /etc/config/
mkdir pptp-vpncd pptp-vpnvim chnroutes.sh
在 vim 中把編輯好的 chnroutes.sh 粘貼進去(當然也可以通過 ssh 直接把 chnroutes.sh 文件傳過去,或者上傳到某個地方再 wget 下載)
執行以下命令,設置權限為可執行:
chmod a+x chnroutes.sh
d.用 vim 編輯 /lib/netifd/ppp-up 文件:
vim /lib/netifd/ppp-up
在 [ -d /etc/ppp/ip-up.d ] && { 這一行前插入以下內容,確保 ppp 連接腳本能夠被執行:
sh /etc/config/pptp-vpn/chnroutes.sh
e.重啟路由,啟動好之後,進入 LuCI 查看接口狀態,等 WAN 和 VPN 都連接成功後,ssh進去,執行 route -n | head -n 10 ,效果應該類似這樣:
復制代碼代碼如下:
root@FC_R0:/etc/config# route -n | head -n 10
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.7.0.1 0.0.0.0 UG 0 0 0 pptp-vpn
1.0.1.0 58.111.43.1 255.255.255.0 UG 0 0 0 pppoe-wan
1.0.2.0 58.111.43.1 255.255.254.0 UG 0 0 0 pppoe-wan
1.0.8.0 58.111.43.1 255.255.248.0 UG 0 0 0 pppoe-wan
1.0.32.0 58.111.43.1 255.255.224.0 UG 0 0 0 pppoe-wan
1.1.0.0 58.111.43.1 255.255.255.0 UG 0 0 0 pppoe-wan
1.1.2.0 58.111.43.1 255.255.254.0 UG 0 0 0 pppoe-wan
1.1.4.0 58.111.43.1 255.255.252.0 UG 0 0 0 pppoe-wan
其中 Destination 為 0.0.0.0 的是默認路由,網關為 VPN 網關,意味著默認流量都經過 VPN,而以下的條目則把目的為國內的網段都指向了 ISP 提供的網關。
至此 PPTP VPN 和 chnroutes 已經配置完畢。
6.配置 VPN 斷線自動重連
a.創建 /etc/config/pptp-vpn/status-check.sh:
vim /etc/config/pptp-vpn/status-check.sh
在 vim 中粘貼以下內容(此腳本檢測 VPN 連接狀態,並在斷線後會斷開 WAN 和 VPN 接口,10秒後重新連接 WAN,並在 30 秒後重連 VPN):
復制代碼代碼如下:
#!/bin/sh</p>
<p>if [ -f "/tmp/vpn_status_check.lock" ]
then
exit 0
fi</p>
<p>VPN_CONN=`ifconfig | grep pptp-vpn`</p>
<p>if [ -z "$VPN_CONN" ]
then
touch /tmp/vpn_status_check.lock
echo WAN_VPN_RECONNECT at: >> /tmp/vpn_status_check_reconn.log
date >> /tmp/vpn_status_check_reconn.log</p>
<p> ifdown vpn
ifdown wan
sleep 10
ifup wan
sleep 30
ifdown vpn
sleep 10
ifup vpn
sleep 40
rm /tmp/vpn_status_check.lock</p>
<p>else
date > /tmp/vpn_status_check.log
fi
執行以下命令,設置權限為可執行:
chmod a+x /etc/config/pptp-vpn/status-check.sh
b.進入LuCI 的 System -> Scheduled Tasks 填入以下內容,並保存:
*/1 * * * * /etc/config/pptp-vpn/status-check.sh
以上實際上是編輯了 cron 配置,cron 每分鐘運行檢測 / 重連腳本,重啟 cron:
/etc/init.d/cron restart
c.靜待幾分鐘,查看 /tmp 目錄,應該能看到 vpn_oldgw 和 vpn_status_check.log 文件,查看 vpn_status_check.log 文件,可以看到最近一次檢測 VPN 連接狀態的時間。
復制代碼代碼如下:
root@FC_R0:/tmp# ls vpn*
vpn_oldgw vpn_status_check.log
root@FC_R0:/tmp# cat vpn_status_check.log
Tue Jul 15 00:04:02 HKT 2014
root@FC_R0:/tmp#
你可以在 LuCI 中斷開 VPN 接口,在接下來的4-5分鐘,觀察 WAN 和 VPN 的重連情況。
d.分別 traceroute www.google.com 和 www.baidu.com ,觀察第二跳的地址:
復制代碼代碼如下:
FL-MBP:~ fatlyz$ traceroute www.google.com | head -n 3
traceroute: Warning: www.google.com has multiple addresses; using 74.125.239.115
traceroute to www.google.com (74.125.239.115), 64 hops max, 52 byte packets
fc_r0.lan (192.168.7.1) 2.161 ms 0.912 ms 0.895 ms
10.7.0.1 (10.7.0.1) 193.747 ms 187.789 ms 289.744 ms
23.92.24.2 (23.92.24.2) 259.323 ms 354.625 ms 408.535 ms
復制代碼代碼如下:
FL-MBP:~ fatlyz$ traceroute www.baidu.com | head -n 3
traceroute to www.a.shifen.com (180.76.3.151), 64 hops max, 52 byte packets
1 fc_r0.lan (192.168.7.1) 1.190 ms 0.984 ms 0.731 ms
2 58.111.43.1 (58.111.43.1) 20.616 ms 38.822 ms 18.484 ms
3 183.56.35.133 (183.56.35.133) 20.056 ms 52.353 ms 87.841 ms
可以看出,已成功對國內外的目標地址進行了路由選擇。
至此,OpenWRT 路由的基本配置、PPTP VPN、chnroutes 和自動重連已經配置完成。
本文作者:FatLYZ
URL: http://fatlyz.com