Як я можу пройти через інший шлюз?


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

Я хотів би, як мінімум, мати можливість пінг-модему2.

* Відредаговано, щоб виправити мою гидоти зловживання нотаціями CIDR та надати чітку інформацію. (Я не думаю, що це належить до суперпользователя.)


Яка конфігурація IP, з якої ви ініціюєте ping?

Відповіді:


12

man ping

ping [hop ...] призначення

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

Тож у вашому випадку:

  • "ping 10.1.1.2 модем" для явного використання першого шлюзу,
  • "ping 10.1.1.1 модем", щоб явно використовувати другий шлюз.

Якщо ви зіткнулися з тією ж проблемою з Windows: ping /? -kце варіант, який ви, мабуть, хочете.

BTW: Наведений вище ping не вимагає жодних привілеїв root. Інформація про маршрутизацію (у вашому випадку: "список бажань") є частиною протоколу ICMP.


1
Це мене не туди заводить. ping -c4 10.1.1.2 192.168.0.1приносить 100% втрати пакету. Я прояснив ситуацію вище.
Люк Шлатер

4
Це насправді не працює взагалі, навіть із root. Я перевіряв це за допомогою під час перегляду tcpdump, і він не робить те, що, на вашу думку, робить.
bahamat

Що станеться, якщо повністю видалити шлюз за замовчуванням? Я досі не розумію ваших налаштувань. Чому ви використовуєте однакову адресу "маршрутизатора" в обох модемах?
Нілс

Обидва модеми контролюються моїми різними провайдерами.
Люк Шлатер

Гаразд - тепер я розумію той самий IP маршрутизаторів. Це підключення за запитом, і ви хочете відмовитися?
Нілс

11

Ні для мене, ping -Nні arpingдля мене не працювало, я нарешті вирішив рішення цієї відповіді :

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

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

Ви можете знайти mac маршрутизатора в локальному кеш-пам'яті ARP:

$ arp -v [gateway ip]

Інструмент також підтримує різні типи ping, як-от --tcpабо --udp.


Дякую за це Ваша пропозиція використовувати nping - це єдиний знайдений нами метод (крім додавання у певному маршруті та використання звичайного бінарного файлу ping) для надсилання ехо-запитів ICMP (pings) до 3-х маршрутизатора резервного копіювання на вимогу (за тестуванням) , щоб переконатися, що він підключений та має реальне підключення до Інтернету після підключення), що досягається націленням на MAC-адресу маршрутизатора при відправці пакетів ICMP, що nping дозволяє зробити. Дуже корисна маленька утиліта!
parkamark

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) або будь-який хост, доступний через (або the) шлюз. Але мати два шлюзи для однієї мережі неможливо.


1
Я мав на увазі 10.1.1.1/24 як скорочення 10.1.1.1 у підмережі 10.1.1.0/24. Вибачте, я більше не використовую цю стенограму, це явно неправильно. У мене все ще є проблема моніторингу - я доклав більше деталей вище. Я не можу вирішити цю проблему, не поставивши кращий маршрутизатор на місце в 10.1.1.2?
Люк Шлатер

2

Використовуйте arping :

# 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]

Це виглядає багатообіцяюче, хоча, мабуть, арпінг iproute2 не збирається його скорочувати ... можливо, мені просто потрібно замінити роутер на те, на що я можу впасти.
Люк Шлатер

1
iproute2Російська arping. Якщо ви використовуєте arping від iproute2робити безплатний АРПС, я запропонував би використовувати send_arpз fakeзамість. Також шлюз повинен бути чимось, що буде пересилати IP-пакети.
bahamat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.