より高いメトリックを持つ2番目のインターフェースをsshに使用させるにはどうすればよいですか?


9

私は2つのインタフェースをCrunchbang VMを有し、eth0かつeth1、(各OpenWrtのVMにそのコネクトのeth0ある10.232.64.20eth1されます10.232.65.20)。Network Managerと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

次に、2つのルートがあります。

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': 

ただし、Network Managerを失う必要があるようです。それが悪い考えである理由を誰かが説明したり、落とし穴を警告したりできれば、私はそれを感謝します。

編集2

Network Managerの削除はうまくいきました。最後の質問があります。起動時に設定をロードする現在の標準的な方法は何ですか?


4.2を発見しました複数のアップリンク/プロバイダーのルーティング。実装待ちの質問を更新します。
mirimir 2013年

うまくいったので、質問を更新します。
mirimir 2013年

ルート権限が必要なため、起動時にルーティングをロードする方法がわかりません。スクリプトでそれを行うことはうまくいきますが、私はセットアップなしで再起動できるほうがいいです。
mirimir 2013年

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.