Linux系統(tǒng)多網(wǎng)卡環(huán)境下的路由配置
Linux下路由配置命令
1.添加主機(jī)路由
- route add -host 192.168.1.11 dev eth0
- route add -host 192.168.1.12 gw 192.168.1.1
2.添加網(wǎng)絡(luò)路由
- route add -net 192.168.1.11 netmask 255.255.255.0 eth0
- route add -net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
- route add -net 192.168.1.0/24 eth0
- route add -net 192.168.1.0/24 gw 192.168.1.1
3.添加默認(rèn)網(wǎng)關(guān)
- route add default gw 192.168.1.1
4.刪除路由
- route del -host 192.168.1.11 dev eth0
5.刪除默認(rèn)路由
- route del default gw 192.168.1.1
Linux下配置永久路由的幾種方式
1.在/etc/rc.local里添加路由信息
- route add -net 192.168.1.0/24 dev eth0
- # 或者
- route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
2.在/etc/sysconfig/network里追加
- GATEWAY=[網(wǎng)關(guān)IP或者網(wǎng)關(guān)網(wǎng)卡名稱]
3./etc/sysconfig/static-routes
- any net 192.168.1.0/24 gw 192.168.1.1
- # 或者
- any net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
4.開啟IP轉(zhuǎn)發(fā)
1.臨時開啟
- echo "1" > /proc/sys/net/ipv4/ip_forward
2.永久開啟
- vim /etc/sysctl.conf
- 修改net.ipv4.ip_forward=1
實驗:配置雙網(wǎng)卡主機(jī)同時使用內(nèi)網(wǎng)和外網(wǎng)
本實驗的背景是筆者在實踐中遇到過的一個問題,本實驗盡量還原當(dāng)時的網(wǎng)絡(luò)環(huán)境。僅當(dāng)做一份筆記,同時分享給遇到此問題的同學(xué)。
奈何我現(xiàn)在沒有硬件呀(T_T)...只能拿VMware Workstation和eNSP來模擬實驗環(huán)境了。
問題背景
如下圖拓?fù)渌荆绻サ鬰lient節(jié)點,內(nèi)網(wǎng)和外網(wǎng)就是相互隔離的網(wǎng)絡(luò)。
但是實際情況是,client節(jié)點既需要訪問外網(wǎng)資源,又需要訪問內(nèi)網(wǎng)資源,而client只能配置一條默認(rèn)路由。如果將默認(rèn)路由配置在外網(wǎng)網(wǎng)卡,client可以訪問172.16.2.0/24網(wǎng)絡(luò)的資源和外網(wǎng)的資源,但是其余內(nèi)網(wǎng)資源將無法訪問;如果將默認(rèn)路由配置在內(nèi)網(wǎng)網(wǎng)卡,client雖然可以完全訪問內(nèi)網(wǎng)資源,但是卻不能訪問外網(wǎng)資源。怎么解決呢?
實驗環(huán)境
- VMware Workstation Pro
- 4臺最小化安裝的CentOS 7.3虛擬機(jī)
- 華為eNSP模擬器
實驗拓?fù)?/strong>
- 去掉client節(jié)點,內(nèi)網(wǎng)和外網(wǎng)是隔離的網(wǎng)絡(luò)。
- 外網(wǎng)網(wǎng)絡(luò)為10.0.0.0/16,代表運(yùn)營商的接入網(wǎng);
- 內(nèi)網(wǎng)網(wǎng)絡(luò)為172.16.0.0/16,代表內(nèi)網(wǎng)部分(該部分為了安全,不允許對互聯(lián)網(wǎng)的直接訪問)。
其中:
- client為雙網(wǎng)卡的主機(jī),兩網(wǎng)卡網(wǎng)段分別為10.0.0.0/16、172.16.2.0/24;
- server2為172.16.2.0/24網(wǎng)段的服務(wù)器;
- server3為172.16.3.0/24網(wǎng)段的服務(wù)器;
- server4 為172.16.4.0/24網(wǎng)段的服務(wù)器。
網(wǎng)絡(luò)規(guī)劃
內(nèi)網(wǎng)路由器如何實現(xiàn)呢?
VMnet2、VMnet3、VMnet4均為僅主機(jī)模式,那么常規(guī)情況下,只有其網(wǎng)絡(luò)內(nèi)的各計算機(jī)之間才可以通信,要怎樣才能實現(xiàn)三個網(wǎng)絡(luò)間的通信呢?
答案是使用華為eNSP模擬器中的Cloud。使用Cloud設(shè)備可以將eNSP中的路由器和VMware虛擬機(jī)的網(wǎng)卡連接起來。
配置內(nèi)網(wǎng)環(huán)境
配置eNSP的路由器
- <huawei>system-view
- [huawei]int g0/0/0
- [Huawei-GigabitEthernet0/0/0]ip address 172.16.2.254 255.255.255.0
- [Huawei-GigabitEthernet0/0/0]quit
- [huawei]int g0/0/1
- [Huawei-GigabitEthernet0/0/1]ip address 172.16.3.254 255.255.255.0
- [Huawei-GigabitEthernet0/0/1]quit
- [huawei]int g0/0/2
- [Huawei-GigabitEthernet0/0/2]ip address 172.16.4.254 255.255.255.0
- [Huawei-GigabitEthernet0/0/2]quit
- [huawei]
修改虛機(jī)的IP地址
在server上搭建HTTP服務(wù)
以server2為例:
使用Python創(chuàng)建一個簡單的HTTP服務(wù)
- cd ~
- echo "server2" > index.html
- python -m SimpleHTTPServer 8080
對照試驗,在client上訪問外網(wǎng)
- ping www.baidu.com -c 4
在client上訪問server2
- ping 172.16.2.11 -c 4
在client上訪問server3
- ping 172.16.3.11 -c 4
在client上訪問server4
- ping 172.16.4.11 -c 4
在對照試驗中可以看到,在client將默認(rèn)網(wǎng)關(guān)配置在外網(wǎng)網(wǎng)卡的情況下,雙網(wǎng)卡的client可以正常訪問外網(wǎng)和內(nèi)網(wǎng)的172.16.2.0/24部分,而172.16.3.0/24和172.16.4.0/24是不能訪問到的。
為什么client能訪問172.16.2.0/24網(wǎng)絡(luò),而不能訪問172.16.0.0/16的其余網(wǎng)絡(luò)呢?
因為client位于172.16.2.0/24網(wǎng)絡(luò)內(nèi),在網(wǎng)絡(luò)內(nèi)進(jìn)行通信,數(shù)據(jù)包不用發(fā)送至其他網(wǎng)絡(luò),當(dāng)然默認(rèn)網(wǎng)關(guān)也就不起作用了。
而當(dāng)client與172.16.0.0/16的其余網(wǎng)絡(luò)通信時,client的路由表沒有記載發(fā)往目的地址的路徑,所以client只能傻傻的把數(shù)據(jù)包發(fā)送給默認(rèn)網(wǎng)關(guān),從此數(shù)據(jù)包和真正的目的地址就“南轅北轍”了。當(dāng)然ping的結(jié)果就是網(wǎng)絡(luò)不可達(dá)。
路由配置
在client上查看路由表
在client上添加路由
- route add -net 172.16.0.0/16 gw 172.16.2.254
永久配置,則在/etc/rc.local里添加路由信息
- route add -net 172.16.0.0/16 gw 172.16.2.254
查看路由表
實驗結(jié)果
檢測連通性
- ping www.baidu.com -c 4
- ping 172.16.2.11 -c 4
- ping 172.16.3.11 -c 4
- ping 172.16.4.11 -c 4
訪問內(nèi)外網(wǎng)資源
- curl http://www.baidu.com/
- curl http://172.16.2.11:8080/index.html
- curl http://172.16.3.11:8080/index.html
- curl http://172.16.4.11:8080/index.html
解決的辦法很簡單,就是1條命令而已。但是蘊(yùn)藏在這條命令背后的原理、概念、理論,則需要我們進(jìn)行深究!