gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:35:47 25 4
gpt4 key购买 nike

我最初使用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-save条目。由于iptables -nvL默认不显示NAT规则,因此很难注意到。

/etc/iptables/rules.v4中删除它们后,一切都按预期工作。

关于docker - 为什么在Docker桥接网络中将网关IP作为源地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45293932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com