因此,我们正在设置和测试新的内部系统,使用 Docker 在同一主机上部署 OpenVPN、Jenkins 和 bind。我们希望将访问限制为仅来自我们 VPN 的流量。
对于我们其他内部系统(在不同主机上),这可以按预期工作。我们可以配置 ufw 以根据 VPN 服务器的 IP 进行限制,并且它可以按预期工作,这意味着我们在关闭 VPN 时无法访问,而在使用 VPN 时可以访问。
但是,对于与我们的 OpenVPN 服务器在同一主机上运行的 Docker 中的服务,流量似乎从未来自 VPN。无论是否连接,它始终似乎来自远程(连接)客户端的实际 IP 地址。
OpenVPN 使用流行的Docker OpenVPN图像。我们使用默认设置,这意味着所有流量都应该通过 VPN 连接进行路由。
我遗漏了或者忘记了什么?
答案1
这听起来就像你在 nat/postrouting 链中有一个伪装/snat 规则(编辑:vpn 服务器主机),它将源 IP 地址从客户端地址转换为 VPN 服务器主机地址,以便将流量绑定到 vpn 服务器端的其他主机。
但是,对于发往运行 vpn 服务器的主机的流量,后路由链不会命中。最后一个链将是过滤器/输入。即使来自客户端的流量进入在其 tun/tap 设备上运行 vpn 服务器的主机,用于监听 eth0 设备的服务,情况也是如此。
如果是这种情况,处理该问题的最简单方法是在客户端通过 snat/masquerading 将通过 vpn 路由到客户端的 tun/tap 地址的所有流量拦截/伪装。