Как запретить Linux отбрасывать входящие пакеты с неправильным MAC-адресом (неразборчивый не работает)

Я настроил три машины в статическом режиме proxy_arp:

----------------------+   +-----------------------------------------------+   +----------------------
    Machine A         |   |                   Machine B                   |   |     Machine C
----------------------+   +-----------------------------------------------+   +----------------------
                  eth0|---|tap0                                       tap1|---|eth0  
mac: 52:54:00:12:34:56|   |mac: b6:e0:11:97:fd:5f   mac: 36:46:74:b1:92:71|   |mac: 52:54:00:22:22:22
   ip: 192.168.12.2/24|   |ip: 0.0.0.0                         ip: 0.0.0.0|   |ip: 192.168.12.4/24
                      |   |promisc up                           promisc up|   |

Machine A:
arp -i eth0 -s 192.168.12.4 b6:e0:11:97:fd:5f

Machine C:
arp -i eth0 -s 192.168.12.2 36:46:74:b1:92:71

Machine B:
echo 1 > /proc/sys/net/ipv4/ip_forward
route add 192.168.12.4 dev tap1
route add 192.168.12.2 dev tap0

С этой конфигурацией я могу успешно пропинговать 192.168.12.4 с машины A.

Вопрос в том, заменю ли я статический маршрут arp на машина C с:

arp -i eth0 -s 192.168.12.2 22:22:22:22:22:22

Почему перестает работать? ответ ping получен tap1 на машине B (отображается на wirehark), но по какой-то причине, хотя tap1 является беспорядочным режимом, пакет не передается на уровень IP и не пересылается на tap0, как должен!

Знаете ли вы, какой компонент ядра отвечает за отбрасывание такого входящего пакета на основе MAC-адреса назначения, даже если интерфейс находится в беспорядочном режиме?

1
задан 30 December 2015 в 02:12
1 ответ

Сетевой уровень получает пакет для MAC 22:22:22:22:22, но так как MAC-адрес не принадлежит tap1, пакет игнорируется. Установка интерфейса на promiscuous не отключает эту проверку, а только переносит ее на более поздний уровень в сетевом коде.

Пересылка пакетов, которые имеют MAC назначение, отличное от интерфейса, на котором получен пакет, называется bridging (мостом). Если вы пересылаете пакеты по мосту через машину B, вы сможете настроить машины A и C обычно без статических ARP маршрутов, и кажется, что это то, что вы хотите сделать.

.
1
ответ дан 3 December 2019 в 23:54

Теги

Похожие вопросы