網絡環境中存在一臺服務器,這臺服務器上有兩塊網卡。一塊網卡上的IP屬於業務平面,對外不可見。另一塊網卡上的IP屬於管理平面,容許網絡外的PC訪問。shell
Server環境:服務器
Linux操做系統 eth0:10.0.100.30 255.255.255.0 10.0.100.254 管理平面 vlan100 eth1:10.0.101.30 255.255.255.0 業務平面 vlan101
PC環境:網絡
Windows操做系統 ip:10.0.9.6 255.255.255.0 10.0.9.6 vlan009
vlan100、vlan101和vlan009屬於三個不一樣的vlan,在覈心交換機上已配置,容許vlan009訪問vlan100和vlan101,也就是說,在PC機上能夠ping通10.0.100.254和10.0.101.254。tcp
個人一個誤區就是,server上既然配了兩塊網卡,而且個人PC到兩塊網卡上IP對應的網關都是通的,那麼我從PC上ping10.0.100.30和10.0.101.30就應該是通的,可是事實上,從PC到10.0.100.30是通的,到10.0.101.30是不通的。spa
這就難住我這個不精通網絡的人了,因而我請教了身邊精通網絡的同事,你們一塊兒終於把這個謎題解開了。操作系統
關鍵:一臺服務器只容許有一個默認網關。code
咱們作了個實驗,在server上分別對eth0和eth1抓包:server
tcpdump -i eth0 -nn tcpdump -i eth1 -nn
經過抓包發現,PC的數據包都是能夠到達eth0和eth1,只是數據包到達eth1後,該網卡沒法發送應答的數據包。直觀的現象就是,PC到eth1的網絡好像不通。ip
看到這個,我也突然就明白了。由於在server端,只有一個默認網關,數據包在到達eth1口後,發現源地址10.0.9.6和10.0.101.30不在一個網段,那麼在響應時,沒法直接處理該請求,在正常狀況下,這個包將發送到默認網關,可是server上eth1沒有配置默認網關,因此這個數據包就不知道該往哪裏發了,這樣就出現了上述現象。路由
那麼遇到這種狀況該怎麼辦呢?一般是爲該服務器的eth1添加一條靜態路由,讓該路由指向相應的網關便可。
route add -net 10.0.9.0 netmask 255.255.255.0 gw 10.0.101.254 dev eth1
爲了永久生效,能夠將配置寫入到對應的配置文件/etc/sysconfig/networking/profiles/default/route-eht1中。
GATEWAY0=10.0.101.254 NETMASK0=255.255.255.0 ADDRESS0=10.0.9.0