19

В нашей сети есть два модема, каждый из которых скрыт за маршрутизатором. Основной маршрутизатор находится на 10.1.1.1, резервный маршрутизатор на 10.1.1.2, и оба настроены на подсеть 10.1.1.0/24. Оба маршрутизатора настроили свой шлюз на 192.168.0.1. Тем не менее, 192.168.0.1, который вы видите, если ваш шлюз 10.1.1.1, отличается от машины 192.168.0.1, которую вы видите, если ваш шлюз 10.1.1.2.

Мой Nagios сервер настроен соответственно:

auto eth0
iface eth0 inet static
address 10.1.1.10
netmask 255.255.255.0
gateway 10.1.1.1

Итак, чтобы быть ясно: здесь есть четыре шлюза. Маршрутизатор 1 (10.1.1.1) Маршрутизатор 2 (10.1.1.2) Модем 1 (192.168.0.1) Модем 2 (192.168.0.1)

Вот иллюстрация того, что я могу сделать вручную, чтобы проверить состояние двух модемов:

ping -c4 192.168.0.1 # Is Modem1 up? 
ip route add via 10.1.1.2
ip route change default via 10.1.1.2
ping -c4 192.168.0.1 # Is Modem2 up?
wget 192.168.0.1 # yields expected control webpage for Modem2
ip route change default via 10.1.1.1
ip route del default via 10.1.1.2
wget 192.168.0.1 # Connection refused; Modem1 has no web interface
ssh adminuser@192.168.0.1 # I can log in to Modem1 and check status

Я хотел бы как минимум, чтобы иметь возможность пинговать Modem2.

* Отредактировано для исправления моего отвратительного неправильного использования нотации CIDR и предоставления четких деталей. (Я не думаю, что это принадлежит суперпользователю.)

4 ответа4

12

man ping

пинг [хоп ...] пункт назначения

Таким образом, вы можете указать в качестве параметра ping количество IP-адресов, разделенных пробелом. Последний адрес будет "проверен"; предыдущие параметры определяют маршрут, который должен пройти ping.

Итак, в вашем случае:

  • «ping 10.1.1.2 модем» для явного использования первого шлюза,
  • «ping 10.1.1.1 модем» для явного использования второго шлюза.

Если вы столкнулись с той же проблемой с Windows:ping /? -k это вариант, который вы, вероятно, хотите.

Кстати: приведенный выше пинг не требует никаких привилегий root. Информация о маршрутизации (в вашем случае: "список желаний") является частью протокола ICMP.

10

Ни ping -N ни arping работали для меня, я наконец-то остановился на решении из этого ответа:

Вы можете использовать инструмент nping из пакета nmap :

# nping --icmp --dest-mac [gateway mac] [target ip]

Вы можете найти mac вашего роутера в вашем локальном ARP-кэше:

$ arp -v [gateway ip]

Инструмент также поддерживает различные типы ping, такие как --tcp или --udp .

2

Извините, у вас может быть только один шлюз по умолчанию . Вы можете иметь несколько шлюзов, но только один для каждой сети.

Проблема в том, что оба упомянутых IP-адреса находятся в одной сети. Также вы неправильно указали свои CIDR: вы имели в виду 10.1.1.0/24 как имеющую подсеть 255.255.255.0; или даже иметь большую подсеть, например, 10.0.0.0/8 как 255.0.0.0.

Поэтому вы можете пропинговать любой хост в вашей сети (10.0.0.0/8) или любой хост, доступный через (или) шлюз. Но иметь два шлюза для одной сети невозможно.

2

Используйте арпинг:

# arping -c 1 -S [source_ip] -T [target_remote_ip] [gateway_mac_address]

Куда:

  • source_ip - это IP-адрес, локально назначенный на вашем хосте.
  • target_remote_ip - это IP-адрес, который вы хотите пропинговать
  • gateway_mac_address - эфирный адрес уровня 2 альтернативного шлюза, который вы хотите использовать

В качестве альтернативы, если вы используете какую-либо форму Solaris, вы можете использовать:

ping -N [gateway_ip] [target_remote_ip]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .