У меня есть Linux-бокс, работающий в качестве маршрутизатора для моей домашней сети. он имеет 3 таблицы маршрутизации:

# ip route show default
default via 192.168.5.1 dev wlp2s0
172.18.231.140/30 dev wwx0c5b8f279a64  proto kernel  scope link  src 172.18.231.141
192.168.0.0/24 dev enp1s0  proto kernel  scope link  src 192.168.0.110
192.168.1.0/24 dev enp3s0  proto kernel  scope link  src 192.168.1.10
192.168.5.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.5.100

#ip route show table ISP1
default via 192.168.0.1 dev enp1s0
192.168.0.0/24 dev enp1s0  proto kernel  scope link  src 192.168.0.110
192.168.1.0/24 dev enp3s0  proto kernel  scope link  src 192.168.1.10

# ip route show table ISP2
default via 172.18.231.142 dev wwx0c5b8f279a64
172.18.231.140/30 dev wwx0c5b8f279a64  proto kernel  scope link  src 172.18.231.141
192.168.0.0/24 dev enp1s0  proto kernel  scope link  src 192.168.0.110
192.168.1.0/24 dev enp3s0  proto kernel  scope link  src 192.168.1.10

Что обычно происходит, так это то, что все клиенты, которые подключаются к сети, проходят через шлюз по умолчанию, и если я хочу, я добавляю правило ip для соответствия ip и изменяю клиентов для использования таблицы ISP1 или таблицы ISP2.

Теперь я хочу выполнить проверку ping, чтобы увидеть, что моя мобильная сеть "wwx0c5b8f279a64", которая подключена к таблице ISP2, подключена или отключена, но из окна Linux я не могу выполнить проверку ping, потому что Проверка ping проходит по маршруту по умолчанию, то есть через интерфейс "wlp2s0".

Есть ли способ решить эту проблему? Я думаю, что если я смогу направить локальный трафик Linux-бокса в таблицу ISP2, это сработает, но я не могу понять, как направить локальный трафик ящика в таблицу ISP2.

1
slm 13 Июл 2018 в 07:55
Очевидный способ — временно добавить правило, которое активирует таблицу для адреса или диапазона адресов, которые вы хотите пропинговать. Во-вторых, попробуйте привязать (ping -I ...) к устройству, с которого вы хотите выполнить ping, но вам также может понадобиться правило, чтобы это сработало (вы не показали нам свои правила).
 – 
dirkt
13 Июл 2018 в 08:48
Я просто добавляю «ip rule add from ${ip} table ISP2», когда я хочу, чтобы некоторые IP-адреса клиентов изменили шлюз. Я хочу пропинговать 8.8.8.8 (google dns) из локальной коробки через таблицу ISP2, чтобы выяснить, работает ли шлюз.
 – 
Gihan Lasita
13 Июл 2018 в 09:28
1
Затем ip rule add to 8.8.8.8 table ISP2, ping 8.8.8.8, ip rule del to 8.8.8.8 table ISP2. Обратите внимание, что пока правило активно, весь трафик на 8.8.8.8 будет проходить через этот интерфейс, поэтому, если вы на самом деле где-то используете 8.8.8.8 в качестве сервера имен, он может не работать в это время.
 – 
dirkt
13 Июл 2018 в 10:16
Огромное спасибо. это помогло. :) я использую 8.8.8.8 в качестве сервера имен, поэтому я найду другой хост для проверки связи
 – 
Gihan Lasita
13 Июл 2018 в 10:23

2 ответа

Лучший ответ

Очевидный способ — временно добавить правило, которое активирует таблицу для адреса или диапазона адресов, который вы хотите пропинговать:

ip rule add to 8.8.8.8 table ISP2
ping 8.8.8.8
ip rule del to 8.8.8.8 table ISP2

Обратите внимание, что пока правило активно, весь трафик на 8.8.8.8 будет проходить через этот интерфейс, поэтому, если вы на самом деле где-то используете 8.8.8.8 в качестве сервера имен, он может не работать в это время.

1
dirkt 13 Июл 2018 в 10:25

Возможно, здесь может помочь nping (обычно часть nmap)? Из справочной страницы:

--dest-mac mac (Ethernet Destination MAC Address) This option sets the destination MAC address that should be set in outgoing Ethernet frames. This is useful in case Nping can't determine the next hop's MAC address or when you want to route probes through a router other than the configured default gateway. The MAC address should have the usual format of six colon-separated bytes, e.g. 0:50:56:d4:01:98. Alternatively, hyphens may be used instead of colons. Use the word random or rand to generate a random address, and broadcast or bcast to use ff:ff:ff:ff:ff:ff. If you set up a bogus destination MAC address your probes may not reach the intended targets.

2
boojum 13 Июл 2018 в 09:40
Спасибо за комментарий, но, похоже, в моем случае это не работает :(
 – 
Gihan Lasita
13 Июл 2018 в 09:56