-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
容器(docker)桥接(bridge)模式时的代理问题 #10
Comments
docker默认网络桥接(--net=bridge)
这时走的是网关代理。 edit: 原因是docker加载的br_netfilter模块造成的, 见下文 |
|
来源: |
顺带一提可能的坑,设置 |
说一下,这个不是网桥的问题,而是 br_netfilter 的问题。docker 会加载这个模块,见 moby/moby#13162 。systemd-nspawn 不加载这个模块,所以(不通过其它途径加载这个模块的话)不应当受影响。 另外 sysctl.d(5) Example 2 有在模块加载时使用 udev 自动应用 sysctl 设置的方案。 PS: 我看了许久,还是没弄明白这里讨论的问题是什么…… |
建议在句号前加一个空格,现在看起来这个链接把句号也加进去了
只是想让 docker 和 nspawn 里的容器正常走代理而已…… |
什么叫「正常」……要走透明代理的话,直接在网关的 PREROUTING 链上操作不就好了吗? |
但是我不会这个操作…… |
正如依云姐所指出的,br_netfilter模块使得bridge的二层包经过了iptables,docker加载这个的目的是为了避免hairpin nat(一个无关紧要的东西),但是TPROXY不支持接收这类型的包,因此无法代理。
|
我已经按照 #3 设置了内核参数,但还是会发生这种情况
复现问题的步骤:
"cgroup_proxy": ["/system.slice/containerd.service","/system.slice/docker.service","/"]
可能有用的文件
cgp.log
tproxy.json.txt
一点额外信息:
发行版是 Arch
安装了 nftables 和 iptables-nft
The text was updated successfully, but these errors were encountered: