为什么我在Docker桥网络中将网关IP作为源地址?
我最初在做Docker网桥网络的一些组合,并注意到,这些请求不是白名单本地IP,而是始终从网关IP发送 为了尽可能少地复制它,我使用了两个Python容器来运行HTTP服务器和客户端:为什么我在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-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
中删除后,一切正常