Ubuntu 拒绝单一主机的连接

Ubuntu 拒绝单一主机的连接

我在机器 A 上运行着一个 Ubuntu 16.04。它内部运行着一个 docker 容器,它将端口 8080 暴露给外部(这是在 docker 容器内部运行的服务器(Wildfly)监听的地方)。

我可以通过网络上除一台机器(我们称之为机器 B)之外的所有其他机器上的端口 8080 访问该机器。那台机器也运行着 Ubuntu 16.04,当我从 B ping 机器 A 时,它会回复。我像这样关闭了防火墙sudo systemctl ufw,我还尝试刷新所有 iptables 规则,所以现在我的sudo iptables -L返回此:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

因此,看来我的 iptables 是空的,防火墙已关闭,但仍然有一台机器无法访问端口 8080 上的机器 A。我得到:连接被拒绝我还尝试通过端口 22 从机器 B SSH 到 A,成功了。我不知道还能尝试什么,也不知道该去哪里找

更新:另外,奇怪的是,当我查看机器 A 上的 tcpdump(并过滤源 IP 为机器 B 的 IP 的流量)时,我没有看到任何流量。即使我从 B ping 机器 A 时,它也通了。

我的 tcpdump 命令如下所示:* sudo tcpdump -n "(src host ) and (dst port 8080 or icmp)" -i any*

当我尝试使用可以连接到 machineA:8080 的其他机器过滤 tcpdump 时,我会看到所有流量(icmp 和其他)

更新 2:我终于能够使用 tcpdump 捕获一些流量。以下是机器 B 尝试通过 8080 连接到机器 A 的转储:

   listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
    12:18:24.744258 IP *<MACHINE_B_IP>*.50554 > *<MACHINE_A_IP>*.8080: Flags [SEW], seq 2052431582, win 29200, options [mss 1460,sackOK,TS val 1612935176 ecr 0,nop,wscale 7], length 0
    12:18:24.744710 IP *<MACHINE_A_IP>*.8080 > *<MACHINE_B_IP>*.50554: Flags [R.], seq 0, ack 2052431583, win 0, length 0

以下是机器 A 和 C 之间的工作通信:

12:11:14.932934 IP *<MACHINE_C_IP>*.58177 > *<MACHINE_A_IP>*.8080: Flags [S], seq 1111998950, win 65280, options [mss 1360,nop,wscale 8,nop,nop,sackOK], length 0
12:11:14.932994 IP *<MACHINE_A_IP>*.8080 > *<MACHINE_C_IP>*.58177: Flags [S.], seq 4068855234, ack 1111998951, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
12:11:14.942047 IP *<MACHINE_C_IP>*.58177 > *<MACHINE_A_IP>*.8080: Flags [.], ack 1, win 260, length 0

因此,看起来好像 B 发给 A 的 ACK 丢失了。这是否意味着问题出在机器 B 上?

相关内容