Linux 上的 UDP 端口转发(不寻常的设置)

Linux 上的 UDP 端口转发(不寻常的设置)

我想设置 UDP 端口转发以访问 OpenVPN 服务器。设置有点奇怪,有一点背景这里总结一下:

  • 家里有一台 Raspberry Pi,IP 地址为 192.168.1.72(静态)+ 由另一个私有 OpenVPN 网络提供的 IP 地址(我不能依赖它永远不会从 10.88.53.2 改变,因为它是 DHCP)
  • 我从 AWS 设置中获取了公共地址。这是一个 EC2 实例,地址为 18.157.xy(永不改变)。还有同一实例的私有 IP,172.31.5.117(它是其 VPC 中唯一的主机)。在主机之间的隧道中,地址为 10.88.53.1。
  • 我想在我的 Raspberry Pi 上运行另一个 OpenVPN 服务器,监听常规 1194 端口 UDP(不会执行 TCP,即使socat解决了需要转发 TCP 端口的部分)。
  • 因此,我需要以某种方式将 Pi 的端口转发到我的 EC2 实例的端口。

简而言之,我希望发送到我的 AWS 实例端口 53 的 UDP 数据包能够到达我的 Pi 的端口 1194(VPN 服务器监听 0.0.0.0,因此接口并不重要)返回数据包正确返回。


我想我需要提一下我已经尝试过的方法(但没有奏效)。我尝试了几种 iptables 规则。

我失败的尝试之一是这样的:

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 192.168.1.72:1194

如果有可以使用 IPv6 的解决方案,那么我真的不会介意。只是典型的客户端和 VPN 服务器在 IPv4 上监听 UDP。进行 2 层 4 到 6 转换,然后进行 6 到 4 转换是可以接受的。我的 Raspberry Pi 有一个公共 IPv6 地址(SLAAC,但前缀不稳定,可能会改变)。我的 EC2 主机具有 IPv6 连接(固定的公共 IP,尽管我认为我不需要共享它)。客户端可能缺少它。如果有帮助,在 AWS 上运行反向 NAT64 是可以接受的。

相关内容