双网卡静默拒绝来自一个接口的所有传入流量

双网卡静默拒绝来自一个接口的所有传入流量

在我的服务器中,我有两张以太网卡:

  • enp0s17、本地 IP 192.168.0.7、路由器的公共地址x.x.x.x、网络掩码255.255.255.255
  • enp0s18、本地 IP 172.16.0.7、路由器的公共地址y.y.y.y、网络掩码255.255.255.0

在两个网络上,任何传入流量两个公共 IP 中的路由到服务器。因此,实际上任何前往 的 SSH、HTTP 等x.x.x.x都应转发至192.168.0.7,任何前往 的流量y.y.y.y都应转发至172.16.0.7

不幸的是,这只适用于其中一个。有时(断开并重新连接服务器到互联网后,例如重启后)这种方法有效,但enp0s17有时enp0s18永远不会两者兼而有之同时。(因此,两个路由器都路由正常,似乎是服务器的问题。)

使用 测试的传出流量也存在相同的问题curl --interface enp0s1X ...

另一方面,任何本地交通路由正确。在两个网络中,服务器始终在其本地 IP 上可用。

有谁知道可能导致该问题的原因是什么或如何解决它?

为了测试目的,我完全禁用了防火墙,所以这应该不是问题。

(两个接口也都使用 IPv6 前缀委派,但我将其省略,因为它运行正常。)

两个路由器都是 Ubiquiti EdgeRouters。IP 由路由器上的 DHCP 服务器静态提供。网络配置使用 完成netplan。使用 Ubuntu 20.04。

我的netplan配置:

network:
    version: 2
    renderer: networkd
    ethernets:
       enp0s17:
          dhcp4: yes
          dhcp6: yes
       enp0s18:
          dhcp4: yes
          dhcp6: yes

默认路由:

default via 192.168.0.1 dev enp0s17 proto dhcp src 192.168.0.7 metric 100 
default via 172.16.0.1 dev enp0s18 proto dhcp src 172.16.0.7 metric 100 
172.16.0.0/16 dev enp0s18 proto kernel scope link src 172.16.0.7 
172.16.0.1 dev enp0s18 proto dhcp scope link src 172.16.0.7 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
172.18.0.0/16 dev br-b20299b5e473 proto kernel scope link src 172.18.0.1 
172.19.0.0/16 dev br-ba582f6855c2 proto kernel scope link src 172.19.0.1 
192.168.0.0/24 dev enp0s17 proto kernel scope link src 192.168.0.7 
192.168.0.1 dev enp0s17 proto dhcp scope link src 192.168.0.7 metric 100

答案1

default via 192.168.0.1 dev enp0s17 proto dhcp src 192.168.0.7 metric 100 
default via 172.16.0.1 dev enp0s18 proto dhcp src 172.16.0.7 metric 100 

您的问题是您有两个默认路由 - 您只能有一个。您的传入数据没有问题。但是当您的服务器发送回复时,由于您有两个默认路由,因此服务器会在这两个路由之间交替。IE,一半的数据包都发错了方向。

您需要选择一个默认接口,并且需要为其他网络添加明确的路由。

相关内容