1. 程式人生 > >OpenWrt簡單命令配置

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.comwww.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