我有一个新的 OpenVPNas 服务器在 CentOS 7 上运行(未与 CentOS 7 结合)。我正在努力更换具有公共静态 IP 的昂贵商业 VPN。由于 OpenVPNas 服务器相当于我的私人 VPN 服务器,我只需要将几个端口转发到静态内部 VPN 地址即可替换商业服务器。
我设置了 VPN 客户端,可以从服务器 ping 到客户端的静态 IP,从静态 IP ping 到服务器的公共 IP 等。
我希望将服务器 IP 上的以下端口转发/NAT/伪装到内部 VPN。
公共 TCP 80 即服务器公共的:80 -> 172.28.28.28:80 公共 UDP 端口 2074-2093 公共 TCP 端口 15425-15427 公共 UDP 端口 5198-5200 公共 TCP 端口 5198-5200
我尝试过不同的route
/iptables
命令,但我还没有找到灵丹妙药。我相信这是一个简单的过程,但解决方案却让我困惑。通过 SSH,服务器可以连接到 VPN 端口 80,我可以通过 VPN 的 Web 界面获取客户端的端口。所以基本路由正在按预期工作。
我无法弄清楚将服务器页面中发往端口 80 的数据包路由到转发的神奇方法
[root@vpn ~]# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 [root@vpn ~]# 路由 -n 内核IP路由表 目标网关 Genmask 标记度量参考使用 Iface 0.0.0.0 209.182.218.1 0.0.0.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 172.27.224.0 0.0.0.0 255.255.252.0 U 0 0 0 as0t0 172.27.228.0 0.0.0.0 255.255.252.0 U 0 0 0 as0t1 172.27.232.0 0.0.0.0 255.255.252.0 U 0 0 0 as0t2 172.27.236.0 0.0.0.0 255.255.252.0 U 0 0 0 as0t3 172.28.28.28 0.0.0.0 255.255.255.255 UH 0 0 0 as0t0 209.182.218.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 [root@vpn ~]# ip路由列表 默认通过 209.182.218.1 dev eth0 169.254.0.0/16 dev eth0 范围链接指标 1002 172.27.224.0/22 dev as0t0 原型内核范围链接 src 172.27.224.1 172.27.228.0/22 dev as0t1 原型内核范围链接 src 172.27.228.1 172.27.232.0/22 dev as0t2 原型内核范围链接 src 172.27.232.1 172.27.236.0/22 dev as0t3 原型内核范围链接 src 172.27.236.1 172.28.28.28 dev as0t0 原始静态 209.182.218.0/24 dev eth0 原型内核范围链接 src 209.182.218.187 [root@vpn ~]# ifconfig as0t0:标志=4305 mtu 1500 inet 172.27.224.1 网络掩码 255.255.252.0 目标 172.27.224.1 inet6 fe80::4da2:53e9:7fba:8f11 prefixlen 64scopeid 0x20 未规范 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200 (UNSPEC) RX 数据包 219 字节 13438 (13.1 KiB) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 250 字节 202093 (197.3 KiB) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 as0t1:标志=4305 mtu 1500 inet 172.27.228.1 网络掩码 255.255.252.0 目标 172.27.228.1 inet6 fe80::d557:1adc:c34c:4954 prefixlen 64scopeid 0x20 未规范 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200 (UNSPEC) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 3 字节 144 (144.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 as0t2:标志=4305 mtu 1500 inet 172.27.232.1 网络掩码 255.255.252.0 目标 172.27.232.1 inet6 fe80::be1a:bfd3:3c25:20f9 prefixlen 64scopeid 0x20 未规范 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200 (UNSPEC) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 3 字节 144 (144.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 as0t3:标志=4305 mtu 1500 inet 172.27.236.1 网络掩码 255.255.252.0 目标 172.27.236.1 inet6 fe80::bfed:3f81:6938:bbc7 prefixlen 64scopeid 0x20 未规范 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 200 (UNSPEC) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 3 字节 144 (144.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 eth0:标志=4163 mtu 1500 inet 209.182.218.187 网络掩码 255.255.255.0 广播 209.182.218.255 inet6 fe80::216:3eff:fecc:ddf3 prefixlen 64 范围 ID 0x20 以太 00:16:3e:cc:dd:f3 txqueuelen 1000(以太网) RX 数据包 11673 字节 1350674 (1.2 MiB) RX 错误 0 丢弃 14 溢出 0 帧 0 TX 数据包 5295 字节 1099520 (1.0 MiB) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 瞧:标志=73 mtu 65536 inet 127.0.0.1 网络掩码 255.0.0.0 inet6 ::1 prefixlen 128scopeid 0x10 Loop txqueuelen 1000(本地环回) RX 数据包 9 字节 748 (748.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 9 字节 748 (748.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0
答案1
假设您的 OpenVPN-AS 已分配给接口的动态或静态公共 IP以太网0,我们在创建防火墙规则时将使用接口名称。这种方式将确保规则在两种情况下都有效。在这种情况下,您需要配置目的NAT
如果您的 VPN 服务器有隧道接口屯0IP 为172.28.28.1以及IP为的内部网络服务器172.28.28.28监听端口80
$ sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d eth0 --dport 80 -j DNAT --to-destination 172.28.28.28
$ sudo iptables -t nat -A POSTROUTING -o tun0 -p tcp -m tcp -d 172.28.28.28 --dport 80 -j SNAT --to-source 172.28.28.1