我在办公室的 linux 电脑:
> uname -a
Linux 3.2.0-2-686-pae #1 SMP Tue Mar 20 19:48:26 UTC 2012 i686 GNU/Linux.
它有 2 个 ISP,第一个是静态 IP 和默认路由:
> ip ro
default via 19.11.20.15 dev vlan40
19.11.20.0/27 dev vlan40 proto kernel scope link src 19.11.20.20
第二个是 gprs 调制解调器。我在没有默认路由的情况下调用 wvdial:
> ip ro
10.64.64.64 dev ppp0 proto kernel scope link src 10.68.173.91
其次,我家里的电脑在另一个网络上有公共 IP,但并不总是打开。他的配置非常相同,debian linux。
我的任务是通过 ssh 访问第一台计算机,即使第一台 isp 失败。
今天我使用了如下命令:
ip ro add 46.48.10.56 via 10.64.64.64
while true ; do ssh -R2221:127.0.0.1:22 [email protected]; done
之后,我可以ssh -p 2221 127.0.0.1
通过带有调制解调器的第二个 isp 连接到办公室。
它很好,但是又慢又贵,因为我在这两台计算机之间不仅使用 ssh,还使用 vnc、http 等。
这就是为什么我想将 ISP1 用于除 ssh 之外的任何东西,而将 ISP2 用于 ssh。
可能吗?
您需要将防火墙标记与策略路由一起使用。首先创建一个通过 ISP2 路由的新路由表:
(第一个命令只需要运行一次。)然后添加路由策略规则以将此新表用于具有特定防火墙标记的数据包:
最后,使用 iptables 标记要特别路由的数据包:
编辑:我不确定是否有更好的方法来执行此操作,但我需要获取按端口路由的 NAT 数据包: