我有一个带有两个接口的Crunchbang VM,eth0
和eth1
,每个接口都连接到OpenWRT VM(eth0
being 10.232.64.20
和
eth1
being 10.232.65.20
)。我正在使用网络管理器和DHCP。我的总体目标是建立多个ssh
连接,并与绑定ifenslave
。
默认情况下,eth1
(出于某种原因)是默认网关:
user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1 proto static
10.232.64.0/24 dev eth0 proto kernel scope link src 10.232.64.20
10.232.65.0/24 dev eth1 proto kernel scope link src 10.232.65.20
我为增加了一条路线eth0
:
user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0 proto static metric 1
然后,我有两条路线:
user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1 proto static
default via 10.232.64.1 dev eth0 proto static metric 1
10.232.64.0/24 dev eth0 proto kernel scope link src 10.232.64.20
10.232.65.0/24 dev eth1 proto kernel scope link src 10.232.65.20
但是,ssh
只能通过退出eth1
:
user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out
user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa':
更改eth0
指标后,我有:
user@crunchbang:~$ ip ro
default via 10.232.64.1 dev eth0 proto static metric 1
default via 10.232.65.1 dev eth1 proto static metric 2
10.232.64.0/24 dev eth0 proto kernel scope link src 10.232.64.20
10.232.65.0/24 dev eth1 proto kernel scope link src 10.232.65.20
现在ssh
只能通过eth0
以下方式下车:
user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out
如何强制ssh
使用具有更高度量标准的接口?
编辑
我已经实现并测试了4.2中的配置。Linux Advanced Routing&Traffic Control HOWTO的多个上行链路/提供者的路由。鉴于配置很简单,而且我没有遇到错误,所以我将只显示代码和结果,并提供最少的解释。
root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20 table T0
root@crunchbang:~# ip route add default via 10.232.64.1 table T0
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20 table T1
root@crunchbang:~# ip route add default via 10.232.65.1 table T1
root@crunchbang:~# ip route flush table main
root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20
root@crunchbang:~# ip rule add from 10.232.64.20 table T0
root@crunchbang:~# ip rule add from 10.232.65.20 table T1
root@crunchbang:~# ip route add default scope global nexthop via 10.232.64.1 dev eth0 weight 1 nexthop via 10.232.65.1 dev eth1 weight 1
这是生成的路由表:
root@crunchbang:~# ip route show table T0
default via 10.232.64.1 dev eth0
10.232.64.0/24 dev eth0 scope link src 10.232.64.20
root@crunchbang:~# ip route show table T1
default via 10.232.65.1 dev eth1
10.232.65.0/24 dev eth1 scope link src 10.232.65.20
root@crunchbang:~# ip ro
default
nexthop via 10.232.64.1 dev eth0 weight 1
nexthop via 10.232.65.1 dev eth1 weight 1
10.232.64.0/24 dev eth0 scope link src 10.232.64.20
10.232.65.0/24 dev eth1 scope link src 10.232.65.20
通过这种配置,ssh通过两个接口连接:
user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa':
但是,看来我确实需要丢失网络管理器。如果有人能解释为什么这是一个坏主意或警告陷阱,我将不胜感激。
编辑2
删除网络管理器进行得很顺利。我只有最后一个问题。当前在引导时加载配置的标准方法是什么?
我刚发现4.2。多个上行链路/提供者的路由。我将更新问题以待实施。
—
mirimir 2013年
它有效,所以我将更新我的问题。
—
mirimir
我不知道如何在启动时加载路由,因为这需要root权限。使用脚本执行此操作效果很好,但我希望无需安装即可重启。
—
mirimir