端口转发至后端服务器

端口转发至后端服务器

我在 VPS 上运行一个 openvpn 服务器,使用公共 IP。有一个后端服务器连接到 VPN。这些是 VPN 上的 IP:VPS:10.8.0.1 后端服务器:10.8.0.2。eth0 是公共接口,tun0 是 VPN 接口

现在,我想将后端服务器上的端口 22 转发到 VPS 上的端口 2200。以下是我在 VPS 上执行的操作(基于几个教程和已提出的问题):

  1. 开放2200端口
  2. 启用 IPv4 转发
  3. 将其放入 /etc/ufw/before.rules (是的,我正在使用 ufw 并且它运行正常):

    *自然

    :预路由接受 [0:0]

    :后路由接受 [0:0]

    -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --到目的地 10.8.0.2:22

    -A POSTROUTING -d 10.8.0.2 -p tcp --dport 22 -j SNAT --to-source VPS-public-IP:2200

    -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

  4. 重新加载 ufw 甚至重新启动所有内容...

  5. 尝试了其他解决方案,注释掉一些行(例如上面的第一个 POSTROUTING 规则)。显然没有任何帮助。

输出nmap VPS-public-IP -p 2200显示端口已被“过滤”,当我尝试 ssh 到端口 2200 时,它只是挂起并且什么也不做,我甚至没有收到任何错误 - 当我尝试通过 VPN 从 VPS ssh 到后端服务器时也会发生这种情况(通常可以正常工作)。我遗漏了什么?

答案1

对于那些可能仍在寻找解决方案的人来说。

取决于您的 FORWARD 策略(假设其为 DROP)

iptables -t nat -A PREROUTING -p tcp -d xx.xx.xxx.xxx --dport 80 
         -j DNAT --to-destination yyy.yyy.yy.yy:80
iptables -A FORWARD  -p tcp -d yyy.yyy.yy.yy --dport 80 -j ACCEPT
Result:  x:80 --> X --y:80--> Y

iptables -t nat -A POSTROUTING -p tcp -d yyy.yyy.yy.yy --dport 80
         -j SNAT --to-source xx.xx.xxx.xxx
Result:  x:80 --> X <--y:80--> Y

iptables -A FORWARD  -p tcp -s yyy.yyy.yy.yy --sport 80 -j ACCEPT
Result:  x:80 <--> X <--y:80--> Y

还可以为本地发起的连接添加此规则:x --> x:80

iptables -t nat -A OUTPUT -p tcp --dport 80 -d xx.xx.xxx.xxx
         -j DNAT --to-destination yyy.yyy.yy.yy:80  
Result:       
  x:80 ->- X <--y:80--> Y
     |_____V

相关内容