如何设置 docker squid 容器和主机以将请求从容器主机路由到互联网?



现在我有一个 docker 容器运行 squid 侦听一系列端口。 我使用以下命令运行它,以便端口范围也发布到主机。

docker run -ti -v /var/log/squid:/var/log/squid -p 3133-3168:3133-3168 my_image/squid_test4 -name squid

我正在尝试设置它,以便客户端可以在上述端口范围内的端口上访问容器主机,并且仍然可以访问互联网。

从容器主机我可以运行curl -x http://172.17.x.x:3134 http://ipinfo.io并且没有问题。 每当我尝试在客户端上使用主机ip(即curl -x http://host_ip:3134 http://ipinfo.io(时,它都会挂起并超时。 我可以看到请求通过 tcpdump 命中主机,但没有返回任何内容。

当我在主机上运行netstat -tlpn时,我可以看到条目说 docker 正在侦听我指定的端口范围。 当我在客户端上并做类似telnet host_ip 3134的事情时,它会连接并告诉我那里正在听东西。

我是否需要在主机上设置 iptables PREROUTE NAT 以将流量转发到这些端口,或者我可以在主机上使用 HA 代理之类的东西并将 squid 容器设置为后端吗? 有点难倒在这里...

呃,简单的检查,注意到iptables/ufw没有运行。 但是,当我iptables -Liptables-save时,它们在内存规则中显示当前。 重新启动UFW现在一切都很好...现在我觉得自己很傻。

最新更新