双网络接口上的 Linux 路由

双网络接口上的 Linux 路由

我正在尝试建立一个系统,其中一台服务器有 2 个 VLAN 和 2 个相应的网络接口。我希望能够将服务绑定到特定接口,以便它只接收来自该 IP 的流量。这是当前的设置:

(ifconfig)
  enp28s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet A.B.1.171  netmask 255.255.255.0  broadcast A.B.1.255
        inet6 [.....]  prefixlen 64  scopeid 0x20<link>
        ether [.....]  txqueuelen 1000  (Ethernet)
        RX packets 37262  bytes 6954634 (6.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28457  bytes 5529921 (5.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  enp28s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet C.D.1.112  netmask 255.255.255.0  broadcast C.D.1.255
        inet6 [.....]  prefixlen 64  scopeid 0x20<link>
        ether [.....]  txqueuelen 1000  (Ethernet)
        RX packets 2314778  bytes 212155740 (202.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5446  bytes 604308 (590.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 6600  bytes 420545 (410.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6600  bytes 420545 (410.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(netstat -rn)
  Kernel IP routing table
  Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
  0.0.0.0         A.B.1.1      0.0.0.0         UG        0 0          0 enp28s0f0
  0.0.0.0         C.D.1.1      0.0.0.0         UG        0 0          0 enp28s0f1
  A.B.1.0      0.0.0.0         255.255.255.0   U         0 0          0 enp28s0f0
  C.D.1.0      0.0.0.0         255.255.255.0   U         0 0          0 enp28s0f1

(ip route)
  default via A.B.1.1 dev enp28s0f0 proto static metric 100 
  default via C.D.1.1 dev enp28s0f1 proto static metric 101 
  A.B.1.0/24 dev enp28s0f0 proto kernel scope link src A.B.1.171 metric 100 
  C.D.1.0/24 dev enp28s0f1 proto kernel scope link src C.D.1.112 metric 101

(我已将敏感信息替换为A、B、C、D)

目前,所有入站流量都通过 进行路由enp28s0f0。我能够将服务 A 绑定到enp28s0f0接口 IPA.B.1.171并正常接收流量。当通过enp28s0f1接口 IP向服务 A 发出请求时,C.D.1.112它不会按预期发送到服务 A。

但是,当我将服务 B 绑定到enp28s0f1接口 IP 时,我根本无法接收任何流量(我尝试向A.B.1.171和发送请求C.D.1.112)。我怀疑这与0.0.0.0两个接口子网使用相同的网关有关,但我不完全确定。

还可能有用的是,我目前只使用 1 个路由表(默认路由表),这可能会产生影响,但我不确定。

服务器运行的是 RHEL 7.9。任何帮助/指导表示赞赏!

答案1

从您共享的路由表输出来看,您有两个默认网关,这是一个问题。您只需要一个默认网关,其余的应该是特定的目标网络。

相关内容