LINUX.ORG.RU
решено ФорумAdmin

Сentos 5 - ARP возвращает не тот MAC-адрес

 ,


0

1

В виртуалку Centos 5 (vmware workstation) проброшены 2 железных ethernet контроллера. Каждый из них в отдельной несвязанной eth сети (два свича). Есть комп ПК в одной из сетей (eth0).

    +--------+
    |        |
    |   ПК   |
    |        |
    +--------+
    | IP=B.1 |
    +----+---+
         |
         |
+--------+---------+-----+
                   |
                   |
                   |       +-------+------------+
                   |               |
                   |               |
                   |               |
               +---+----+     +----+---+
               |MAC=AA22|     |MAC=BB22|
               |        |     |        |
               |        |     |        |
               | IP=A.2 |     | IP=B.2 |
               +--------+-----+--------+
               |  eth0            eth1 |
               |                       |
               |   Сервер Centos 5     |
               +-----------------------+

Если ПК назначить IP=B.1, соответствующий ip-подсети из другой eth-сети (т.е. B.1 и B.2 - формально одна ip-подсеть, A.2 - другая), затем пингануть (или явно запросить arp) B.1, то в таблице arp -ne появится запись о том, что адресу B.2 соответствует MAC AA22. (пинг, конечно, не проходит, так и надо, естественно)

Считаю это поведение неправильным, B.1 никак не должен узнавать о мак-адресе B.2 (его значение BB22), т.к. они находятся в разных eth-сетях, и тем более, не должен получать чужой AA22! Почему то сетевая подсистема centos считает возможным на арп-запрос передать мак с соседнего интерфейса. Как это исправить?

Vmware тут не причем, поэтому опускаю на рисунке. Винда, установленная вместо центоси в ту же вмварю с теми же проброшенными сетевыми адаптерами не транслировала мак-адрес с соседнего интерфейса, и пинг B.2 с ПК не заполнял arp таблицу ничем.

Deleted

Последнее исправление: Deleted (всего исправлений: 4)
 $ cat /proc/sys/net/ipv4/conf/*/proxy_arp
0
0
0
0
0

И установка в 1 не влияет. Такое ощущение, что еще должна быть одна ручка для выключения этого proxy_arp

Deleted
()

(т.е. B.1 и B.2 - формально одна ip-подсеть, A.2 - другая)
(пинг, конечно, не проходит, так и надо, естественно)

А вы уверены что с дизайном вашей сети всё в порядке?

snaf ★★★★★
()

B.1, то в таблице arp -ne появится запись о том, что адресу B.2 соответствует MAC AA22

так и должо быть

snaf ★★★★★
()
Ответ на: комментарий от snaf

Меня это повергло в замешательство. И еще большее - то, что это не могу отключить, ручки из документации не работают. То, как оно по дефолту работает может иногда провоцировать проблемы. Даже в документации это указано (networking/ip-sysctl.txt):

The kernel can respond to arp requests with addresses from other interfaces. ... Only for more complex setups like load does this behaviour cause problems.

Но установка упомянутого параметра не влияет на поведение

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Решение такое: rp_filter=1, arp_ignore=1, arp_announce=2

sysctl net.ipv4.conf.all.rp_filter=1
sysctl net.ipv4.conf.all.arp_ignore=1
sysctl net.ipv4.conf.all.arp_announce=2

В данной комбинации сработало

см. https://bugzilla.redhat.com/show_bug.cgi?id=168960

https://web.archive.org/web/20121108212041/http://blog.steve-miller.org/2010/...

http://robertlathanh.com/2009/08/two-subnetworks-on-one-lan-and-linux-arp_fil...

https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.