我已经设置了 CentOS 7.6 服务器(Lenovo SR650,带 x722 10 GbE 卡),并尝试将两个 NIC 端口(不是 2 个 NIC,只是 2 个端口)指定为具有不同网关等的不同子网。我已静态配置每个接口(eno1 和 eno2)以具有单独的 IP 和网关,并为两个接口添加了 route-enoX 和 rule-enoX。但是,当我启动第二个端口(eno2)时,我失去了与 eno1 的连接。我可以通过 SSH 进入 eno2 IP(不同的子网),但无法通过 SSH 进入 eno1。如果我关闭 eno2,我就可以再次访问 eno1。
虽然我确实有一些网络管理经验,但我对这个问题并不熟悉。
有人可以解释一下这个问题吗?
下面的配置针对eno1,eno2类似。
IFCFG-ENO1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eno1
UUID=c82f3e2f-466b-4afb-95dd-492720551d2c
DEVICE=eno1
ONBOOT=yes
IPADDR=192.168.9.9
PREFIX=24
GATEWAY=192.168.9.1
DNS1=10.1.1.198
DNS2=10.1.1.189
ZONE=public
路线-ENO1
default via 192.168.9.1 dev eno1 table 1
192.168.9.0/24 dev eno1 src 192.168.9.9 table 1
规则-ENO1
from 192.168.9.9/32 table 1
IP 路由(包括 eno2)
default via 192.168.9.1 dev eno1 proto static metric 100
default via 10.10.0.1 dev eno2 proto static metric 101
10.10.0.0/23 dev eno2 proto kernel scope link src 10.10.0.80 metric 101
192.168.9.0/24 dev eno1 proto kernel scope link src 192.168.9.9 metric 100
答案1
为了解决您的问题,您应该设置基于策略的路由来通过接口进行应答eno2
,就像您对接口所做的那样eno1
。
在您当前的配置中,来自地址的答案无论如何10.10.0.80
都会通过eno1
接口进行路由。
为确保您可以使用命令:
ip route get 8.8.8.8 from 10.10.0.80
tcpdump -ni eno1 'ip host 10.10.0.80'
# setup the separate routing table to answer through eno1 interface
ip route add 192.168.9.0/24 dev eno1 table 1
ip route add 0/0 via 192.168.9.1 dev eno1 table 1
# set the separate routing table to answer through eno2 interface
ip route add 10.10.0.0/23 dev eno2 table 2
ip route add 0/0 via 10.10.0.1 dev eno2 table 2
# route packets with source address 192.168.9.9 through table 1
ip rule add from 192.168.9.9 table 1 pref 10001
# route packets with source address 10.10.0.80 through table 2
ip rule add from 10.10.0.80 table 2 pref 10002
您还应该切换rp_filter
到松散模式,否则来自非直接连接地址的传入数据包可能会被丢弃。
sysctl -w net.ipv4.conf.eno1.rp_filter=2
sysctl -w net.ipv4.conf.eno2.rp_filter=2
答案2
您可能需要:
路线-ENO2
default via 10.10.0.1 dev eno2 table 2
10.10.0.0/23 dev eno2 src 10.10.0.80 table 1
规则-ENO2
from 10.10.0.80/32 table 2
或类似的东西。
当您启动 eno2 时,可能发生的情况是,与 10.10.0.80 相关的需要通过网关的流量通过 192.168.9.1 进行路由,因为该条目位于 10.10.0.1 之前,并且可能会在那里被丢弃。