GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Le moyen portable d'obtenir l'adresse source de la route par défaut ?

J'ai besoin d'obtenir l'adresse IP utilisée comme source pour les paquets envoyés via le default itinéraire . (EDIT) Veuillez noter que je fais référence au default route, celle marquée comme default dans ip r (voir à la fin pour la route réelle que les paquets prendront sous ma configuration VPN).

Ma première idée était d'utiliser ip r et en déduire ceci :

# ip r
0.0.0.0/1 via 10.0.2.1 dev tun0
default via 10.237.76.1 dev enxb827eb4297a4 src 10.237.77.206 metric 202
10.0.2.0/24 dev tun0 proto kernel scope link src 10.0.2.100
10.81.102.133 via 10.237.76.1 dev enxb827eb4297a4
10.237.76.0/22 dev enxb827eb4297a4 proto kernel scope link src 10.237.77.206 metric 202
128.0.0.0/1 via 10.0.2.1 dev tun0

Ça avait l'air bien, un ip r | grep default | cut -d" " -f7 m'a donné le 10.237.77.206 attendu .

Ensuite, sur un autre système (les deux sont des dérivés de Debian), j'ai obtenu

# ip r
0.0.0.0/1 via 10.0.2.1 dev tun0
default via 10.237.76.1 dev eth0  metric 202
10.0.2.0/24 dev tun0  proto kernel  scope link  src 10.0.2.5
10.81.102.133 via 10.237.76.1 dev eth0
10.237.76.0/22 dev eth0  proto kernel  scope link  src 10.237.76.56  metric 202
128.0.0.0/1 via 10.0.2.1 dev tun0

Ici, la solution n'est pas aussi simple :j'ai besoin d'extraire l'IP de la route par défaut (10.237.76.1 ), faites-le correspondre à la route appropriée (10.237.76.0/22 dev eth0 proto kernel scope link src 10.237.76.56 metric 202 ) qui, espérons-le, inclura le src .

En fin de compte, couper de la sortie de ip ne tiendra pas la route à long terme (changements de sortie, variations de sortie entre distributions ou versions, …)

Existe-t-il un moyen plus portable d'obtenir cette adresse IP ?

Par "portable", j'entends :

  • idéalement "fonctionne sur n'importe quel Linux"
  • moins idéalement mais toujours bon "fonctionne sur Debian et ses dérivés"

Veuillez noter que l'appareil est dans un VPN exclusif, je ne peux donc pas analyser directement l'itinéraire réel que le paquet empruntera lorsque le VPN sera opérationnel (c'est-à-dire la plupart du temps) :le default route est masquée par deux autres routes, qui couvrent effectivement toute la plage IP. Veuillez me corriger si je me trompe ici.

Réponse acceptée :

Vous pouvez choisir une adresse arbitraire qui, selon vous, sera toujours accessible via la route par défaut, par exemple Google DNS, puis imprimer l'adresse source pour ce itinéraire :

ip route get 8.8.8.8 | awk '{ for (nn=1;nn<=NF;nn++) if ($nn~"src") print $(nn+1) }'

Linux
  1. Comment changer le shell par défaut sous Linux

  2. Obtenir l'adresse IP d'une interface sous Linux

  3. Python :obtenir la passerelle par défaut pour une interface locale/adresse IP sous Linux

  4. Le meilleur moyen d'obtenir l'identifiant de la machine sous Linux ?

  5. Obtenir la valeur actuelle/par défaut de TCP initcwnd sous Linux

Comment obtenir la taille d'un répertoire sous Linux

Comment trouver/obtenir votre adresse IP sous Linux

4 sessions vidéo pour l'administrateur système Linux

Comment changer le shell par défaut dans le système Linux

Comment obtenir votre adresse IP sous Linux

Obtenir une adresse IP sous Linux :découvrez les nombreuses façons