Назад | Перейти на главную страницу

Как заставить хост не отправлять широковещательную рассылку для IP-адреса в собственной подсети?

Для локальной сети вместо коммутатора я построил топологию, в которой каждая машина подключена к маршрутизатору. Каждому хосту назначается IP-адрес от 10/8. Вот подробности интерфейса:

Допустим, я пингую 10.16.0.3 с этого хоста. Таблица маршрутизации 10.16.0.2 была настроена на использование маршрутизатора (10.16.0.1) в качестве шлюза по умолчанию. Но поскольку IP-адрес назначения (10.16.0.3) находится в той же подсети, он отправляет широковещательное сообщение ARP. Я хочу отключить это поведение отправки широковещательной передачи ARP и вместо этого заставить его использовать таблицу маршрутизации. Как мне этого добиться?

Этого можно добиться двумя способами. Первое очень ненормально и может вызвать странности, поэтому второе лучше.

Метод 1 (НЕ рекомендуется)

Типичная таблица маршрутизации выглядит примерно так:

% ip route
10.23.11.0/24 dev wlan0  proto kernel  scope link  src 10.23.11.209
default via 10.23.11.1 dev wlan0  proto static 

Это сообщает ядру, что пункты назначения в 10.23.11.0/24 напрямую подключены к wlan0, а все остальное должно проходить через маршрутизатор в 10.23.11.1. Это первый маршрут, который сообщает ядру выполнить ARP-запрос и напрямую отправить пакет. Если вы его удалите, то все должно идти через роутер. Однако этот маршрут настроен по умолчанию, поэтому вам нужно явно его где-то удалить. Ваша конечная таблица маршрутизации должна выглядеть примерно так:

% ip route
default via 10.23.11.1 dev wlan0  proto static 

Способ 2 (рекомендуемый)

Лучше всего разместить каждую машину в отдельной подсети, чтобы каждая подсеть была доменом Ethernet (как обычно и должно быть). Вы можете сделать это, выделив каждой машине подсеть / 30, а маршрутизатор будет использовать один из этих IP-адресов. Ваша сеть будет выглядеть примерно так:

(machine1) 10.0.0.2/30   <------->  10.0.0.1/30 (router) 10.0.0.5/30  <-------->  10.0.0.6/30 (machine2)