
Я был так запутан в своей конфигурации.
На моем сервере есть 2 интерфейса:
eth0: 192.168.1.22 gw 192.168.1.1
eth2: 10.2.1.6 gw 10.2.1.1
Я написал статический маршрут:
ip r a 8.8.8.8 via 192.168.1.1
worked great!!
then I deleted it and
ip r a 8.8.8.8 dev eth0
From 192.168.1.22 icmp_seq=1 Destination Host Unreachable
Почему?????
решение1
Во второй форме ( ip r a 8.8.8.8 dev eth0
) вы не указали шлюз, так на какой маршрутизатор следует перенаправить пакет? Не зная никаких шлюзов, ваш сервер просто отвечает "Destination Host Unreachable".
Указание интерфейса может быть полезно по двум причинам:
- если удаленный хост маршрутизируется через тот же шлюз, сам по себе доступен надваразличные интерфейсы, вы можете создать два разных маршрута с разными
dev
для одного и того же шлюза. Затем вы можете установить приоритет между двумя маршрутами черезmetric
или использоватьМаршрутизация ECMPдля достижения некоторой балансировки нагрузки; - для интерфейсов «точка-точка» (например, интерфейсы VPN или tun), где весь трафик «перехватывается» указанным интерфейсом (шлюз не важен)
решение2
ip r a 8.8.8.8 dev eth0
означает "8.8.8.8 напрямую подключен к интерфейсу eth0". Ядро Linux пытается разрешить MAC-адрес 8.8.8.8 с помощью запроса ARP, не получает ответа и сообщает об ошибке "Destination Host Unreachable"