通过 OpenVPN 服务器将端口转发到本地服务器 (Ubuntu 20.04 x64)

通过 OpenVPN 服务器将端口转发到本地服务器 (Ubuntu 20.04 x64)

目标

您好,在解决通过远程 VPS 将端口转发到本地家庭服务器的问题时,我遇到了很大的困难。我想做的是为我和我的好友托管一个 Counter Strike GO 服务器,但让每个人(包括我自己)通过位于德克萨斯州达拉斯的 VPS 进行连接,理论上这会通过 OpenVPN 将请求转发到我的家庭服务器,因为这会均衡我比东海岸的朋友有什么 ping 优势吗?

端口和IP

27005 UDP 出站

27015 TCP 和 UDP 入站和出站主要港口

27020 UDP 入站和出站

51840 UDP 出站

广域网 VPS 45.58.xx.xx

VPN网关10.8.0.1

VPN 客户端 10.8.0.2

问题

所以现在这看起来应该是一个简单的项目,这就是我一开始的想法,但在网上搜索其他论坛帖子并尝试其中许多帖子后,我却空手而归。我的目标是使用iptables以下是我尝试运行的不同命令组合,但没有成功实现我的目标。

sysctl -w net.ipv4.ip_forward=1

iptables -I FORWARD 1 -d 10.8.0.2 -p tcp --dport 27015 -j ACCEPT
iptables -I FORWARD 1 -d 10.8.0.2 -p udp --dport 27015 -j ACCEPT
iptables -I FORWARD 1 -d 10.8.0.2 -p udp --dport 27020 -j ACCEPT

iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p tcp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27020 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 27005 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.2 -p udp --dport 51840 -j SNAT --to-source 10.8.0.1
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27005 -j DNAT --to-dest 10.8.0.2:27005
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p tcp --dport 27015 -j DNAT --to-dest 10.8.0.2:27015
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27015 -j DNAT --to-dest 10.8.0.2:27015
iptables -t nat -A PREROUTING -d 45.58.xx.xx -p udp --dport 27020 -j DNAT --to-dest 10.8.0.2:27020

iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27015 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27020 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27005 -j SNAT --to-source 10.8.0.1
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 51840 -j SNAT --to-source 10.8.0.1

现在,这些 iptable 条目的组合都不起作用,因为当我在本地服务器上运行服务器时,我无法查看在任何这些端口上运行的任何服务或通过我的 CSGO 客户端连接到服务器。另外,在命令集之间,我清除了 iptables,所有这些命令都使用 sudo 运行,并iptables-save运行 afterword。

更多信息

当我运行命令时,ip a这是我从控制台收到的转储。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
    link/void
    inet 127.0.0.1/32 scope host venet0
       valid_lft forever preferred_lft forever
    inet 45.58.xx.xx/32 brd 45.58.xx.xx scope global venet0:0
       valid_lft forever preferred_lft forever
    inet6 2602:ffc5:1f::xx:xxxx/128 scope global
       valid_lft forever preferred_lft forever
    inet6 ::2/128 scope global
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fddd:1194:1194:1194::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::2105:549d:51f6:9a16/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

关于上面的转储,我注意到的一件事是我没有,eth0但我的 WAN 是通过venet0.我不确定这是否会有所作为。

除了这个端口转发废话之外,我还可以连接到 VPN,并且当我连接时,我的本地服务器上确实有互联网连接。

谢谢你!

答案1

解决方案

通常,需要简单的解决方案。最后我的问题是围绕Windows 防火墙展开的。由于某种原因,它不允许我的 CSGO 服务器通过防火墙进行通信。

我所做的就是打开我的服务器exe的防火墙,iptables我使用的命令如下,我从Linux问题:

iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -A FORWARD --in-interface venet0 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -i venet0 -m tcp --dport 27015 -j DNAT --to-destination 10.8.0.2:27015

字面意思就是这样。感谢您阅读我的文章,希望这对将来的其他人有所帮助。

相关内容