Linux系統多網卡環境下的路由配置


Linux下路由配置命令

1. 添加主機路由

route add -host 192.168.1.11 dev eth0
route add -host 192.168.1.12 gw 192.168.1.1

2. 添加網絡路由

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. 添加默認網關

route add default gw 192.168.1.1

4. 刪除路由

route del -host 192.168.1.11 dev eth0

5. 刪除默認路由

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=[網關IP或者網關網卡名稱]

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轉發

1.臨時開啟

echo "1" > /proc/sys/net/ipv4/ip_forward

2.永久開啟

vim /etc/sysctl.conf

修改net.ipv4.ip_forward=1

實驗:配置雙網卡主機同時使用內網和外網

本實驗的背景是筆者在實踐中遇到過的一個問題,本實驗盡量還原當時的網絡環境。僅當做一份筆記,同時分享給遇到此問題的同學。
奈何我現在沒有硬件呀(T_T)...只能拿VMware WorkstationeNSP來模擬實驗環境了。

問題背景

如下圖拓撲所示,如果去掉client節點,內網外網就是相互隔離的網絡。

但是實際情況是,client節點既需要訪問外網資源,又需要訪問內網資源,而client只能配置一條默認路由。如果將默認路由配置在外網網卡,client可以訪問172.16.2.0/24網絡的資源和外網的資源,但是其余內網資源將無法訪問;如果將默認路由配置在內網網卡,client雖然可以完全訪問內網資源,但是卻不能訪問外網資源。
怎么解決呢?

實驗環境

  1. VMware Workstation Pro
  2. 4台最小化安裝的CentOS 7.3虛擬機
  3. 華為eNSP模擬器

實驗拓撲

去掉client節點,內網和外網是隔離的網絡。
外網網絡為10.0.0.0/16,代表運營商的接入網;
內網網絡為172.16.0.0/16,代表內網部分(該部分為了安全,不允許對互聯網的直接訪問)。
其中

  • client為雙網卡的主機,兩網卡網段分別為10.0.0.0/16172.16.2.0/24
  • server2172.16.2.0/24網段的服務器;
  • server3172.16.3.0/24網段的服務器;
  • server4172.16.4.0/24網段的服務器。

網絡規划

IP分配

節點名稱 IP地址 子網掩碼 備注
client 10.0.0.101 255.255.0.0 client的外網網卡
172.16.2.101 255.255.255.0 client的內網網卡
Server2 172.16.2.11 255.255.255.0 172.16.2.0/24網段的某台服務器
Server3 172.16.3.11 255.255.255.0 172.16.3.0/24網段的某台服務器
Server4 172.16.4.11 255.255.255.0 172.16.4.0/24網段的某台服務器
內網路由器 172.16.2.254 255.255.255.0 172.16.2.0/24的網關
172.16.3.254 255.255.255.0 172.16.3.0/24的網關
172.16.4.254 255.255.255.0 172.16.4.0/24的網關

虛機網卡類型

網絡名稱 VMware網卡類型 網絡范圍
運營商網絡 橋接 10.0.0.0/16
VMnet2 僅主機 172.16.2.0/24
VMnet3 僅主機 172.16.3.0/24
VMnet4 僅主機 172.16.4.0/24

內網路由器如何實現呢?
VMnet2、VMnet3、VMnet4均為僅主機模式,那么常規情況下,只有其網絡內的各計算機之間才可以通信,要怎樣才能實現三個網絡間的通信呢?
答案是使用華為eNSP模擬器中的Cloud。使用Cloud設備可以將eNSP中的路由器和VMware虛擬機的網卡連接起來。

配置內網環境

配置eNSP的路由器

接口 IP地址 子網掩碼
G0/0/0 172.16.2.254 255.255.255.0
G0/0/1 172.16.3.254 255.255.255.0
G0/0/2 172.16.4.254 255.255.255.0
<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]

修改虛機的IP地址

client

網卡名稱 IP地址 子網掩碼 默認網關 備注
ens33 10.0.0.101 255.255.0.0 10.0.0.1 外網網卡
ens37 172.16.2.101 255.255.255.0 內網網卡

server2

網卡名稱 IP地址 子網掩碼 默認網關 備注
ens33 172.16.2.11 255.255.255.0 172.16.2.254

server3

網卡名稱 IP地址 子網掩碼 默認網關 備注
ens33 172.16.3.11 255.255.255.0 172.16.3.254

server4

網卡名稱 IP地址 子網掩碼 默認網關 備注
ens33 172.16.4.11 255.255.255.0 172.16.4.254

在server上搭建HTTP服務

server2為例:
使用Python創建一個簡單的HTTP服務

cd ~
echo "server2" > index.html
python -m SimpleHTTPServer 8080

對照試驗

client上訪問外網

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將默認網關配置在外網網卡的情況下,雙網卡的client可以正常訪問外網和內網的172.16.2.0/24部分,而172.16.3.0/24172.16.4.0/24是不能訪問到的。

為什么client能訪問172.16.2.0/24網絡,而不能訪問172.16.0.0/16的其余網絡呢?
因為client位於172.16.2.0/24網絡內,在網絡內進行通信,數據包不用發送至其他網絡,當然默認網關也就不起作用了。
而當client172.16.0.0/16的其余網絡通信時,client的路由表沒有記載發往目的地址的路徑,所以client只能傻傻的把數據包發送給默認網關,從此數據包和真正的目的地址就“南轅北轍”了。當然ping的結果就是網絡不可達。

路由配置

client上查看路由表

route

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

查看路由表

route

實驗結果

檢測連通性

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

訪問內外網資源

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條命令而已。
但是蘊藏在這條命令背后的原理、概念、理論,則需要我們進行深究!

本文鏈接:https://www.cnblogs.com/connect/p/linux-static-route.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM