我已经看过这里并相信这是在正确的轨道上,尽管我仍然无法让它工作:端口转发到 VPN 客户端?
我有一个 vps,在该 vps 上我使用 openVPN。我与服务器有连接,并且我已经确定了本地客户端 IP 和服务器 IP。
但是,当我尝试连接时,它仍然失败。我不太确定此时我可能做错了什么。我尝试过不同的配置,但没有成功。
我当前的设置:
1. sysctl -w net.ipv4.ip_forward=1
2. iptables -t nat -A PREROUTING -d 50.xxx.xxx.xxx -p tcp --dport 32400 -j DNAT --to-dest 172.27.232.2:32400
3. iptables -t nat -A POSTROUTING -d 172.27.232.2 -p tcp --dport 32400 -j SNAT --to-source 172.27.224.1
50.xxx.xxx.xxx是我的VPS的公共IP。我省略了其余部分,所以这就是为什么有 x。
172.27.232.2 是 VPS 本地的客户端 IP。我从 VPS 进行了测试,连接到该本地地址上的任何内容都没有问题。
172.27.224.1 是 VPS 的本地 IP,我已经从客户端进行了测试,连接到服务器上的任何内容都没有问题。
目标是能够连接到 VPS 的公共 IP,并将其转发到客户端,以便我可以远程访问 plex 服务器(无法正常转发端口)
我也尝试过
iptables -t nat -A POSTROUTING -d 172.27.232.2 -p tcp --dport 32400 -j SNAT --to-source 172.27.224.1:32400
而不是我在 3 中列出的内容。是否有一些简单的事情我做错了?谢谢。
编辑:我也愿意尝试不同的解决方案,但这对我来说似乎是最明智的选择。我确实得到了一个 SSH 隧道来工作并做我想做的事情,但是...tcp over tcp 非常慢。所以这并不是一个真正的选择。
答案1
我使用的是 OpenVPN 访问服务器,而不是旧的开源 OpenVpn 软件。我相信我的路由被访问服务器阻止了。
OpenVPN(访问服务器)拥有自己的最新软件系统,可以为您处理所有这些网络事务。您不再需要使用 iptables 进行端口转发。用户权限 -> 更多设置 -> DMZ 设置 -> 输入 VPS 公网 ip 和端口。然后使用该用户帐户进行连接。它会自动转发所有内容。
答案2
首先,你不需要SNAT
实现你的目标。使此工作正常进行的步骤如下:
sysctl -w net.ipv4.ip_forward=1
(虚拟专用网)iptables -t nat -A PREROUTING -d 50.xxx.xxx.xxx -p tcp --dport 32400 -j DNAT --to-dest 172.27.232.2:32400
(虚拟专用网)iptables -t filter -A FORWARD -p tcp -d 172.27.232.2 --dport 32400 -j ACCEPT
(虚拟专用网)- 更改默认网关(家庭计算机),以便
172.27.224.1
数据包返回VPN
- (如果你的家用电脑上有linux)
iptables -t filter -A INPUT -p tcp -d 172.27.232.2 --dport 32400 -j ACCEPT
(家用电脑)
IPs
之后确保 Plex 服务不仅监听该端口上的所有端口localhost, 127.0.0.1