私はCrunchbang VMに2つのインターフェースeth0
とeth1
があり、それぞれがOpenWRT VM(eth0
は10.232.64.20
であり、eth1
は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 [email protected]
ssh: connect to Host 1.2.3.4 port 22: Connection timed out
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
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 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
ssh: connect to Host 1.2.3.4 port 22: Connection timed out
より高いメトリックを持つインターフェースを使用するようにssh
を強制するにはどうすればよいですか?
編集
Linux Advanced Routing&Traffic Control HOWTOの 4.2。複数のアップリンク/プロバイダーのルーティング セクションで設定を実装してテストしました。構成が単純で、エラーが発生しなかったので、最小限の説明でコードと結果のみを表示します。
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 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
ただし、Network Managerを失う必要があるようです。それが悪い考えである理由を誰かが説明できるか、落とし穴を警告できるなら、私はそれを感謝します。
Edit2
Network Managerの削除はうまくいきました。最後の質問があります。起動時に設定をロードする現在の標準的な方法は何ですか?
まず、問題の解決策は優れています。第二に、それはOSに依存します。 Crunchbagはdebianベースであるため、このソリューションで十分なことができます。
https://serverfault.com/questions/487939/permanently-adding-source-policy-routing-rules
RHELベースのシステムでは、<ifname>-rule
および<ifname>-route
を追加することもできます。