【发布时间】:2020-12-02 00:29:12
【问题描述】:
我正在开展一个需要通过 VPN 连接到客户网络的项目(我们正在发送 HTTP 请求并连接到他们本地服务器上的数据库)。
我想要实现的是:
我在 AWS 上有一组实例,但我不想在每个实例上都设置 VPN 连接,事实上,如果可能的话,我根本不想更改它们。 (我们称这些应用实例。)
所以我想我会为每个客户端设置具有 VPN 连接的其他实例。 (我们称这些 vpn 实例。)
这个想法是应用程序实例将具有 VPN 实例的 DNS(例如:myclient.vpn.myservice)并将其用于通过 VPN 的所有流量。
示例:app instance #1 向http://myclient.vpn.myservice:1234 发送 HTTP 请求,vpn 实例收到请求,将其转发到 1.2.3.4:1234(在客户端本地网络上)并将响应返回给 app instance #1,所以从应用实例的角度来看,这就像向 myclient.vpn.myservice 发送一个常规的 HTTP 请求(旁注:这也应该适用于常规的 tcp 和 udp 连接)。
我尝试的是启用 ip 转发并在 vpn 实例上设置 iptables 规则,如下所示:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 1.2.3.4:1234
iptables -t nat -A PREROUTING -p udp --dport 1234 -j DNAT --to-destination 1.2.3.4:1234
iptables -t nat -A POSTROUTING -j MASQUERADE
但这似乎不起作用(至少对于 HTTP 请求)。
所有服务器都在 Ubuntu 20.04 上运行。
我不确定这个想法是否完全错误,而且我对 Ubuntu 没有特别丰富的经验,所以我愿意接受建议,唯一重要的是我真的不想改变应用实例。
【问题讨论】:
-
我很想知道为什么 2 个人认为这个问题没有显示出任何研究成果、不清楚或没有用
-
再次,我不知道这个问题与一般编程硬件和软件无关,但自从我设法解决它之后,我不在乎它是否已关闭,但答案可能对其他人来说很有趣。 ..
-
我认为它应该被关闭,但原因有误。它真的更适合Server Fault(即它是关于服务器管理,而不是一般的硬件和软件,而不是编程)
-
感谢反馈,这个我完全可以理解,我不知道服务器故障,下次我有这样的问题我会在那里发帖
标签: ubuntu networking vpn iptables forwarding