當然大家都知道電信的國際出口有多慘,上個 Google 查東西都讓人想砸電腦(不),同時宿舍移動的接口不用白不用。於是決定嘗試一下組兩個網關,讓部分海(fan)外(qiang)流量走江蘇移動,其余的走江蘇電信,來提升整體的網絡體驗
首先是要修改 WNDR 4300 上的交換機配置,讓他將一個 LAN 口以 WAN 的形式工作:在 OpenWrt 的交換機配置界面,添加一個 VLAN,ID 任意,將 CPU 和准備當作 WAN 的那個口分別設置為 tagged 和 untagged,剩下的其他端口設置成關就好了。
然后去網絡 -> 接口,添加一個類型為 PPPoE 的接口,物理設置接口為剛剛創建的 VLAN 接口。因為路由器的主要接口仍然是之前的 DHCP 客戶端,所以我們要去掉高級設置中的使用默認網關。填寫好 PAP/CHAP 用戶名/密碼后,提交變更。不出意外就成功的撥號完畢,下面需要的就是如何策略路由了。
使用 SSH 連接到路由器,更新軟件包並安裝 iproute2。完成后輸入 ip route,可以看到類似這樣的一行結果:
10.49.196.1 dev pppoe-cmcc proto kernel scope link src 10.49.199.127
很容易想到 10.49.196.1 就是移動 PPPoE 的網關了,我們只要將部分網段的默認路由修改到這個網關上,就可以實現高速訪問國際互聯網了(
#!/bin/sh INT=pppoe-cmcc TABLE=cmcc DEST=`ip route show dev $INT | head -n 1 | awk '{print $1}'` # ConoHa JP route add -net 133.130.96.0/19 gw $DEST route add -net 133.130.88.0/21 gw $DEST route add -net 133.130.126.0/24 gw $DEST # Linode JP route add -net 106.185.24.0/21 gw $DEST route add -net 106.186.16.0/20 gw $DEST # CCZU CERNET route add -net 219.230.144.0/20 gw $DEST # JS Cernet route add -net 211.65.74.0/24 gw $DEST # CCZU Spoc route add -net 202.195.100.0/24 gw $DEST
嗯,最基本的目的已經達到了。無壓力播放 1080P 清晰度的油管視頻最棒了(
不過不久又有新的問題了,江蘇電信的校園寬帶采用的是動態密碼,PPPoE 斷開后因為密碼失效,無法自動恢復接口。這對於寢室一個玩夢幻西游的同學來說是非常恐怖的——每次掉線都要花大量的時間重新登陸所有的賬號。
於是,經過討論決定,將 192.168.1.240/28 這個網段獻祭出來,做純移動的接口,以用來掛機下載或者是長時間不掉線的網絡。經過編輯的新腳本如下:
#!/bin/sh INT=pppoe-cmcc TABLE=cmcc DEST=`ip route show dev $INT | head -n 1 | awk '{print $1}'` SRC=`ip route show dev $INT | head -n 1 | awk '{print $7}'` if [ "$1" == "pppoe-cmcc" ]; then # Remove all old rules # while ip rule delete from 0/0 to 0/0 table cmcc 2>/dev/null; do true; done # Add rules to let 192.168.1.240/28's traffic to CMCC gateway. ip rule add from 192.168.1.240/28 table cmcc priority 32765 ip rule flush cache ip route add default via $SRC dev $INT table cmcc # ConoHa JP route add -net 133.130.96.0/19 gw $DEST route add -net 133.130.88.0/21 gw $DEST route add -net 133.130.126.0/24 gw $DEST # Linode JP route add -net 106.185.24.0/21 gw $DEST route add -net 106.186.16.0/20 gw $DEST # CCZU CERNET route add -net 219.230.144.0/20 gw $DEST # JS Cernet route add -net 211.65.74.0/24 gw $DEST # CCZU Spoc route add -net 202.195.100.0/24 gw $DEST fi
將這個腳本放置到 /etc/ppp/ip-up.d/cmcc 中,並添加可執行權限,我們的簡單的策略路由腳本就能在移動撥號成功后自動應用到系統路由表上。