use*_*509 7 security gateway docker mitmproxy
我正试图通过mitmproxy在另一个docker容器中运行来路由docker容器的所有流量.为了mitmproxy工作,我必须更改原始docker容器的网关IP.
这是我想要做的一个例子,但是我想把它限制在docker容器内部.
有关我如何能够做到这一点的任何想法?另外,我想避免在特权模式下运行两个docker容器中的任何一个.
授予容器的默认功能集不允许容器修改网络设置。通过在特权模式下运行,您可以向容器授予所有功能——但也可以选择根据需要授予单个功能。在这种情况下,您需要的称为 CAP_NET_ADMIN(完整列表在这里:http ://man7.org/linux/man-pages/man7/capabilities.7.html ),因此您可以添加--cap-add NET_ADMIN到您的 docker run 命令中。
确保在启动两个容器时使用该选项,因为它们都需要进行一些网络调整才能启用透明数据包拦截。
在“proxy”容器中,根据mitmproxy透明模式的说明配置iptables pre-routing NAT规则,然后启动mitmproxy(用-Tflag开启透明模式)。我使用一个小的启动脚本作为代理映像的入口点,因为网络设置更改仅在容器运行时发生,不能在 Dockerfile 中指定或以其他方式持久化。
在“客户端”容器中,只需使用ip route命令将默认网关更改为 docker 桥上代理容器的 IP 地址即可。如果这是您将定期重复的设置,请考虑在客户端映像上使用入口点脚本,该脚本将在容器启动时自动为您设置。容器链接使这更容易:您可以启动代理容器,并在启动客户端容器时链接它。然后客户端入口点脚本可以通过环境变量访问代理容器的 IP。
顺便说一句,如果您可以在非透明模式下使用 mitmproxy(明确配置客户端以使用 HTTP 代理),我强烈推荐它。设置起来就不那么麻烦了。
祝你好运,玩得开心!
| 归档时间: |
|
| 查看次数: |
1564 次 |
| 最近记录: |