Linux-Networking

CentOS 路由表有兩個預設網關條目

  • July 24, 2018

我無法 ping Google,所以我查看了我的路由表:

# ip r
default via 10.30.0.1 dev eno2  proto static  metric 100 
default via 10.30.0.1 dev eno1  proto static  metric 101 
10.30.0.0/24 dev eno1  proto kernel  scope link  src 10.30.0.21  metric 100 
10.30.0.1 dev eno2  proto static  scope link  metric 100 
192.168.30.0/24 dev eno2  proto kernel  scope link  src 192.168.30.3  metric 100 

關於 10.30.0.1 via eno2 的條目沒有意義,因為 eno2 的 IP/遮罩為 192.168.30.3/24 並且確實如果我刪除這兩個一切順利:

# ip route delete default via 10.30.0.1 dev eno2
# ip route delete 10.30.0.1 dev eno2
# ping www.google.gr

PING www.google.gr (216.58.210.3) 56(84) bytes of data.
64 bytes from fra16s07-in-f3.1e100.net (216.58.210.3): icmp_seq=1 ttl=54 time=132 ms
...

我在我的設置中沒有發現任何明顯錯誤:

的輸出 cat /etc/sysconfig/network-scripts/ifcfg-eno1

NAME=eno1
DEVICE=eno1
TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.30.0.21
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
ONBOOT=yes
UUID=...
IPV6...
...

的輸出 cat /etc/sysconfig/network-scripts/ifcfg-eno2

NAME=eno2
DEVICE=eno2
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.30.3
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
ONBOOT=yes
UUID=...
IPV6...
...

您應該DEFROUTE=yes從 eno2 的配置中刪除。

如果您不使用 DHCP 來獲取 DNS 和預設網關,您PEERDNS=yes也不需要。PEERROUTES=yes


參考

來自https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html

DEFROUTE: yes — 將此介面設置為預設路由。no — 不將此介面設置為預設路由。

來自https://docs.oracle.com/cd/E37670_01/E41138/html/ol_about_netconf.html

PEERDNS:用於DNS解析的/etc/resolv.conf文件是否包含從DHCP伺服器獲取的資訊。

PEERROUTES:定義介面預設網關的路由表條目的資訊是否從 DHCP 伺服器獲得。

您應該只在其中一個介面文件中使用“DEFROUTE=yes”,預設情況下您希望網際網路流量通過該文件。

引用自:https://serverfault.com/questions/870990