openWRT簡(jiǎn)介
OpenWrt 可以被描述為一個(gè)嵌入式的 Linux 發(fā)行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個(gè)單一的、靜態(tài)的系統(tǒng)。OpenWrt的包管理提供了一個(gè)完全可寫(xiě)的文件系統(tǒng),從應(yīng)用程序供應(yīng)商提供的選擇和配置,并允許您自定義的設(shè)備,以適應(yīng)任何應(yīng)用程序。
對(duì)于開(kāi)發(fā)人員,OpenWrt 是使用框架來(lái)構(gòu)建應(yīng)用程序,而無(wú)需建立一個(gè)完整的固件來(lái)支持;對(duì)于用戶來(lái)說(shuō),這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設(shè)備。
openWRT特點(diǎn)
OpenWRT是一個(gè)高度模塊化、高度自動(dòng)化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器以及VOIP設(shè)備中。 同時(shí),它還提供了100多個(gè)已編譯好的軟件,而且數(shù)量還在不斷增加,而 OpenWrt SDK 更簡(jiǎn)化了開(kāi)發(fā)軟件的工序。
OpenWRT不同于其他許多用于路由器的發(fā)行版,它是一個(gè)從零開(kāi)始編寫(xiě)的、功能齊全的、容易修改的路由器操作系統(tǒng)。實(shí)際上,這意味著您能夠使用您想要的功能而不加進(jìn)其他的累贅,而支持這些功能工作的linux kernel又遠(yuǎn)比絕大多數(shù)發(fā)行版來(lái)得新。
openWRT優(yōu)勢(shì)
如果對(duì) Linux 系統(tǒng)有一定的認(rèn)識(shí), 并想學(xué)習(xí)或接觸嵌入式 Linux 的話, OpenWRT很適合。 而且OpenWRT支持各種處理器架構(gòu),無(wú)論是對(duì)ARM,X86,PowerPC或者M(jìn)IPS都有很好的支持。 其多達(dá)3000多種軟件包,囊括從工具鏈(toolchain),到內(nèi)核(linux kernel),到軟件包(packages),再到根文件系統(tǒng)(rootfs)整個(gè)體系,使得用戶只需簡(jiǎn)單的一個(gè)make命令即可方便快速地定制一個(gè)具有特定功能的嵌入式系統(tǒng)來(lái)制作固件。
openWRT劣勢(shì)
1.由于CPU內(nèi)核體系不同,造成很多應(yīng)用程序移植到OpenWrt上的時(shí)候經(jīng)常崩潰。
2.由于ADSL硬件模塊的驅(qū)動(dòng)程序沒(méi)有開(kāi)放源代碼,造成很多ADSL一體無(wú)線路由的ADSL模塊不能工作而造成功能缺失(RG100A和DB120除外)。
3.由于OpenWRT并不是官方發(fā)布的路由器固件,所以要使用(刷入該固件)有困難,而且其基于Linux,導(dǎo)致OpenWRT的入門(mén)門(mén)檻較高。
openwrt路由器配置方法技巧分享
chnroutes路由表
這個(gè)路由表集中了所有分配到中國(guó)大陸的 IP 段,根據(jù) http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest 每天自動(dòng)更新,可使得在訪問(wèn)國(guó)內(nèi)地址時(shí)不經(jīng)過(guò) VPN。
想想如果能夠讓家里的路由直接連接 VPN,在家連接 WiFi 的所有設(shè)備直接達(dá)到Fan墻的效果,應(yīng)該很 Cool,所以最近在某寶整了一個(gè) Netgear WNDR3800 二手路由回來(lái),先后分別在 DD-WRT 和 OpenWRT 成功配置 VPN + chnroutes,最后還是選擇了 OpenWRT。
DD-WRT vs OpenWRT
關(guān)于 DD-WRT 和 OpenWRT,我選擇 OpenWRT 主要因?yàn)?DD-WRT ROM 中集成的軟件太多,絕大多數(shù)用不到,要配置 jffs2 來(lái)保存腳本文件,一般配置則保存在nvram中,而且無(wú)線較不穩(wěn)定,5G頻段常搜索不到(當(dāng)然可能是我這個(gè)路由器型號(hào)的支持問(wèn)題)。OpenWRT 的配置文件語(yǔ)法統(tǒng)一,配置都存儲(chǔ)在文件系統(tǒng)中,且 ROM 本身僅集成了必備組件,非常小,可以只安裝需要的東西,WEB管理界面也是可選安裝,簡(jiǎn)潔強(qiáng)大,經(jīng)過(guò)若干天的使用一直比較穩(wěn)定。
配置
已配置好 OpenWRT 上網(wǎng)的童鞋們可以直接跳過(guò) 1.刷 ROM 和 2.初始配置
1.刷 ROM
a.首先確定你的設(shè)備可以被 OpenWRT 所支持(到這里查看支持的設(shè)備列表:http://wiki.openwrt.org/toh/start),然后到這里下載編譯好的 ROM:http://downloads.openwrt.org/ 。最新的 stable 版本是 attitude_adjustment(12.09),我下載的是 trunk 版本。
b.在 OpenWRT 官網(wǎng)找相應(yīng)設(shè)備的 Wiki 頁(yè)面查看刷機(jī)方法,一般都是在路由器官方Web固件升級(jí)頁(yè)面直接刷入(我的 WNDR3800 Wiki頁(yè)面是:http://wiki.openwrt.org/toh/netgear/wndr3800)
2.初始配置
a.路由器啟動(dòng)后,有的型號(hào)沒(méi)有安裝 Wifi 模塊,需要先用網(wǎng)線連接到 LAN 口,本機(jī) IP 配置為靜態(tài) 192.168.1.x,然后 telnet 到 192.168.1.1,更改 root 密碼,然后 ssh 連入,參考:http://wiki.openwrt.org/doc/start#configuring.openwrt
b.配置 WAN 口,讓路由連上 Internet,參考:http://wiki.openwrt.org/doc/howto/internet.connection 。
比如要配置 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 管理界面并設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng),參考:http://wiki.openwrt.org/doc/howto/luci.essentials
代碼如下:
opkg update
opkg install luci
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable
d.瀏覽器輸入路由器 LAN 側(cè) IP(多為192.168.1.1),進(jìn)行 Wifi 等配置
3.配置 DNS
a.創(chuàng)建 /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 選項(xiàng),替換為:
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 文件,應(yīng)該已經(jīng)有以下內(nèi)容(如果沒(méi)有,需要插入),并配置里面的 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.進(jìn)入 Network -》 Firewall ,把 vpn 加入 wan zone,效果如圖:
d.進(jìn)入 Network -》 Interfaces ,此時(shí)應(yīng)該已經(jīng)可以看到 VPN Interface 并可以連接,效果如圖:
e.此時(shí)在本機(jī) traceroute www.google.com,應(yīng)該能得到類似以下的結(jié)果:
代碼如下:
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 的網(wǎng)關(guān),而 traceroute www.baidu.com 的話第二跳應(yīng)該也是同樣的結(jié)果。
這時(shí)已經(jīng)可以訪問(wèn) Google, Baidu 等國(guó)內(nèi)外的站點(diǎn)了。
5.配置 chnroutes
a.到 chnroutes 項(xiàng)目的下載頁(yè)面:http://chnroutes-dl.appspot.com/ 下載 linux.zip,解壓
b.把 ip-pre-up 重命名為 chnroutes.sh,打開(kāi)編輯,在 if [ ! -e /tmp/vpn_oldgw ]; then 前插入以下代碼,以避免 ppp 連接腳本重復(fù)執(zhí)行導(dǎo)致重復(fù)添加路由表項(xiàng):
代碼如下:
if [ $OLDGW == ‘x.x.x.x’ ]; then
exit 0
fi
其中 x.x.x.x 是 VPN 的網(wǎng)關(guān),可以先本機(jī)連接上去之后查看一下網(wǎng)關(guān)地址。
c.ssh 連接到路由器,執(zhí)行以下命令:
代碼如下:
cd /etc/config/
mkdir pptp-vpncd pptp-vpnvim chnroutes.sh
在 vim 中把編輯好的 chnroutes.sh 粘貼進(jìn)去(當(dāng)然也可以通過(guò) ssh 直接把 chnroutes.sh 文件傳過(guò)去,或者上傳到某個(gè)地方再 wget 下載)
執(zhí)行以下命令,設(shè)置權(quán)限為可執(zhí)行:
chmod a+x chnroutes.sh
d.用 vim 編輯 /lib/netifd/ppp-up 文件:
vim /lib/netifd/ppp-up
在 [ -d /etc/ppp/ip-up.d ] && { 這一行前插入以下內(nèi)容,確保 ppp 連接腳本能夠被執(zhí)行:
sh /etc/config/pptp-vpn/chnroutes.sh
e.重啟路由,啟動(dòng)好之后,進(jìn)入 LuCI 查看接口狀態(tài),等 WAN 和 VPN 都連接成功后,ssh進(jìn)去,執(zhí)行 route -n | head -n 10 ,效果應(yīng)該類似這樣:
代碼如下:
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 的是默認(rèn)路由,網(wǎng)關(guān)為 VPN 網(wǎng)關(guān),意味著默認(rèn)流量都經(jīng)過(guò) VPN,而以下的條目則把目的為國(guó)內(nèi)的網(wǎng)段都指向了 ISP 提供的網(wǎng)關(guān)。
至此 PPTP VPN 和 chnroutes 已經(jīng)配置完畢。
6.配置 VPN 斷線自動(dòng)重連
a.創(chuàng)建 /etc/config/pptp-vpn/status-check.sh:
vim /etc/config/pptp-vpn/status-check.sh
在 vim 中粘貼以下內(nèi)容(此腳本檢測(cè) VPN 連接狀態(tài),并在斷線后會(huì)斷開(kāi) 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
執(zhí)行以下命令,設(shè)置權(quán)限為可執(zhí)行:
chmod a+x /etc/config/pptp-vpn/status-check.sh
b.進(jìn)入LuCI 的 System -》 Scheduled Tasks 填入以下內(nèi)容,并保存:
*/1 * * * * /etc/config/pptp-vpn/status-check.sh
以上實(shí)際上是編輯了 cron 配置,cron 每分鐘運(yùn)行檢測(cè) / 重連腳本,重啟 cron:
/etc/init.d/cron restart
c.靜待幾分鐘,查看 /tmp 目錄,應(yīng)該能看到 vpn_oldgw 和 vpn_status_check.log 文件,查看 vpn_status_check.log 文件,可以看到最近一次檢測(cè) VPN 連接狀態(tài)的時(shí)間。
代碼如下:
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 中斷開(kāi) VPN 接口,在接下來(lái)的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
可以看出,已成功對(duì)國(guó)內(nèi)外的目標(biāo)地址進(jìn)行了路由選擇。
至此,OpenWRT 路由的基本配置、PPTP VPN、chnroutes 和自動(dòng)重連已經(jīng)配置完成。
上面就是OpenWRT 路由配置的方法介紹了,如果你要給OpenWRT 配置路由的話,不妨試試本文介紹的方法,希望對(duì)你有所幫助。
評(píng)論