首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在Docker网桥网络中取网关IP作为源地址?

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

Stack Overflow用户
提问于 2017-07-25 12:27:04
回答 1查看 672关注 0票数 1

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

为了以最小的努力重现它,我使用了两个Python容器来运行HTTP服务器和客户端:

docker run -it --rm python:alpine sh

在服务器端:

代码语言:javascript
运行
复制
python -m http.server

在客户端:

代码语言:javascript
运行
复制
wget 172.17.0.3:8000

预期输出,请求来自容器IP:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 21:09:28

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45293932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档