我有一台运行多个 docker 容器的服务器,配置如下:
| DEV Env Docker
| /
OUTSIDE WORLD <-----|------> REVERSE PROXY DOCKER - DEV Env Docker
| \
| DEV Env Docker
Run Code Online (Sandbox Code Playgroud)
这个想法是用户可以通过反向代理访问开发容器并在该容器内运行命令。
我想通过将他们可以连接的域列入白名单来防止用户运行连接到外部世界的命令。
我已经安装了 squid3 并通过在配置文件中添加以下几行来设置白名单:
acl whitelist dstdomain "/etc/squid3/whitelist.txt"
http_access allow whitelist
Run Code Online (Sandbox Code Playgroud)
我还设法使用以下 iptables 命令 iptables -t nat -A PREROUTING -i docker0 -p tcp -d 0/0 -j REDIRECT --to-port 3128 将流量从 docker 容器重定向到鱿鱼
我遇到的问题是,我只希望来自 Dev Env 容器的传出流量通过 squid,但由于“我相信”,我需要使用 PREROUTING 所有流量都通过 squid,即使是传入和目的地为我的反向代理的流量。
当我尝试通过网络访问我的反向代理时,我从鱿鱼收到以下错误 …