Как отправить пакет ARP в другую подсеть?
У меня есть 2 пары настроек.
1. OpenSuse(A) и Opensuse(B)
2. OpenSuse(C) и Centos(D)
У меня есть 3 интерфейса в обеих установках, все они связаны между собой. первая пара имеет eth0,eth1,eth2, а вторая пара имеет eth0,eth1,eth2. IP-адреса, назначенные интерфейсам, следующие:
Первая пара
- Opensuse eth0-172.28.215.10 / 24, eth1-20.1.121.2 / 24, eth2-30.1.121.2 / 24
- Opensuse eth0-172.28.215.11 / 24, eth1-20.1.121.3 / 24, eth2-30.1.121.3 / 24
Вторая пара
- Opensuse eth0-172.28.215.20, eth1-21.1.121.2, eth2-31.1.121.2
- Centos eth0-172.28.215.21, eth1-21.1.121.3, eth2-31.1.121.3
172.28.215.1 является шлюзом для eth0. Здесь нет шлюзов для eth1 и eth2. И между AB и CD нет кабеля, связанного с eth1 и eth2, а только eth0. то есть eth1 и eth2 связаны между A&B, но не между A&C или A&D.
В первой паре (A&B):
20.1.121.2 --> 20.1.121.3 -- works fine
20.1.121.2 --> 30.1.121.3 -- works fine
30.1.121.2 --> 20.1.121.3 -- works fine
30.1.121.2 --> 30.1.121.3 -- works fine
и другой способ также работает отлично. Более того, я мог бы посылать пакеты ARP между различными подсетями. Я не знаю, как это случилось. Может быть, arptables настроен так, я новичок в концепции arptables.
Где, как во второй паре (C&D)
21.1.121.2 --> 21.1.121.3 -- works fine
21.1.121.2 --> 31.1.121.3 -- doesn't work
31.1.121.2 --> 21.1.121.3 -- doesn't work
31.1.121.2 --> 31.1.121.3 -- works fine
Сценарий, в котором пакеты не отправляются, находится между различными подсетями. Вот что происходит (в отношении arp и маршрутов):
21.1.121.2 -> 21.1.121.3 ==> arp request was sent from C and arp response came from D and the packet was sent perfectly on eth1.
21.1.121.2 -> 31.1.121.3 ==> arp request was sent from C and arp response never came from D so, the packet was not sent.
Теперь то, что делает его более интересным, - это передача пакетов из D в C:
21.1.121.3 -> 21.1.121.2 ==> arp request was sent from D and arp response came from C and the packet was sent perfectly on eth1.
31.1.121.3 -> 21.1.121.2 ==> arp request was never sent from D. Instead the packet was sent on eth0.
К вашему сведению: я мог видеть все это в захвате пакетов tshark/tethereal. и я очистил кеш arp перед этим. Я решил, что пакеты отправлены и получены на основе MAC-адресов. Пакеты, которые мы отправляли, являются пакетами SIP. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Теперь вопрос в том, почему эта разница и что я должен сделать, чтобы вторая пара (в основном на машине D) работала как первая?