我有一台双宿主机(1 个 LAN,1 个 DMZ),两台机器都使用静态 IP,并配置了路由,以便从 LAN IP 进入的数据包使用 LAN 网关,而 DMZ 数据包使用 DMZ 网关。我使用 tcpdump 在本地机器上进行调试。
当与 DMZ 子网上的源 IP 建立 TCP 连接时,握手正常进行。当与 DMZ 子网外的源 IP 建立到 DMZ 网卡的 TCP 连接时,服务器永远不会返回 ACK。
我已经确认 ACK 不会通过其他网卡发出。我已经确认没有配置任何规则iptables
(此时主要怀疑)。路由看起来合适。SYN 数据包看起来正常。我已经确认 IP 到网卡的映射是正确的(并且在启动过程中保持一致)。
此配置工作正常。我移动了硬件并更改了 LAN 和 DMZ IP,现在遇到了问题。我在这两个 IP/etc/network/interfaces
和 hosts 文件(仅限 DMZ)中更新了新 IP。
我还应该去哪里查看交通被阻塞了?
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.10.0.0 10.10.0.1 255.255.255.0 UG 0 0 0 eth1
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth2
(eth0 未配置,10.10.0.0/24 = DMZ,10.0.0.0/24 = LAN)
答案1
我发现了这个问题。我需要为 eth1 添加一条显式路由,以便正确地将流量从 DMZ 路由到 WAN。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<WAN subnet> 10.10.0.1 255.255.255.0 UG 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.10.0.0 10.10.0.1 255.255.255.0 UG 0 0 0 eth1
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth2