J'ai une machine virtuelle Crunchbang avec deux interfaces, eth0
et eth1
chacune d'elles se connecte à une machine virtuelle OpenWRT ( eth0
être 10.232.64.20
et
eth1
être 10.232.65.20
). J'utilise Network Manager et DHCP. Mon objectif global est d'avoir plusieurs ssh
connexions et de les lier ifenslave
.
Par défaut, eth1
(pour une raison quelconque) est la passerelle par défaut:
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
J'ai ajouté un itinéraire pour eth0
:
user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0 proto static metric 1
Ensuite, j'ai deux itinéraires:
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
Cependant, ssh
ne sort que via 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':
Après avoir changé la eth0
métrique, j'ai:
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
Et maintenant ssh
ne sort que via 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
Comment forcer ssh
à utiliser une interface avec une métrique plus élevée?
Éditer
J'ai implémenté et testé la configuration dans la 4.2. Section Routage pour plusieurs liaisons montantes / fournisseurs du HOWTO Linux Advanced Routing & Traffic Control. Étant donné que la configuration est simple et que je n'ai rencontré aucune erreur, je vais simplement afficher le code et les résultats, avec une explication minimale.
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
Voici les tables de routage générées:
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
Avec cette configuration, ssh se connecte via les deux interfaces:
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':
Cependant, il semble que je doive perdre Network Manager. Si quelqu'un pouvait expliquer pourquoi c'est une mauvaise idée, ou avertir des pièges, je l'apprécierais.
Modifier2
La suppression de Network Manager s'est bien passée. J'ai juste une dernière question. Quelle est la méthode standard actuelle pour charger la configuration au démarrage?
la source
Réponses:
Tout d'abord, votre solution au problème est bonne. Deuxièmement, cela dépend du système d'exploitation. Crunchbag est basé sur Debian, donc ces solutions pourraient faire l'affaire:
/server/487939/permanently-adding-source-policy-routing-rules
Sur les systèmes basés sur RHEL, il est également possible d'ajouter
<ifname>-rule
et<ifname>-route
.la source