OpenWRT是一個嵌入式Linux系統,想要了解嵌入式Linux系統的朋友有福了,下面大家介紹下OpenWRT路由的基本配置,一起來學習下吧。
chnroutes路由表
這個路由表集中了所有分配到中國大陸的IP段, 每天自動更新,可使得在訪問國內地址時不經過VPN。
想想如果能夠讓家里的路由直接連接VPN,在家連接 WiFi 的所有設備直接達到Fan墻的效果,應該很Cool,所以最近在某寶整了一個Netgear WNDR3800二手路由回來,先后分別在DD-WRT和OpenWRT成功配置VPN+chnroutes,最后還是選擇了OpenWRT。
DD-WRT vs OpenWRT
關于DD-WRT和OpenWRT,選擇OpenWRT主要因為DD-WRT ROM中集成的軟件太多,絕大多數用不到,要配置jffs2來保存腳本文件,一般配置則保存在nvram中,而且無線較不穩定,5G頻段常搜索不到(當然可能是我這個路由器型號的支持問題)。OpenWRT 的配置文件語法統一,配置都存儲在文件系統中,且ROM本身僅集成了必備組件,非常小,可以只安裝需要的東西,WEB管理界面也是可選安裝,簡潔強大,經過若干天的使用一直比較穩定。
配置
已配置好OpenWRT上網的童鞋們可以直接跳過1.刷ROM和2.初始配置
1.刷ROM
a.首先確定設備可以被OpenWRT所支持,然后到下載編譯好的ROM。最新的stable版本是attitude_adjustment(12.09),下載的是trunk版本。
b.在OpenWRT官網找相應設備的Wiki頁面查看刷機方法,一般都是在路由器官方Web固件升級頁面直接刷入。
2.初始配置
a.路由器啟動后,有的型號沒有安裝Wifi模塊,需要先用網線連接到LAN口,本機IP配置為靜態192.168.1.x,然后telnet到192.168.1.1,更改root密碼,然后ssh連入。
b.配置WAN 口,讓路由連上Internet。
比如要配置PPPoE:
代碼如下:
uci set network.wan.proto=pppoe
uci set network.wan.username=‘yougotthisfromyour@isp.su’
uci set network.wan.password=‘yourpassword’
uci commit network
ifup wan
c.安裝LuCI Web管理界面并設置開機自動啟動。
代碼如下:
opkg update
opkg install luci
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable
d.瀏覽器輸入路由器LAN側IP(多為192.168.1.1),進行Wifi等配置。
3.配置DNS
a.創建 /etc/config/sec_resolv.conf
vim /etc/config/sec_resolv.conf 填入以下 DNS Servers:
代碼如下:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 208.67.222.222
b.編輯 /etc/config/dhcp
vim /etc/config/dhcp
找到option resolvfile選項,替換為:
option resolvfile ‘/etc/config/sec_resolv.conf’
4.配置PPTP
a.安裝ppp-mod-pptp
代碼如下:
opkg update
opkg install ppp-mod-pptp
如果需要LuCI 支持(推薦):
opkg install luci-proto-ppp
b.配置vpn接口,編輯 /etc/config/network 文件,應該已經有以下內容(如果沒有,需要插入),并配置里面的server、username和password:
代碼如下:
config ‘interface’ ‘vpn’
option ‘ifname’ ‘pptp-vpn’
option ‘proto’ ‘pptp’
option ‘username’ ‘vpnusername’
option ‘password’ ‘vpnpassword’
option ‘server’ ‘vpn.example.org or ipaddress’
option ‘buffering’ ‘1’
c.進入Network-》Firewall,把vpn加入wan zone,效果如圖:
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項目的下載頁面下載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和自動重連已經配置完成。
上面就是OpenWRT 路由配置的方法介紹了,如果要給OpenWRT 配置路由的話,不妨試試本文介紹的方法,希望對你有所幫助。