OpenWrt系統(tǒng)網(wǎng)絡(luò)配置
配置文件
OpenWrt所有配置保存在/etc/config目錄,以下為主要的網(wǎng)絡(luò)配置文件
網(wǎng)絡(luò)接口配置?
/etc/config/network
網(wǎng)絡(luò)服務(wù)配置?
/etc/config/dhcp
防火墻配置?
/etc/config/firewall
網(wǎng)絡(luò)接口
OpenWrt網(wǎng)絡(luò)接口一般包含lan口和wan口,但如果是X86等設(shè)備,只設(shè)置了一張網(wǎng)卡,只會生成lan口信息,在虛擬機(jī)中我們默認(rèn)只配置一個網(wǎng)卡,方便配置網(wǎng)絡(luò),等熟悉基本網(wǎng)絡(luò)配置后再嘗試將OpenWrt打造成一臺路由器。
查看網(wǎng)卡配置和IP信息
在前面的教程中,我們將網(wǎng)卡IP設(shè)置成了動態(tài)獲取IP,那我們查看網(wǎng)卡和IP信息有哪幾種方式呢
通過web界面查看
?這是我們最常用的查看方式,但作為開發(fā)人員,應(yīng)該學(xué)會下面的命令行方式查看

ifconfig
?ifconfig是一條用于顯示和配置Linux/Unix操作系統(tǒng)中網(wǎng)絡(luò)接口的命令。 ifconfig命令可以顯示當(dāng)前系統(tǒng)中所有可用的網(wǎng)絡(luò)接口的信息,例如IP地址、MAC地址、子網(wǎng)掩碼、廣播地址等 命令格式:?ifconfig $ifname
?比如查看lan口信息:?ifconfig br-lan
br-lan ? ?Link encap:Ethernet ?HWaddr 00:0C:29:9F:9A:35 ?
? ? ? ? ?inet addr:192.168.10.161 ?Bcast:192.168.10.255 ?Mask:255.255.255.0
? ? ? ? ?inet6 addr: fdf1:f344:c0d9::1/60 Scope:Global
? ? ? ? ?inet6 addr: fe80::20c:29ff:fe9f:9a35/64 Scope:Link
? ? ? ? ?UP BROADCAST RUNNING MULTICAST ?MTU:1500 ?Metric:1
? ? ? ? ?RX packets:71256 errors:0 dropped:0 overruns:0 frame:0
? ? ? ? ?TX packets:50883 errors:0 dropped:0 overruns:0 carrier:0
? ? ? ? ?collisions:0 txqueuelen:1000
? ? ? ? ?RX bytes:19697329 (18.7 MiB) ?TX bytes:48109633 (45.8 MiB)
查看所有接口:?ifconfig
由于通過ifconfig只能看到ip和子網(wǎng)掩碼信息,還要結(jié)合ip或route命令查看路由信息
root@OpenWrt:~# ip route
default via 192.168.10.1 dev br-lan ?src 192.168.10.161
192.168.10.0/24 dev br-lan scope link ?src 192.168.10.161
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# route
Kernel IP routing table
Destination ? ? Gateway ? ? ? ? Genmask ? ? ? ? Flags Metric Ref ? ?Use Iface
default ? ? ? ? 192.168.10.1 ? ?0.0.0.0 ? ? ? ? UG ? ?0 ? ? ?0 ? ? ? ?0 br-lan
192.168.10.0 ? ?* ? ? ? ? ? ? ? 255.255.255.0 ? U ? ? 0 ? ? ?0 ? ? ? ?0 br-lan
root@OpenWrt:~#
通過ubus命令
ubus是OpenWrt中的一種輕量級RPC(Remote Procedure Call)機(jī)制,用于實(shí)現(xiàn)進(jìn)程之間的通信。ubus支持基于JSON格式的消息傳遞和異步通信,它可以用來在OpenWrt設(shè)備上進(jìn)行各種操作,例如獲取設(shè)備狀態(tài)、配置網(wǎng)絡(luò)設(shè)置、查詢系統(tǒng)信息等。
可以使用ubus命令查看OpenWrt設(shè)備的網(wǎng)絡(luò)信息。具體步驟如下:
獲取指定網(wǎng)絡(luò)接口的詳細(xì)信息(接口的名稱、MAC地址、IP地址、子網(wǎng)掩碼、廣播地址、網(wǎng)關(guān)、DNS服務(wù)器) ubus call network.interface.<interface_name> status,其中<interface_name>是網(wǎng)絡(luò)接口的名稱。 例如,獲取lan接口的詳細(xì)信息:ubus call network.interface.lan status
{
"up": true,
"pending": false,
"available": true,
"autostart": true,
"dynamic": false,
"uptime": 14506,
"l3_device": "br-lan",
"proto": "dhcp",
"device": "br-lan",
"metric": 0,
"dns_metric": 0,
"delegation": true,
"ipv4-address": [
{
"address": "192.168.10.161",
"mask": 24
}
],
"ipv6-address": [
],
"ipv6-prefix": [
],
"ipv6-prefix-assignment": [
{
"address": "fdf1:f344:c0d9::",
"mask": 60,
"local-address": {
"address": "fdf1:f344:c0d9::1",
"mask": 60
}
}
],
"route": [
{
"target": "0.0.0.0",
"mask": 0,
"nexthop": "192.168.10.1",
"source": "192.168.10.161/32"
}
],
"dns-server": [
"192.168.10.1"
],
"dns-search": [
],
"neighbors": [
],
"inactive": {
"ipv4-address": [
],
"ipv6-address": [
],
"route": [
],
"dns-server": [
],
"dns-search": [
],
"neighbors": [
]
},
"data": {
"dhcpserver": "192.168.10.1",
"hostname": "OpenWrt",
"leasetime": 1800
}
}
查看配置
?我們也可以通過讀取配置的方式獲取網(wǎng)卡配置信息,但如果設(shè)置成了dhcp方式,狀態(tài)數(shù)據(jù)不會存儲在配置中,這種方式適合查看基本信息,比如ip地址獲取方式、接口信息等?查看文件命令
cat /etc/config/network
root@OpenWrt:~# cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdf1:f344:c0d9::/48'
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0'
config interface 'lan'
option device 'br-lan'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
option proto 'dhcp'
uci配置查看命令uci show network
root@OpenWrt:~# uci show network
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fdf1:f344:c0d9::/48'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0'
network.lan=interface
network.lan.device='br-lan'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='dhcp'
uci show network.lan
root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.device='br-lan'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='dhcp'
網(wǎng)絡(luò)配置命令
配置動態(tài)獲取 uci set network.lan.proto=dhcp
配置靜態(tài)IP
設(shè)置IP配置方式:uci set network.lan.proto='static'
設(shè)置LAN口的IP地址:uci set network.lan.ipaddr='192.168.10.100'
設(shè)置LAN口的子網(wǎng)掩碼:uci set network.lan.netmask='255.255.255.0'
設(shè)置LAN口的網(wǎng)關(guān)地址:uci set network.lan.gateway='192.168.10.1'
設(shè)置DNS服務(wù)器地址:uci set network.lan.dns='8.8.8.8',如果有多個DNS服務(wù)器,可以用空格隔開多個IP地址,例如:uci set network.lan.dns='8.8.8.8 8.8.4.4'
保存修改后的配置:uci commit network
最后重啟網(wǎng)絡(luò)服務(wù)生效/etc/init.d/network reload
執(zhí)行完以上步驟后,OpenWrt設(shè)備的LAN口將配置為靜態(tài)IP地址192.168.10.100、子網(wǎng)掩碼255.255.255.0、網(wǎng)關(guān)192.168.10.1、dns 8.8.8.8
完整命令:
uci set network.lan.proto='static' ?
uci set network.lan.ipaddr='192.168.10.100' ?
uci set network.lan.netmask='255.255.255.0' ?
uci set network.lan.gateway='192.168.10.1' ?
uci set network.lan.dns='8.8.8.8' ?
uci commit network ?
/etc/init.d/network reload
執(zhí)行后可以查看uci和配置文件
root@OpenWrt:~# uci set network.lan.proto='static'
root@OpenWrt:~# uci set network.lan.ipaddr='192.168.10.100'
root@OpenWrt:~# uci set network.lan.netmask='255.255.255.0'
root@OpenWrt:~# uci set network.lan.gateway='192.168.10.1'
root@OpenWrt:~# uci set network.lan.dns='8.8.8.8'
root@OpenWrt:~# uci commit network
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.device='br-lan'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='static'
network.lan.ipaddr='192.168.10.100'
network.lan.gateway='192.168.10.1'
network.lan.dns='8.8.8.8'
lan接口修改后的配置
config interface 'lan'
option device 'br-lan'
option netmask '255.255.255.0'
option ip6assign '60'
option proto 'static'
option ipaddr '192.168.10.100'
option gateway '192.168.10.1'
option dns '8.8.8.8'
網(wǎng)絡(luò)重啟命令
修改網(wǎng)絡(luò)配置后,有多種方式讓配置生效
/etc/init.d/network reload
/etc/init.d/network restart
ubus call network reload
dhcp服務(wù)器配置
dhcp服務(wù)器用于分配ip地址給局域網(wǎng)的客戶端,默認(rèn)lan口的dhcp服務(wù)器是開啟的,如果lan口虛擬網(wǎng)卡設(shè)置的是橋接模式,那lan口和PC處于同一廣播域,PC可能會獲取到OpenWrt系統(tǒng)分配的IP。
為了防止出現(xiàn)多DHCP服務(wù)器,我們要么將LAN口獲取ip的方式改為dhcp,要么將DHCP服務(wù)器關(guān)閉,這里教大家如何關(guān)閉DHCP服務(wù)器。
配置文件
dhcp服務(wù)器配置保存在/etc/config/dhcp中,里面dhcp服務(wù)器配置和接口dhcp配置

