Networking網(wǎng)絡(luò)配置和Bridge配置

操作系統(tǒng)

Ubuntu 16.04

NetworkManager

Ubuntu16.04的網(wǎng)絡(luò)配置由NetworkManager托管,有可視化界面方便用戶操作,如下圖。

NetworkManager.png

Networking

除了NetworkManager配置網(wǎng)絡(luò),還有一種networking也可以配置,但是會(huì)和NetworkManager打架,所以首先禁用NetworkManager。

配置Networking流程大致是:

首先禁用Network Manager;
然后配置文件,如/etc/network/interfaces;
最后重啟網(wǎng)絡(luò)服務(wù)。

禁用Network Manager

systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

刪除avahi-daemon和avahi-autoipd

徹底刪除avahi-daemon和avahi-autoipd。這兩個(gè)包是兼容蘋果系統(tǒng)的自動(dòng)網(wǎng)絡(luò)發(fā)現(xiàn)服務(wù),會(huì)干擾傳統(tǒng)的dhcp運(yùn)作。

sudo apt-get purge avahi-daemon avahi-autoipd // 注意不是apt-get remove而是apt-get purge,刪除后需要重啟。

interfaces與networking服務(wù)本質(zhì)

interfaces路徑:/etc/network/interfaces,是網(wǎng)絡(luò)配置文件。
networking服務(wù):系統(tǒng)啟動(dòng)、系統(tǒng)關(guān)閉和網(wǎng)線插拔時(shí)起作用。

比如這樣一個(gè)interfaces文件:

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet dhcp
auto enp0s8
allow-hotplug enp0s8
iface enp0s8 inet static 
address 192.168.56.111
gateway 192.168.56.2
dns-nameserver 8.8.8.8
dns-nameserver 192.168.56.254

第一行就提示我們,這個(gè)文件是與ifup/ifdown文件相配合的。
ifup與ifdown文件是用來手動(dòng)啟動(dòng)或關(guān)閉某個(gè)網(wǎng)絡(luò)接口的。

interfaces文件中,以下這幾行是直接被ifup與ifdown文件使用的。

iface lo inet loopback
iface enp0s3 inet dhcp
iface enp0s8 inet static 
address 192.168.56.111
gateway 192.168.56.2
dns-nameserver 8.8.8.8
dns-nameserver 192.168.56.254

而以下幾行與Networking服務(wù)配置使用:

auto lo
auto enp0s3
allow-hotplug enp0s3
auto enp0s8
allow-hotplug enp0s8

Networking服務(wù)在系統(tǒng)啟動(dòng)、系統(tǒng)關(guān)閉和網(wǎng)線插拔時(shí)起作用。

在系統(tǒng)啟動(dòng),會(huì)自動(dòng)用ifup/ifdown去控制寫了auto [...]的接口。
在網(wǎng)線插拔中,會(huì)自用調(diào)用ifup/ifdown去控制寫了allow-hotplug [...]的接口。

因此,可以也可以不用restart networking,而是使用ifup/ifdown進(jìn)行細(xì)粒度控制。

Networking配置

查看網(wǎng)口

接來下的配置都是針對(duì)網(wǎng)口,所以需要知道有哪些網(wǎng)口,網(wǎng)口名通常為eth0或者enp0s3,如果是無線網(wǎng)口名可能為wlan0。
ls /sys/class/net
ip addr

熱插拔網(wǎng)口

sudo ifdown enp0s3 // 類似于拔下enp0s3的網(wǎng)線
sudo ifup enp0s3 // 類似于插上enp0s3網(wǎng)線
sudo ifdown -a // 類似于拔下所有網(wǎng)線
sudo ifup -a // 類似于插上所有網(wǎng)線

配置interfaces

文件路徑:/etc/network/interfaces

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto enp0s3 // 在系統(tǒng)啟動(dòng),會(huì)自動(dòng)用ifup/ifdown去控制寫了auto […]的接口
allow-hotplug enp0s3 // 在網(wǎng)線插拔中,會(huì)自用調(diào)用ifup/ifdown去控制寫了allow-hotplug […]的接口
iface enp0s3 inet dhcp // 1.dhcp設(shè)置,自動(dòng)獲取ip
auto enp0s8
allow-hotplug enp0s8
iface enp0s8 inet static // 2.靜態(tài)ip設(shè)置
address 192.168.56.111
#gateway 192.168.56.2 // 如果和dhcp的gateway沖突,就把這行刪除
dns-nameserver 8.8.8.8 // 3.dns設(shè)置,生效后在/etc/resolv.conf會(huì)追加
dns-nameserver 192.168.56.254

bridge配置

網(wǎng)橋模式可以把兩個(gè)不同網(wǎng)口的子網(wǎng)組合在一起,對(duì)外看上去好像是一個(gè)子網(wǎng),所以也叫透明模式。

bridge配置依賴bridge-utils工具。

安裝bridge-utils

sudo apt-get install bridge-utils

配置

配置1:br0只配置enp0s3

該配置在虛擬機(jī)上測(cè)試的。

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#auto enp0s3
#iface enp0s3 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports enp0s3 // enp0s3的配置刪除或注釋
bridge_fd 5
bridge_stp off

enp0s3是連接的外網(wǎng)。

配置bridge后:

1.保留enp0s3設(shè)置,重啟服務(wù)成功,ifconfig:既有enp0s3也有br0;ip route:enp0s3和br0是一樣的;dns是enp0s3的dhcp分配的,但是不能上網(wǎng)。
2.刪除enp0s3設(shè)置,重啟服務(wù)成功,ifconfig:既有enp0s3也有br0;ip route:enp0s3和br0是一樣的;dns是enp0s3的dhcp分配的,并且可以上網(wǎng),但是網(wǎng)速慢。
3.刪除enp0s3設(shè)置,重啟電腦后,ifconfig:enp0s3沒有ip地址,br0分配了ip地址;ip route:只有br0的;dns是dhcp分配的,可上網(wǎng),網(wǎng)速快。

