无法连接到防火墙后面的 docker 中运行的 ipsec 服务器

无法连接到防火墙后面的 docker 中运行的 ipsec 服务器

我有一个设置,我认为它并不是很难,但却无法让它工作。

工作设置:在直接连接到互联网的 docker 中运行的 ipsec 服务器。客户端可以连接。

不起作用的设置:在防火墙后面连接到互联网的 docker 中运行的 ipsec 服务器。我有node1一个 esxi 服务器,它充当internet gatewaynode2运行在具有 的同一个 esxi 服务器中ipsec server running in a docker

我已在节点 1(互联网网关)上打开端口 500 和 4500,并转发到节点 2(在 docker 中运行 ipsec 服务器)。
我面临的问题是,客户端无法连接。

以下是 iptables 防火墙规则

-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 500 -j ACCEPT
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 4500 -j ACCEPT
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 53 -j ACCEPT

无法发现还缺少什么。有人能告诉我我的设置是否正确以及为什么它不起作用吗?

答案1

来自问题评论的 iptables 规则:

-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 500 -j ACCEPT 
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 4500 -j ACCEPT 
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 53 -j ACCEPT

我真的不明白为什么需要转发端口 53:让互联网上的每个人都能看到内部网络的 DNS 服务器会引发 DNS 欺骗攻击 - 这不是个好主意。VPN 连接后,您将能够通过 VPN 管道安全地访问它,而无需互联网网关主机上的任何防火墙规则。我建议您删除 UDP 端口 53 的 FORWARD 规则,除非您有充分的理由。

iptables FORWARD 过滤表中的 ACCEPT 规则仅允许系统将已正确寻址的流量路由到目标。由于您的 IPsec 服务器似乎有一个 192.168.*.* 地址,因此您的客户端无法使用该地址通过互联网访问它。

相反,您需要配置客户端以使用互联网网关服务器的公共 IP 地址,并且网关服务器需要一些 DNAT 规则来将传入的 IPsec 流量重定向到 IPsec 服务器。

除了已有的 FORWARD 规则之外,互联网网关服务器还需要这些规则:

-t nat -A PREROUTING -i <internet-side NIC> -p udp -m udp --dport 500 -j DNAT --to-destination 192.168.2.37:500
-t nat -A PREROUTING -i <internet-side NIC> -p udp -m udp --dport 4500 -j DNAT --to-destination 192.168.2.37:4500

由于 IPsec 似乎没有自动连接跟踪,您可能还需要传出流量的反向规则:

-t nat -A POSTROUTING -o <internet-side NIC> -s 192.168.2.37/32 -p udp -m udp --sport 500 -j SNAT --to-source <public IP>
-t nat -A POSTROUTING -o <internet-side NIC> -s 192.168.2.37/32 -p udp -m udp --sport 4500 -j SNAT --to-source <public IP> 

(我实际上不确定这部分:首先尝试不使用这些规则,并监视互联网网关主机面向互联网的接口上的传出响应。如果传出的 IPsec 数据包的源 IP 为 192.168.2.37,请添加上述 2 个 SNAT 规则。如果源 IP 已更改为互联网网关主机的公共 IP,则 DNAT 规则成功跟踪连接,您不需要 SNAT 规则。)

当来自客户端的 VPN 流量到达互联网网关主机(最初使用其 IP 地址作为目的地)时,传入流量首先通过 PREROUTING 表。其中的 DNAT 规则将替换目标地址。然后传入流量经过路由检查:由于 DNAT 规则刚刚替换了目标 IP,流量不再被寻址到互联网网关主机本身,因此它会通过路由表,然后通过 FORWARD 筛选表。之后,它会从互联网网关主机的“内部”接口流出,流向 IPsec 主机。

IPsec 主机将接收 IP 数据包头中包含其自身地址 192.168.2.37 的数据包,但在加密内容中,将包含互联网网关服务器的原始公网 IP。IPsec 主机必须具备 NAT_TRAVERSAL 感知能力才能成功处理此问题。

当 IPsec 主机响应时,互联网网关主机将需要用有效的公共 IP 替换传出的 IPsec 数据包的源 IP。

相关内容