關(guān)閉lan口dhcp
dhcp服務(wù)器忽略lan口:?uci set dhcp.lan.ignore=1
保存配置:?uci commit dhcp
重啟服務(wù):?/etc/init.d/dnsmasq restart
wan口配置
如果是路由器,默認(rèn)就包含了wan接口,而如果是虛擬機(jī),只配置了一個網(wǎng)卡,則需要配置wan接口搭建路由環(huán)境,具體見最后的OpenWrt虛擬網(wǎng)絡(luò)環(huán)境搭建教程。
查看wan口配置
uci show network.wan
常用配置
wan口配置和lan口類似,也可以設(shè)置static、dhcp、pppoe等方式,我們可以通過uci命令修改,也可以通過vi命令編輯/etc/config/network
配置文件修改,配置生效方式和lan口一樣。
以下為各種方式的接口配置/etc/config/network
dhcp方式
config interface 'wan'
? ? ? ?option device 'eth1'
? ? ? ?option proto 'dhcp'
靜態(tài)ip
config interface 'wan'
option device 'eth1'
option proto 'static'
option ipaddr '192.168.10.171'
option netmask '255.255.255.0'
list dns '192.168.10.1'
list dns '8.8.8.8'
pppoe撥號
config interface 'wan'
option device 'eth1'
option proto 'pppoe'
option username 'test'
option password '123456'
option ipv6 'auto'
虛擬機(jī)路由環(huán)境搭建
增加虛擬網(wǎng)卡
當(dāng)我們通過虛擬機(jī)安裝系統(tǒng)后默認(rèn)只配置了一個網(wǎng)卡,所以我們還需要增加一個網(wǎng)卡,用于做wan口

