OpenVPNAS 服务器上的 IPTables 和端口转发

OpenVPNAS 服务器上的 IPTables 和端口转发

我有一个新的 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

相关内容