как найти шлюз, используемый для маршрутизации

45

Это в среде Unix. У меня есть несколько маршрутов на хосте (отображается командой ip route show). Если я пингую адрес, как я могу узнать, какой шлюз использовался для маршрутизации трафика?

Я попытался использовать команду traceroute, но она не показывает непосредственный шлюз.

Вывод снизу, 10.58.227.1 - мой шлюз по умолчанию.

# ip r l
10.58.227.0/24 dev front_eth1  proto kernel  scope link  src 10.58.227.231
169.254.0.0/17 dev bond0  proto kernel  scope link  src 169.254.0.4
default via 10.58.227.1 dev front_eth1  proto gated

Когда я выполняю трассировку на внешний адрес, используемый шлюз (шлюз по умолчанию 10.58.227.1) не отображается в выходных данных.

# traceroute -n -I 10.63.21.118
traceroute to 10.63.21.118 (10.63.21.118), 30 hops max, 40 byte packets
 1  10.58.112.1  0.507 ms  1.008 ms  1.017 ms
 2  10.63.21.118  0.228 ms  0.233 ms  0.234 ms

Есть ли возможность просмотреть ту же информацию, которая указана командой traceroute, включая шлюз, используемый для маршрутизации?


источник

Ответы:

73

Вы можете использовать ip route get <address>команду, чтобы попросить ядро ​​сообщить маршрут, который он использовал бы для отправки пакета на указанный адрес:

$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0  src 192.168.0.121 
    cache 
$ 

192.168.0.1мой маршрут по умолчанию Если я попрошу адрес, который не будет идти по маршруту по умолчанию:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 
sarnold
источник
Так много. :) Это решает проблему.
Случайный вопрос - если 192.168.0.1это «маршрут по умолчанию» или «шлюз» ... какое имя будет использоваться для обозначения 192.168.0.121? Просто "источник"?
dtmland
@sarnold, пожалуйста, подтвердите, нужен ли интернет на этом сервере.
kd12
@ kd12 вам нужно только подключение к Интернету на этом сервере, если вы хотите направить пакеты в Интернет. Вы можете настроить IP-сети без подключения к Интернету, если хотите; таблицы маршрутизации не знают и не заботятся, все работает одинаково. :)
sarnold