OpenVPN AS 接受 NAT 转发的连接

OpenVPN AS 接受 NAT 转发的连接

我们正在运行 OpenVPN AS 服务器,这些服务器可通过公共 IP 访问和工作。但是我们的一些客户端无法直接访问我们的 VPN 服务器(因为一些讨厌的防火墙管理员 - 不要问...)。为了绕过这个问题,我们想出了一个设置,它将在虚拟环境中创建一个网关,该网关将执行简单的 NAT 将所有传入连接转发到我们的 VPN 服务器。

NAT 工作正常(服务器上的 tcpdump 显示离开我们网关的数据包相同)。我们当前的 iptables 规则是(INPUT、FORWARD 和 OUTPUT 默认设置为 ACCEPT):

iptables -t nat -A PREROUTING -p udp --dport 1194 -j DNAT --to-destination $vpn_srv
iptables -t nat -A POSTROUTING -j MASQUERADE

我知道可能需要进行一些进一步的配置,但只要 VPN 服务器没有响应他肯定收到的数据包,我们就不需要增强规则。

每次数据包到达VPN服务器时,服务器都会产生以下日志输出:

2012-12-31 13:03:29+0000 [-] OVPN 1 OUT: 'Mon Dec 31 13:03:29 2012 TLS Error: incoming packet authentication failed from 123.123.123.123:35077'
2012-12-31 13:03:31+0000 [-] OVPN 1 OUT: 'Mon Dec 31 13:03:31 2012 Authenticate/Decrypt packet error: packet HMAC authentication failed'

因此,我认为我们需要告诉 VPN 服务器接受并回复来自该主机的转发数据包。我们该怎么做?

注意:所有服务器(VPN 服务器和 NAT 网关)都是公共的。

编辑:
没有想法?我知道可以在防火墙后面运行 OpenVPN 服务器(就像任何家庭网络中的简单 NAT)。我的设置与那个有什么不同?

编辑(2013 年 1 月 10 日):
我们会尝试任何允许我们将 VPN 流量从“网关”转发到 VPN 服务器的解决方案。最好使用加密,因为防火墙似乎会扫描将被转储的特定 VPN 数据包。

答案1

如果您的客户端有全网防火墙,可以通过 DPI 和/或某种模式分析阻止 OpenVPN 流量,那么我不确定您除了不使用 OpenVPN 外还能做什么。我不确定我是否明白使用额外的网关和 NAT(我猜是在您的非客户端网络上?)应该有什么帮助。

您可以尝试使用 OpenSSH SOCKS 或 tun(4) 功能。(假设由于某些奇怪的原因,只有 OpenVPN 被阻止,而 ssh 没有被阻止。)

所有主要的 ssh 实现都支持 SOCKS 功能(通常称为“动态端口转发”),它将允许您的客户端使用-D1080选项通过 SSH 进行连接和身份验证,然后localhost:1080在 Web 浏览器中指定为 SOCKS5 代理。设置非常简单(如果用户已经拥有 ssh 访问权限,则无需进行服务器端更改)并且通常效果很好(我一直在公共网络上使用它)。

或者,如果您使用的是 UNIX 系统,那么您tun(4)也可以通过 OpenSSH 进行配置。这是一个相对较新的功能,与实际上已默认启用的 SOCKS 代理相比,它需要额外的配置,但它也是一个不错的选择,具体取决于您要寻找的内容。

答案2

还有两个端口需要转发,分别是 443 和 943,如常问问题来自 OpenVPN:

我需要在防火墙中为 Access Server 打开哪些端口?
简短回答:TCP 443、TCP 943、UDP 1194

而且,如果这不起作用并且所有 IP 都是公开的,您可以尝试删除 MASQUERADE,并让连接从 PtP 建立,通过您的网关。

如果这些都没有帮助,您可能需要提供更多信息,例如 tcpdump 摘录,甚至调试日志。

相关内容