OpenWrt簡單命令配置
文章目錄
OpenWrt簡單命令配置文件
恢復系統(用電腦主機做OpenWrt路由的情況)
進入救援模式,然後
dd if=openwrt-15.05.1-x86-64-combined=ext4.img of=/dev/sda bs=4k
然後重啟就可以
如果是普通路由器,直接刷韌體就可以。
配置內容
介面新增
vconfig add eth0 123#新增一個網絡卡介面
vconfig set_flag eth0.123 1 1
ifconfig eth0.123 up#開啟該介面
dhclient eth0.123#使該介面DHCP自動獲得IP
初始配置
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='上網撥號賬號'
uci set network.wan.password='密碼'
uci commit network #儲存更改
ifup wan
配置完畢後通過如下命令,重啟網路服務,使設定生效:
/etc/init.d/network restart
開啟你的瀏覽器,看下網路是否通了。
或者用ping 命令看下網路是否暢通,如下所示則撥號成功。
直接修改network配置檔案連線上網:
通過文字編輯器vi開啟配置檔案:
vi vi /etc/config/network
同時按下G+Shift鍵,移動至檔案末尾 按下o鍵,輸入如下內容:
config interface 'wan' option ifname 'eth0.2'
option proto 'pppoe'
option username '上網撥號賬戶'
option password '上網撥號密碼'
按下ESC鍵, 輸入
:wq
退出編輯後,重啟網路服務
/etc/init.d/network restart
配置WIFI無線網路
和有限網路的配置一樣,wifi的配置檔案也位於/etc/config資料夾中,配置檔案為/etc/config/wireless, 也可以通過直接編輯該檔案或者通過uci命令進行設定。 但是最簡單的方式是使用’wifi detect’
命令自動檢測生成配置檔案:
登入路由器後輸入如下命令:
[email protected]:~# rm -f /etc/config/wireless; wifi detect > /etc/config/wireless
config wifi-device radio0
option type mac80211
option channel 11
option hwmode 11g
option path 'platform/ar934x_wmac'
option htmode HT20
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1
config wifi-iface
option device radio0
option network lan
option mode ap
option ssid OpenWrt
option encryption none
config wifi-device radio1
option type mac80211
option channel 36
option hwmode 11a
option path 'pci0000:00/0000:00:00.0'
option htmode HT20
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1
config wifi-iface
option device radio1
option network lan
option mode ap
option ssid OpenWrt
option encryption none
啟用/重啟/關閉 無線介面
在 Openwrt下要 啟用/重啟/關閉 無線介面是使用命令 “wifi"來完成的。
啟動無線介面:不帶引數直接在命令列執行 wifi 命令;
如果修改了無線的配置,我們需要重新啟動無線介面使配置生效,同樣是不帶引數直接在命令列下執行 wifi 命令;
如果需要關閉無線裝置,加上” down "引數使用 “wifi down”
大多數情況下新安裝的 Openwrt 是預設關閉無線介面的。
wifi #開啟wifi
wifi down #關閉wifi
開啟筆記本或者手機,搜尋一下無線網路,看看是不是出現了新的名稱為‘OpenWrt’的網路訊號。如果出現了,連上試試.
注意:此時的無線訊號是沒有加密的,瞭解無線配置的基本說明後,我們繼續配置網路的密碼。
一個典型的無線設定檔案至少應該包含兩個方面的內容,即至少一個無線裝置 和 至少一個與之相關的無線介面 配置。
無線裝置 的設定指的是一般無線電通訊相關的引數,例如裝置硬體(網絡卡晶片驅動程式型別),通道,頻率,發射功率等;
無線介面 的設定指的是 無線裝置 的工作模式,essid,無線加密方式等。
無線裝置 和 無線介面 具有關聯性,首先是設定好一個 無線裝置 的引數,然後再設定與這個 無線裝置 相關的 無線介面 引數,從而構造出一個可以有效工作的無線區域網環境。
wifi-device 配置項
wifi-device 所配置的是指裝置中無線通訊硬體,很多情況中,一個裝置只有一個無線通訊介面,所以只有一個 wifi-device 配置項,如果有多個無線通訊裝置則會有多個 wifi-device 配置項,每個配置項用來指定不同的介面。
一個最小的 wifi-device 配置就像下面的例子,需要注意的是其中所指定的不同的晶片型別和驅動。
config 'wifi-device' 'wl0'
option 'type' 'broadcom'
option 'channel' '6'
wl0 是無線網絡卡的內建識別符號
broadcom 表示晶片或驅動程式的型別
6 指定無線網絡卡工作的無線頻道
簡單介紹配置的常見選項,對比看下wifi detect的輸出:
名稱 | 型別 | 說明 |
---|---|---|
type | string | 裝置啟動時自動檢測的無線型別,broadcom平臺型別為brcm-2.4,atheros平臺為madwifi或mac80211 |
channel | 數字或’auto’ | 使用的無線頻道 |
wifi-iface 配置項 wifi-iface 的設定指的是 無線裝置 的工作模式,essid,無線加密方式等。 最簡單的配置如下:
config 'wifi-iface'
option 'device' 'wl0'
option 'network' 'lan'
option 'mode' 'ap'
option 'ssid' 'MyWifiAP'
option 'encryption' 'psk2'
option 'key' 'secret passphrase'
這裡我們就可以去修改無線網路的密碼了
vi /etc/config/wireless
修改 wifi-iface的加密
config wifi-iface
option device radio0
option network lan
option mode ap
option ssid OpenWrt
option encryption 'psk2'
option key '密碼'
重啟wifi
wifi down
wifi up
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 等配置
配置 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’
配置 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
應該就可以訪問了
配置 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
效果應該類似這樣:
程式碼如下:
[email protected]_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
if [ -f "/tmp/vpn_status_check.lock" ]
then
exit 0
fi
VPN_CONN=`ifconfig | grep pptp-vpn`
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
ifdown vpn
ifdown wan
sleep 10
ifup wan
sleep 30
ifdown vpn
sleep 10
ifup vpn
sleep 40
rm /tmp/vpn_status_check.lock
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 連線狀態的時間。
程式碼如下:
[email protected]_R0:/tmp# ls vpn*
vpn_oldgw vpn_status_check.log
[email protected]_R0:/tmp# cat vpn_status_check.log
Tue Jul 15 00:04:02 HKT 2014
[email protected]_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下的防火牆管理是由配置檔案“/etc/config/firewall”進行控制管理的。此檔案可以使用UCI進行控制,也可以用vi編輯器直接修改。但如果兩種方式都使用時需要注意UCI命令修改會產生快取,每次修改好要儘快確認儲存避免出現衝突。而該檔案最終會在/etc/init.d/firewall啟動的時候由UCI進行解碼並且生成iptables規則生效。因此使用者不需要了解iptables即可通過配置檔案實現防火牆控制。
防火牆的修改生效,需要重啟防火牆執行以下指令:
/etc/init.d/firewallrestart
簡單配置如下
uci show firewall
uci add firewall rule
uci set [email protected][-1].name=LuCI
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=80
uci set [email protected][-1].target=ACCEPT
uci commit
uci add firewall rule
uci set [email protected][-1].name=SSH
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=22
uci set [email protected][-1].target=ACCEPT
uci commit
#手動更改:高階設定-》Dropbear設定-》介面-》wan
uci add firewall rule
uci set [email protected][-1].name=Samba_1
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=445
uci set [email protected][-1].target=ACCEPT
uci add firewall rule
uci set [email protected][-1].name=Samba_2
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=8200
uci set [email protected][-1].target=ACCEPT
uci commit
uci add firewall rule
uci set [email protected][-1].name=nginx
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=99
uci set [email protected][-1].target=ACCEPT
uci commit
uci add firewall rule
uci set [email protected][-1].name=FTP
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=21
uci set [email protected][-1].target=ACCEPT
uci commit
uci add firewall rule
uci set [email protected][-1].name=telnet
uci set [email protected][-1].src=wan
uci set [email protected][-1].proto=tcp
uci set [email protected][-1].dest_port=23
uci set [email protected][-1].target=ACCEPT
uci commit
/etc/init.d/firewall restart