小编aja*_*ali的帖子

将来自 docker 容器的传出流量列入白名单

我有一台运行多个 docker 容器的服务器,配置如下:

  • 其中一个容器是绑定到其他容器公开端口的反向代理。这是唯一一个在 http 端口 80 上接受来自外部世界的连接的容器
  • 所有其他容器都是运行 tty shell 的开发环境。这些在主机上暴露了端口,但由于主机上的 EC2 安全组配置,这些端口不会暴露给外界。所以与他们沟通的唯一方法是通过反向代理。反向代理通过它们暴露的端口与它们通信。
    nb 我不能在这里使用容器链接,因为我不想用每个新的开发容器重新启动反向代理容器。

                    |                                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,即使是传入和目的地为我的反向代理的流量。

当我尝试通过网络访问我的反向代理时,我从鱿鱼收到以下错误 …

iptables squid transparent-proxy docker

5
推荐指数
1
解决办法
4003
查看次数

标签 统计

docker ×1

iptables ×1

squid ×1

transparent-proxy ×1