为什么我在Docker桥网络中将网关IP作为源地址?

为什么我在Docker桥网络中将网关IP作为源地址?,docker,network-programming,Docker,Network Programming,我最初在做Docker网桥网络的一些组合,并注意到,这些请求不是白名单本地IP,而是始终从网关IP发送 为了尽可能少地复制它,我使用了两个Python容器来运行HTTP服务器和客户端: docker-run-it--rm-python:alpine-sh 在服务器端: python -m http.server 在客户端: wget 172.17.0.3:8000 预期输出是请求来自容器IP: Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0

我最初在做Docker网桥网络的一些组合,并注意到,这些请求不是白名单本地IP,而是始终从网关IP发送

为了尽可能少地复制它,我使用了两个Python容器来运行HTTP服务器和客户端:

docker-run-it--rm-python:alpine-sh

在服务器端:

python -m http.server
在客户端:

wget 172.17.0.3:8000
预期输出是请求来自容器IP:

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...          
172.17.0.2 - - [time] "GET / HTTP/1.1" 200 -
请求来自网桥网关IP的实际输出:

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...          
172.17.0.1 - - [time] "GET / HTTP/1.1" 200 -
然而,当我在笔记本电脑上运行相同的测试时,我得到了预期的行为(容器IP)。问题似乎只发生在我的服务器上


什么会导致这种行为?是某种sysctl或iptables问题吗?

我找到了原因,这是一个古老的
iptables保存
条目。很难注意到,默认情况下,
iptables-nvL
不显示NAT规则

将它们从
/etc/iptables/rules.v4
中删除后,一切正常