container-1 以IP 172.16.1.8,使用本地端口32000,尝试建立到 10.0.0.99:80的连接。
container-2 以IP 172.16.1.9,使用本地端口32000,尝试建立到 10.0.0.99:80的连接。
来自container-1的包到达主机,源IP为172.16.1.8:32000。在表中没有10.0.0.1:32000的条目,所以端口32000可以被保留。主机将源IP从172.16.1.8:32000替换为10.0.0.1:32000。它在conntrack表格中增加了一个条目,来记录从172.16.1.8:32000到10.0.0.99:80的TCP连接,源地址被转换成了10.0.0.1:32000。
来自container-2的包到达主机,源IP为172.16.1.9:32000。由于10.0.0.1:32000已经被用来与10.0.0.99:80的TCP通信,主机使用第一个可用的端口(1024),把源IP从172.16.1.8:32000替换为10.0.0.1:1024。在conntrack表格中增加了一个条目,来记录从172.16.1.9:32000到10.0.0.99:80的TCP连接,源地址被转换成了10.0.0.1:1024。
远程服务响应来自10.0.0.1:32000和10.0.0.1:1024的连接。
Docker主机接收到端口32000的响应,将目标地址改为172.16.1.8:32000。
Docker主机接收到端口1024的响应,将目标地址改为172.16.1.9:32000。