動態(tài)路由
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),揚(yáng)中企業(yè)網(wǎng)站建設(shè),揚(yáng)中品牌網(wǎng)站建設(shè),網(wǎng)站定制,揚(yáng)中網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,揚(yáng)中網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。Bonding
Network Teaming
靜態(tài)路由實(shí)驗(yàn)
Linux的網(wǎng)絡(luò)管理,了解基本的網(wǎng)絡(luò)知識是基礎(chǔ),除此,要掌握好ifconig命令、ip命令、nmcli命令(CentOS 7),以及涉及到網(wǎng)絡(luò)的配置文件。
配置動態(tài)路由:
通過守護(hù)進(jìn)程獲取動態(tài)路由,安裝quagga包,支持RIP、OSPF、BGP,通過命令vtysh配置。
[root@centos6 ~]#yum -y install quagga
切換到服務(wù)啟動腳本目錄下啟動或者直接servifce啟動:
查看OSPF是否啟動
[root@centos6 /etc/rc.d/init.d]#./ospfd status ospfd is stopped [root@centos6 /etc/rc.d/init.d]#./ospfd start # 啟動 [root@centos6 /etc/rc.d/init.d]#./ospfd status ospfd is stopped # 沒有成功啟動 [root@centos6 /etc/rc.d/init.d]# 此時: [root@centos6 /etc/rc.d/init.d]#cd /etc/quagga [root@centos6 /etc/quagga]#lsbgpd.conf.sample ospf6d.conf.sample ripd.conf.sample vtysh.conf zebra.confbgpd.conf.sample2 ospfd.conf.sample ripngd.conf.sample vtysh.conf.sample zebra.conf.sample [root@centos6 /etc/quagga]#mv ospfd.conf.sample ospfd.conf # 重命名,去掉.sample [root@centos6 /etc/quagga]# 再次啟動OSPF: [root@centos6 ~]#service ospfd start Starting ospfd: [ OK ] [root@centos6 ~]#service ospfd status ospfd (pid 2420) is running... [root@centos6 ~]#
我們來運(yùn)行一下OSPF:
Bonding
所謂Bonding,就是將多塊網(wǎng)卡綁定同一IP地址對外提供服務(wù),從而實(shí)現(xiàn)高可用或負(fù)載均衡,其實(shí)現(xiàn)思路類似于思科網(wǎng)絡(luò)中的二層或三層的鏈路聚合,兩個不同的路由器接口不可能設(shè)置同一個IP,同樣兩個不同的網(wǎng)卡也不可能設(shè)置同一個IP,于是,Bonding就將兩塊網(wǎng)卡虛擬成一塊網(wǎng)卡對外提供服務(wù),此時,物理網(wǎng)卡會被修改為同一MAC地址;
Bonding有三種不同的模式Mode:
Mode 0 (balance-rr) 輪轉(zhuǎn)(Round-robin)策略:從頭到尾順序的在每一個slave接口上面發(fā)送數(shù)據(jù)包。 本模式提供負(fù)載均衡和容錯的能力 Mode 1 (active-backup) 活動-備份(主備)策略:在綁定中,只有一個slave被激活。當(dāng)且僅當(dāng)活動的slave接口失敗時才會激活其他slave。 為了避免交換機(jī)發(fā)生混亂此時綁定的MAC地址只有 一個外部端口上可見 Mode 3 (broadcast) 廣播策略:在所有的slave接口上傳送所有的報(bào)文。本模式提供容錯能力。
在進(jìn)行Bonding試驗(yàn)之前,我們需要先了解網(wǎng)卡別名與設(shè)備別名以及網(wǎng)絡(luò)接口識別并命令的udev相關(guān)配置文件!
網(wǎng)卡別名: 將多個IP地址綁定到一個NIC上,類似于網(wǎng)絡(luò)中的子接口概念。
eth0:1 、eth0:2、eth0:3
[root@centos6 ~]#ifconfig eth0:0 10.1.250.11/24 [root@centos6 ~]#ifconfig eth0:1 10.1.251.11/14 [root@centos6 ~]#
如果你擁有一個網(wǎng)卡的話,你就可以避免在多個IP地址之間來回切換了!
再試試ip命令:
[root@centos6 ~]#ip addr add 10.1.251.55/24 dev eth2 label eth2:0 [root@centos6 ~]#ip addr add 10.1.250.66/16 dev eth2 label eth2:1 [root@centos6 ~]#ip addr add 192.168.10.1/24 dev eth2 label eth2:1
以上配置,重啟網(wǎng)絡(luò)服務(wù)后失效?。?!
設(shè)備別名: 為每個設(shè)備別名生成獨(dú)立的接口配置文件
別暈先,不管是網(wǎng)卡別名還是設(shè)備別名,它們都是別名,網(wǎng)卡也是設(shè)備,所以它們本質(zhì)是指的是同一個“實(shí)現(xiàn)”,只不是實(shí)現(xiàn)方式不同罷了,前者是直接命令行實(shí)現(xiàn),臨時有效,而后者是直接寫配置文件,讓其永久生效。注意,在寫設(shè)備別名的配置文件時,要關(guān)閉NetworkManager服務(wù)!且必須為靜態(tài)聯(lián)網(wǎng)!重啟有效!
[root@centos6 ~]#service NetworkManager stop Stopping NetworkManager daemon: [ OK ] [root@centos6 ~]# [root@centos6 ~]#chkconfig NetworkManager off # 永久關(guān)閉此服務(wù) [root@centos6 ~]#
在網(wǎng)絡(luò)配置文件目錄直接創(chuàng)建
[root@centos6 /etc/sysconfig/network-scripts]#cat ifcfg-eth0:0 DEVICE=eth0:0 IPADDR=192.168.10.1 PREFIX=24 ONPARENT=yes [root@centos6 /etc/sysconfig/network-scripts]#
udev配置文件
網(wǎng)絡(luò)接口識別并命名相關(guān)的udev配置文件:
/etc/udev/rules.d
安裝與卸載網(wǎng)卡
dmesg, ethtool modprobe, rmmod
dmesg命令被用于檢查和控制內(nèi)核的環(huán)形緩沖區(qū)。kernel會將開機(jī)信息存儲在ring buffer中。若是開機(jī)時來不及查看信息,可利用dmesg來查看。開機(jī)信息保存在/var/log/dmesg文件里.
ethtool命令用于獲取以太網(wǎng)卡的配置信息,或者修改這些配置。這個命令比較復(fù)雜,功能也多。其信息來源于網(wǎng)卡驅(qū)動層,即TCP/IP協(xié)議的鏈路層。
modprobe命令用于智能地向內(nèi)核中加載模塊或者從內(nèi)核中移除模塊。
查看網(wǎng)卡: dmesg |grep –i eth ethtool -i eth0 卸載網(wǎng)卡驅(qū)動: modprobe -r e1000 rmmod e1000 裝載網(wǎng)卡驅(qū)動: modprobe e1000
OK,我們再裝載上網(wǎng)卡吧。
通過以上例子,我們對網(wǎng)上與網(wǎng)絡(luò)的基本配置也有了一定的感知,現(xiàn)在就讓我們來做一個Bonding吧!
創(chuàng)建bonding設(shè)備配置文件
Bonding是一個邏輯上的概念,即一個虛擬網(wǎng)卡,所以,設(shè)置好bonding配置文件后,必須要有物理網(wǎng)卡的支撐。即指定MASTER與SLAVE,MASTER就是bonding設(shè)備,SLAVE就是物理網(wǎng)卡。
這個bonding配置文件跟普通的網(wǎng)卡配置文件大體相同,就是多了一條bonding的特有選項(xiàng):BONDING_OPTS,子選項(xiàng)miimong表示鏈路檢測時間間隔,單位毫秒,如果miimon=100,那么系統(tǒng)每100ms 監(jiān)測一次鏈路連接狀態(tài),如果有一條線路不通就轉(zhuǎn)入另一條線路 mode表示Bonding的模式。
[root@centos6 /etc/sysconfig/network-scripts]#cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=10.1.255.11 PERFIX=16 DNS1=114.114.114.114 DNS2=8.8.8.8 GATEWAY=10.1.0.1 BONDING_OPTS="miimon=100 mode=1" [root@centos6 /etc/sysconfig/network-scripts]# [root@centos6 /etc/sysconfig/network-scripts]#cat ifcfg-eth0 DEVICE=eth0 ONBOOT=yes SLAVE=yes MASTER=bond0 [root@centos6 /etc/sysconfig/network-scripts]#cat ifcfg-eth2 DEVICE=eth2 ONBOOT=yes SLAVE=yes MASTER=bond0 [root@centos6 /etc/sysconfig/network-scripts]#
重啟網(wǎng)絡(luò)服務(wù),使bonding生效:
查看bonding狀態(tài)
測試Bonding
Down掉目前bond0的活動網(wǎng)卡eth0
看bond0的IP是否還在繼續(xù)ping
查看目前bond0活動的網(wǎng)卡
由此,bonding的mode1主備模式已成功切換!
此時我們再重啟網(wǎng)卡eth0,看其能否再次搶占活動接口,如果不能,我們再重啟網(wǎng)絡(luò)服務(wù),看其能否搶占活動網(wǎng)卡。
我們發(fā)現(xiàn),eth0重啟后也沒能再次搶占為活動接口,這樣也在一定程序上使網(wǎng)絡(luò)相對穩(wěn)定。好吧,我們再來重啟網(wǎng)絡(luò)服務(wù)。
重啟網(wǎng)絡(luò)服務(wù)后,eth0成功搶占為活動接口。
刪除bonding:Down掉bond接口,刪除其配置文件,重啟網(wǎng)絡(luò)服務(wù)
至此,我們小結(jié)下網(wǎng)絡(luò)配置文件的主要格式:
ONBOOT:在系統(tǒng)引導(dǎo)時是否激活此設(shè)備 TYPE:接口類型;常見有的Ethernet, Bridge UUID:設(shè)備的惟一標(biāo)識 IPADDR:指明IP地址 NETMASK:子網(wǎng)掩碼 GATEWAY: 默認(rèn)網(wǎng)關(guān) DNS1:第一個DNS服務(wù)器指向 DNS2:第二個DNS服務(wù)器指向 USERCTL:普通用戶是否可控制此設(shè)備 PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server 分配的dns服務(wù)器指向信息直接覆蓋至/etc/resolv.conf文件中
Network Teaming
網(wǎng)絡(luò)組Network Teaming, 其實(shí)就是高級版本的Bonding, 所謂網(wǎng)絡(luò)組,就是將多個網(wǎng)卡聚合在一起,從而實(shí)現(xiàn)冗錯和提高吞吐量。 相比于bonding,可以提供更好的性能和擴(kuò)展性,網(wǎng)絡(luò)組由內(nèi)核驅(qū)動和teamd守護(hù)進(jìn)程實(shí)現(xiàn)。網(wǎng)絡(luò)組功能主要由nmcli命令實(shí)現(xiàn),nmcli是一個命令集,在CentOS 7上有較好的支持。
其有多種方式的runner:
多種方式runner broadcast roundrobin activebackup loadbalance lacp (implements the 802.3ad Link Aggregation Control Protocol)
網(wǎng)絡(luò)組的特性:
啟動網(wǎng)絡(luò)組接口不會自動啟動網(wǎng)絡(luò)組中的port接口 啟動網(wǎng)絡(luò)組接口中的port接口不會自動啟動網(wǎng)絡(luò)組接口 禁用網(wǎng)絡(luò)組接口會自動禁用網(wǎng)絡(luò)組中的port接口 沒有port接口的網(wǎng)絡(luò)組接口可以啟動靜態(tài)IP連接 啟用DHCP連接時,沒有port接口的網(wǎng)絡(luò)組會等待port接口的加入
nmcli命令
NAME nmcli - command‐line tool for controlling NetworkManager SYNOPSIS nmcli [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { general | networking | radio | connection | device | agent } OPTIONS := { -t[erse] 簡潔的 -p[retty] 輸出humans -m[mode] tabular | multiline -f[ields]| all | common -e[scape] yes | no 轉(zhuǎn)義:to escape ':' and '\' -n[ocheck] -a[sk] -w[ait] -v[ersion] -h[elp] } connection - start, stop, and manage network connections COMMAND := { show | up | down | add | edit | modify | delete | reload | load } device - show and manage network interfaces COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
使用示例
nmcli -t -f RUNNING general tells you whether NetworkManager is running or not. nmcli -t -f STATE general shows the overall status of NetworkManager. nmcli connection show lists all connections NetworkManager has. nmcli connection show --active lists all currently active connections. nmcli device status shows the status for all devices.
nmcli命令集支持簡寫!
[root@centos7 ~]#nmcli -t -f RUNNING generalrunning [root@centos7 ~]#nmcli -t -f STATE general connected [root@centos7 ~]# [root@centos7 ~]#nmcli con show --act NAME UUID TYPE DEVICE Wired connection 1 a7925ed3-dc18-44d6-9ff4-fed0a3b3ea49 802-3-ethernet eth2 virbr0 94c2eaa2-c9d1-4960-a3d3-34e7f785a194 bridge virbr0 eth0 3e132822-6672-45f2-8863-b0e905a4d58b 802-3-ethernet eth0 [root@centos7 ~]#nmcli device status DEVICE TYPE STATE CONNECTION virbr0 bridge connected virbr0 eth0 ethernet connected eth0 eth2 ethernet connected Wired connection 1 virbr0-nic ethernet unavailable -- lo loopback unmanaged -- [root@centos7 ~]#
接下來,我們來創(chuàng)建一個網(wǎng)絡(luò)組,創(chuàng)建網(wǎng)絡(luò)組的主要步驟如下:
創(chuàng)建網(wǎng)絡(luò)組接口
nmcli con add type team con-name CNAME ifname INAME [config JSON] CNAME 連接名,INAME 接口名 JSON 指定runner方式 格式:'{"runner": {"name": "METHOD"}}' METHOD 可以是broadcast, roundrobin, activebackup, loadbalance, lacp
創(chuàng)建port接口
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM CNAME 連接名 INAME 網(wǎng)絡(luò)接口名 TEAM 網(wǎng)絡(luò)組接口名 連接名若不指定,默認(rèn)為team-slave-IFACE nmcli dev dis INAME nmcli con up CNAME INAME 設(shè)備名CNAME 網(wǎng)絡(luò)組接口名或port接口
激活網(wǎng)絡(luò)組與port接口
注意:
修改連接配置后,需要重新加載配置 nmcli con reload nmcli con down “system eth0” 可被自動激活 nmcli con up “system eth0” nmcli dev dis eth0 禁用網(wǎng)卡,訪止被自動激活 圖形工具 nm-connection-editor
試驗(yàn)開始:
創(chuàng)建網(wǎng)絡(luò)組接口與port接口,關(guān)鍵字:nmcli con add
[root@centos7 ~]#nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' # 創(chuàng)建網(wǎng)絡(luò)組接口 team0Connection 'team0' (b831a407-ec7d-4424-a918-c8e1a48ab1c6) successfully added. [root@centos7 ~]# [root@centos7 ~]#nmcli con add type team-slave con-name team0-port0 ifname eth0 master team0 # 創(chuàng)建port接口 eth0Connection 'team0-port0' (9e4984aa-585a-465c-9534-e0660be4eca0) successfully added. [root@centos7 ~]# [root@centos7 ~]#nmcli con add type team-slave con-name team0-port1 ifname eth2 master team0 # 創(chuàng)建port接口 eth2Connection 'team0-port1' (e4c70974-97a0-4ab2-867c-16dd70798b20) successfully added. [root@centos7 ~]#
為網(wǎng)絡(luò)組配置IP地址,關(guān)鍵字:nmcli con mod
[root@centos7 ~]#nmcli con mod team0 ipv4.addresses 10.1.252.100/24 [root@centos7 ~]#nmcli con mod team0 ipv4.method manual [root@centos7 ~]#
激活網(wǎng)絡(luò)組接口與port接口,關(guān)鍵字:nmcli con up
我們還發(fā)現(xiàn)在網(wǎng)絡(luò)配置文件目錄下自動添加了正如文件:
打開ifcfg-team0
打開ifcfg-team0-port0
當(dāng)然,ifcfg-team0-port1的內(nèi)容與其相似!
測試:
查看team0的IP及其狀態(tài):
可見,team0的活動接口為eth0.
Down掉team0-port0
查看活動接口
成功切換到了eth2!
可此時,卻ping不通team0了,我們嘗試著再次激活team0-port1,卻發(fā)現(xiàn)能夠正常ping通了!
此處可能上延遲比較大,于是索性再次激活目前的活動接口team0-port1。此處得靠點(diǎn)人品!
Down掉team0-port1
再次UPteam0-port0
eth0成功成為活動接口,并自動ping通team0,測試成功!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意,在網(wǎng)絡(luò)組實(shí)驗(yàn)時,不要重啟網(wǎng)絡(luò)服務(wù),否則,team0的狀態(tài)就會異常!當(dāng)然此時也就ping不通team0了!如果不慎重啟了網(wǎng)絡(luò)服務(wù),則需要重啟激活組接口與port接口,team0的狀態(tài)也就正常了,相應(yīng)地也能夠ping通team0了!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
靜態(tài)路由實(shí)驗(yàn)
實(shí)驗(yàn)環(huán)境:
R1,R2
PC1,PC2
拓?fù)鋱D如下:
IP規(guī)劃:
PC1: 192.168.10.1/24 PC2: 172.16.10.1/16 R1、R2: 10.1.1.0/32
實(shí)驗(yàn)準(zhǔn)備:
主機(jī)模擬路由器時要開啟路由功能
路由器要關(guān)閉NetworkManager服務(wù)
關(guān)閉防火墻:iptables -F
配置:
配置IP
PC1:
PC2:
R1:
R2:
配置路由
PC1網(wǎng)關(guān)
PC2網(wǎng)關(guān)
R1路由
R2路由
測試:
PC1與PC2ping各自的網(wǎng)關(guān)
PC1與PC2互ping
路由追蹤:
本文主要介紹了Linux中跟網(wǎng)絡(luò)相關(guān)的的基礎(chǔ)知識,包括如何配置IP與路由,如何創(chuàng)建一個Bonding以及Network Teaming, 最后一個靜態(tài)路由的實(shí)驗(yàn),主要是體驗(yàn)下數(shù)據(jù)是如何經(jīng)過下一跳,如何被路由到目的地。
止戰(zhàn)
2016.9.9
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。