Как отправить пакет ARP в другую подсеть? - PullRequest
0 голосов
/ 28 февраля 2019

setup image
У меня есть 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) работать первым?

...