網(wǎng)絡(luò)規(guī)劃
為了方便模擬數(shù)據(jù)從lan到wan進(jìn)行轉(zhuǎn)發(fā),我們需要增加一臺虛擬PC,該P(yáng)C和OpenWrt LAN口在同一個局域網(wǎng),而OpenWrt wan口和物理PC在同一個局域網(wǎng)(通過橋接或NAT模式均可),這樣虛擬PC上網(wǎng)數(shù)據(jù)就會經(jīng)過OpenWrt處理,OpenWrt充當(dāng)了一個路由器的角色。
網(wǎng)絡(luò)拓?fù)?/strong>
將OpenWrt lan接口配置為主機(jī)模式綁定為vmnet10(其他未占用的也可以),這樣所有vmnet10中的網(wǎng)卡都和OpenWrt lan在同一個局域網(wǎng)。而wan口網(wǎng)卡設(shè)置為橋接模式,這樣wan口可以獲取到路由器分配的ip,并且和PC網(wǎng)卡ip在同一個網(wǎng)段。
網(wǎng)絡(luò)拓?fù)鋱D如下:

根據(jù)網(wǎng)絡(luò)拓?fù)?,還需要增加一臺客戶端,將網(wǎng)卡綁定到vmnet10,這樣該客戶端可以通過OpenWrt虛擬機(jī)聯(lián)網(wǎng),這里建議將OpenWrt系統(tǒng)克隆后修改網(wǎng)卡配置,作為客戶端使用,當(dāng)然你也可以增加一臺windows、ubuntu虛擬機(jī),連接OpenWrt路由器LAN口使用。
管理OpenWrt?
設(shè)備按以上拓?fù)洳渴鸷蟠蠹覒?yīng)該發(fā)現(xiàn)一個問題,就是物理PC不能直接訪問OpenWrt了,因為PC和OpenWrt wan口在同網(wǎng)段,和OpenWrt lan不在同一網(wǎng)段。
那如何管理配置OpenWrt系統(tǒng)呢?
這里有兩個方案:
新增一臺虛擬PC連接在OpenWrt LAN口,這樣在虛擬PC中可以直接管理OpenWrt
通過wan口訪問OpenWrt系統(tǒng)
注意默認(rèn)是不能直接通過wan口訪問的,因為OpenWrt默認(rèn)開啟了wan口防火墻,需要先關(guān)閉
關(guān)閉wan口防火墻
打開防火墻配置,找到wan口的配置規(guī)則,將REJECT修改為ACCEPT,然后重新加載防火墻規(guī)則vi /etc/config/firewall

`/etc/init.d/firewall restart`
這樣就可以通過web訪問OpenWrt系統(tǒng)了,注意通過wan口ip訪問。 ?
也可以通過ssh連接wan口ip訪問后臺,注意低版本的OpenWrt需要綁定ssh服務(wù)到wan口才能訪問,ssh配置文件`/etc/config/dropbear`,綁定到wan后重啟服務(wù)即可,重啟ssh服務(wù)命令`/etc/init.d/dropbear ?restart`
ttcoder.cn(openwrt教程分享)