首页 > 解决方案 > 传入流量未转发到正确的 docker 容器

问题描述

从 Server-A 到 Server-B 有一个端口为 1111/UDP 的传入流量,Server-B 有多个容器启动并运行,其中一个容器(udp-listener)正在侦听端口 1111/udp,它的 IP 是( 172.17.0.2),问题是:

  1. 使用 ip 172.17.0.2停止容器“udp-listener”
  2. 启动像 Nginx 这样的新容器,所以现在 Nginx 的 ip 为172.17.0.2
  3. 启动具有下一个可用 IP 172.17.0.3的“udp-listener”
  4. 现在,来自 Server-A 的传入流量仍在尝试访问172.17.0.2,这是输出
    $ tcpdump port 1111
    17:30:09.875982 IP Server-A-IP.pvsw > 172.17.0.2.pvsw: UDP, length 49

现在,如果我给“ udp-listener ”容器 IP 172.17.0.2,那么它将再次工作。

我可以在哪里查找的任何提示,顺便说一句,Server-A 不可访问,它只是设置为将事件发送到 server-B 的公共 IP。

调试的最佳实践是什么?有什么工具或教程吗?

我还检查了 IP 表是否有任何规则,但我找不到任何东西,结果如下:

Chain PREROUTING (policy ACCEPT 2178 packets, 155K bytes)
 pkts bytes target     prot opt in     out     source               destination
  12M  805M PREROUTING_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0
  12M  805M PREROUTING_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0
  12M  805M PREROUTING_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3408K  204M DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 780 packets, 46800 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 789 packets, 47332 bytes)
 pkts bytes target     prot opt in     out     source               destination
6021K  361M OUTPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 807 packets, 48412 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  udp  --  *      *       172.17.0.1           172.17.0.1           udp dpt:8080
    0     0 MASQUERADE  udp  --  *      *       172.17.0.2           172.17.0.1           udp dpt:1111

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination
3348K  201M RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0
    0     0 RETURN     all  --  br-4a68f517a271 *       0.0.0.0/0            0.0.0.0/0
    0     0 DNAT       udp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:8080to:172.17.0.1:8080
    0     0 DNAT       udp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:1111 to:172.17.0.2:1111

标签: linuxdockernetworkingudpiptables

解决方案


推荐阅读