仅通过 VPN 路由 ssh 流量

仅通过 VPN 路由 ssh 流量

是否可以通过 VPN 连接路由计算机的 SSH 服务,但允许所有其他数据通过 WAN 地址退出?需要使用什么样的 iptables 魔法才能实现这一目标?

SSH 数据 → 通过 VPN
所有其他数据 → 通过默认路由

答案1

我的回答与相关但更复杂的问题的答案并没有经过测试。

您需要iproute2安装该软件包。

添加到/etc/iproute2/rt_tables

200 vpn-route

然后编写一个在 VPN 初始化后调用的脚本:

# set default gateway of vpn-route
ip route add default via $VPNGATEWAY dev $VPNINTERFACE table vpn-route
# use this for marked packages
ip rule add fwmark 0x1 table vpn-route
# mark outgoing ssh packages
iptables -t mangle -A OUTPUT -o $WANINTERFACE -p tcp --dport 22 -j MARK --set-mark 1
# rewrite source address
iptables -t nat -A POSTROUTING -o $VPNINTERFACE -j MASQUERADE

当然,您需要将$...变量替换为其实际值。

PS:如果您的WAN接口上的IP是固定的,您可以将最后一行替换为 iptables -A POSTROUTING -t nat -o $WANINTERFACE -p tcp --dport 22 -j SNAT --to $WANIP

答案2

如果您想通过 VPN 使用 ssh 连接到服务器,因为您的公司需要 VPN 连接来访问服务器,那么还有另一种方法可以绕过 VPN。首先,您需要使用 VPN 连接到您的服务器。然后,开始恩格罗克打开反向 ssh(这是正确的术语吗?)

ngrok tcp 22

这将为您提供一个地址和端口。它通常看起来像这样:0.tcp.eu.ngrok.io:12345。现在,您可以使用上述地址和端口停止 VPN 和 ssh 到您的服务器。

ssh [email protected] -p 12345

相关内容