通过 VPN 仅路由 ssh 流量

Jua*_*llo 7 ssh routing remote-management vpn

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

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

jof*_*fel 3

我的答案与相关但更复杂的问题的答案相关,并且未经测试。

您需要iproute2安装该软件包。

添加到/etc/iproute2/rt_tables行中

200 vpn-route
Run Code Online (Sandbox Code Playgroud)

然后编写一个在 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
Run Code Online (Sandbox Code Playgroud)

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

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