目标是仅允许特定网络访问在我的服务器上运行的 docker 容器服务/端口。
尝试将 ACCEPT 规则添加到 INPUT 过滤器链中。这没有帮助,即使没有接受规则的网络仍然能够访问 docker 服务/端口。
尝试在 FORWARD 链中添加 ACCEPT 和 DROP 规则,这有效。但这有很多缺点,例如:规则在 docker 重启时被删除或重新定位 b.如果重新部署 docker 容器并在运行时获取不同的 IP,则规则可能会失效
计划是在到达 FORWARD 链之前阻止它们。
因此,在 NAT 表中添加了一条新链,如果流量来自允许的网络,则重定向到 DOCKER 链,如果来自其他网络,则将 DNAT 添加到 BLOCKHOLE IP。在 PREROUTING 中,第一条规则是跳转到该链。这似乎有效。
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1234 到:0.0.0.1
但是,我们是否可以以某种方式拒绝此流量,以便客户端知道它是不允许的并因此被拒绝,而不是将其重定向到 BLOCKHOLE。
答案1
这不是特别好,但是如果您将流量从 PREROUTING 中的某个位置 DNAT 到黑洞地址(从以下位置选择一些保留的网络地址,例如 192.0.2.1)https://en.wikipedia.org/wiki/Reserved_IP_addresses)然后您可以在过滤器表中拒绝/删除 FORWARD 。这样,您只需要一条规则,并希望能更好地避免它被重新定位。