結(jié)論:bridge連接的網(wǎng)口enp0s3的配置應(yīng)該刪除,然后重啟電腦ifconfig才生效。

配置2:dhcp配置:br0連接兩個(gè)網(wǎng)口

該配置在虛擬機(jī)上測(cè)試的。

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports enp0s3 enp0s8 // 默認(rèn)是enp0s8優(yōu)先級(jí)更高
bridge_fd 5
bridge_stp off
#bridge_portprio enp0s3 129 // 可通過優(yōu)先級(jí)屬性設(shè)置哪個(gè)網(wǎng)口的優(yōu)先級(jí)高

enp0s3是連接的外網(wǎng),enp0s8是內(nèi)網(wǎng)。

配置bridge后:

1.bridge_ports enp0s3 enp0s8,重啟服務(wù)后,enp0s8優(yōu)先級(jí)高,所以ifconfig:顯示的是enp0s8 dhcp分配的ip地址;ip route:只有enp0s8分配的路由;dns:空,所以不能上網(wǎng)。
2.bridge_ports enp0s8 enp0s3,重啟服務(wù)后,enp0s3優(yōu)先級(jí)高,所以ifconfig:顯示的是enp0s3 dhcp分配的ip地址;ip route:只有enp0s3分配的路由;dns:有,所以能上網(wǎng)。
3.bridge_portprio enp0s3 129,默認(rèn)優(yōu)先級(jí)是128,所以設(shè)置enp0s3優(yōu)先級(jí)為129,那所有的現(xiàn)象就和2一樣了。
結(jié)論:配置多個(gè)網(wǎng)口的bridge,一定要清楚優(yōu)先級(jí)順序。

配置3:靜態(tài)配置:br0連接2個(gè)網(wǎng)口

該配置在工控機(jī)測(cè)試的。

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
bridge_ports enp3s0 enp4s0
bridge_fd 5
bridge_stp off
bridge_maxwait 0
address 192.168.40.2
netmask 255.255.255.0
dns-nameserver 192.168.40.9
post-up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.40.1 // 靜態(tài)路由

配置bridge后,拿兩臺(tái)電腦,一臺(tái)連enp3s0口,另一臺(tái)連enp4s0口,兩臺(tái)電腦配置的ip地址都是40網(wǎng)段,比如192.168.40.10和192.168.40.11。

1.兩臺(tái)電腦能相互ping通。
2.兩臺(tái)電腦ping bridge,即192.168.40.2,也能ping通。

配置4:手動(dòng)配置:br0連接2個(gè)網(wǎng)口

該配置在工控機(jī)測(cè)試的。配置完后br0沒有分配地址,這是最簡(jiǎn)單的配置。

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto br0
iface br0 inet manual
bridge_ports enp3s0 enp4s0
bridge_fd 5
bridge_stp off
bridge_maxwait 0

配置bridge后,拿兩臺(tái)電腦,一臺(tái)連enp3s0口,另一臺(tái)連enp4s0口,兩臺(tái)電腦配置的ip地址都是40網(wǎng)段,比如192.168.40.10和192.168.40.11。

1.兩臺(tái)電腦能相互ping通。

設(shè)置bridge命令

設(shè)置bridge連接網(wǎng)口

brctl addbr br0 #創(chuàng)建網(wǎng)橋
brctl addif br0 enp0s3 // 網(wǎng)口
brctl addif br0 enp0s8

設(shè)置bridge具體信息

ifconfig br0 XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX up // bridge ip
route add default gw XXX.XXX.XXX.XXX // bridge 路由網(wǎng)關(guān)

若ifconfig后沒有br0信息,手動(dòng)加載

ifup enp0s3
ifup enp0s8
ifup br0

重啟服務(wù)

sudo systemctl restart networking
sudo /etc/init.d/networking restart

通過以上多種配置和實(shí)驗(yàn),證明重啟系統(tǒng)生效更徹底。
那我們?cè)谕瓿晒δ荛_發(fā)的時(shí)候,不可能每次文件配置(interfaces)之后,要求用戶重啟系統(tǒng)來讓網(wǎng)絡(luò)配置徹底生效。
所以我的解決辦法是,通過ip命令配置立即生效(ip命令配置是臨時(shí)的,重啟系統(tǒng)之后會(huì)丟失,所以再配合文件配置),同時(shí)文件配置(interfaces)永久生效。
想知道ip命令如何配置請(qǐng)看《ip命令配置網(wǎng)絡(luò)和網(wǎng)橋》,移步http://www.lxweimin.com/p/26b4db8b1706

錯(cuò)誤日志

重啟不一定會(huì)成功,查看報(bào)錯(cuò)日志很重要。

systemctl status networking.service // 顯示執(zhí)行過程
journalctl -xe // 更詳細(xì)的執(zhí)行過程

查看配置是否生效

所謂網(wǎng)絡(luò)配置,可細(xì)分為三類:

A:接口的IP配置,即ifconfig顯示的IP地址、子網(wǎng)掩碼。
B:路由配置,即route中顯示的默認(rèn)網(wǎng)關(guān)。
C:域名解析配置,即/etc/resolv.conf中的域名服務(wù)器信息。

分別對(duì)應(yīng)如下命令查看:

ifconfig
ip route
cat /etc/resolv.conf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容