我有一台运行 OpenVPN 网关和 ufw 的 Ubuntu 14 服务器。我们将其称为服务器 A。
我为永久连接的服务器(服务器 B)预留了一个 IP。它始终连接到 OpenVPN 并获取 IP 10.8.0.10。
我需要将服务器 A 上端口 5010 的连接转发到服务器 B 的端口 22(SSH)。
我在 before.rules 中有以下内容:
# NAT table rules
*nat
:PREROUTING ACCEPT [0:0]
# Route SSH to archimedes
-A PREROUTING -p tcp -i eth0 --dport 5010 -j DNAT --to-destination 10.8.0.10:22
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o tun0 -j MASQUERADE
# END OPENVPN RULES
COMMIT
DEFAULT_FORWARD_POLICY="ACCEPT"
已设置在/etc/default/ufw
net.ipv4.ip_forward=1
已设置在/etc/ufw/systl.conf
如果我通过 SSH 进入服务器并尝试从它直接通过 SSH 连接到 10.8.0.10(服务器 B 在 tun0 接口上的 VPN 分配的 IP),我可以正常连接。
任何尝试连接到服务器 A 的端口 5010 的操作都会因超时而失败。我错过了什么?
答案1
- 为什么不直接使用 VPN 连接,而要使用预先路由的魔法?
- 如果您无法使用 VPN 连接,那么最好
ProxyCommand
在文件中进行 SSH 配置~/.ssh/config
以直接连接到 VPN(如果您不知道如何执行此操作,则需要另一个问题) - 您的 VPN 是否对多个网络有更多路由策略?我们需要更多详细信息来查看是否有更多路由策略可能是问题的根源。使用 iptables 检查:
sudo iptables -L -t nat
并检查预路由策略是否已应用。