MaLblsH Posted August 4, 2014 · Report post Приветствую, коллеги! Недавно подключились к DE-CIX и буквально через пару дней получили от них уведомление: Good morning, please disable gratuitous arp on your DE-CIX port. You're still going to announce ip addresses towards the DE-CIX peering VLAN which should not be seen there; namely Далее перечислены все наши интерфейсы на маршрутизаторе. В качестве маршрутизатора на стыке в ними у нас стоит Linux Debian 6.0.3: # uname -r 2.6.33.20 Гугление по gratuitous arp вывело на это: arp_notify - BOOLEAN Define mode for notification of address and device changes. 0 - (default): do nothing 1 - Generate gratuitous arp requests when device is brought up or hardware address changes. arp_accept - BOOLEAN Define behavior for gratuitous ARP frames who's IP is not already present in the ARP table: 0 - don't create new entries in the ARP table 1 - create new entries in the ARP table Both replies and requests type gratuitous arp will trigger the ARP table to be updated, if this setting is on. If the ARP table already contains the IP address of the gratuitous arp frame, the arp table will be updated regardless if this setting is on or off. С accept понятно, отвечает за приём. А вот notify проверил: # cat /proc/sys/net/ipv4/conf/*/arp_notify 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 На всякий случай проверил и accept (тоже всё по нулям). Уже несколько часов пытаюсь tcpdump'ом поймать данные самообращенные широковещательные ARP-запросы. Только стандартный who-has. Пока не нашёл ни одного с одинаковыми souce и destination. Прочитал, что данный ARP генерируется при назначении IP-адреса интерфейсу, проверяя тем самым отсутствие конфликта IP. Пробовал удалять IP-адрес у интерфейса и добавлять - в tcpdump тишина (смотрел как с фильтром по ARP так и без). Прочитал, что некоторые процессы могу генерировать данный ARP-запрос. У нас стоит только QUAGGA и используется 2 демона: bgpd ну и zebra, но гугление в эту сторону не даёт никакого результата. Не могу понять, где я что упустил. Уже появляется дурные мысли по блокировке на L2 выше с помощью ACL этих ARP. Уж очень не хочется, чтобы товарищи немцы отправили нас в карантинный VLAN. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted August 4, 2014 · Report post avahi работает? вообще, список процессов покажите. systemd есть?(его нет по дефолту в deb6) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MaLblsH Posted August 4, 2014 · Report post avahi работает? вообще, список процессов покажите. systemd есть?(его нет по дефолту в deb6) Нет ни одного ни другого (avahi и systemd). Список под спойлером: # ps -A PID TTY TIME CMD 1 ? 00:00:41 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:13:12 ksoftirqd/0 5 ? 00:00:00 watchdog/0 6 ? 00:00:00 migration/1 7 ? 00:10:07 ksoftirqd/1 8 ? 00:00:00 watchdog/1 9 ? 00:00:01 migration/2 10 ? 00:09:59 ksoftirqd/2 11 ? 00:00:00 watchdog/2 12 ? 00:00:00 migration/3 13 ? 00:10:03 ksoftirqd/3 14 ? 00:00:00 watchdog/3 15 ? 00:00:00 migration/4 16 ? 00:10:04 ksoftirqd/4 17 ? 00:00:00 watchdog/4 18 ? 00:00:00 migration/5 19 ? 00:09:43 ksoftirqd/5 20 ? 00:00:00 watchdog/5 21 ? 01:09:10 events/0 22 ? 00:17:52 events/1 23 ? 00:20:05 events/2 24 ? 00:30:35 events/3 25 ? 00:20:09 events/4 26 ? 00:07:30 events/5 27 ? 00:00:00 cpuset 28 ? 00:00:00 khelper 29 ? 00:00:00 netns 30 ? 00:00:00 async/mgr 31 ? 00:00:00 pm 32 ? 00:00:05 sync_supers 33 ? 00:00:08 bdi-default 34 ? 00:00:00 kintegrityd/0 35 ? 00:00:00 kintegrityd/1 36 ? 00:00:00 kintegrityd/2 37 ? 00:00:00 kintegrityd/3 38 ? 00:00:00 kintegrityd/4 39 ? 00:00:00 kintegrityd/5 40 ? 00:00:03 kblockd/0 41 ? 00:00:00 kblockd/1 42 ? 00:00:00 kblockd/2 43 ? 00:00:02 kblockd/3 44 ? 00:00:04 kblockd/4 45 ? 00:00:04 kblockd/5 46 ? 00:00:00 kacpid 47 ? 00:00:00 kacpi_notify 48 ? 00:00:00 kacpi_hotplug 49 ? 00:00:00 kseriod 56 ? 00:00:00 kondemand/0 57 ? 00:00:00 kondemand/1 58 ? 00:00:00 kondemand/2 59 ? 00:00:00 kondemand/3 60 ? 00:00:00 kondemand/4 61 ? 00:00:00 kondemand/5 62 ? 00:00:01 khungtaskd 63 ? 00:00:00 kswapd0 64 ? 00:00:00 ksmd 65 ? 00:00:00 aio/0 66 ? 00:00:00 aio/1 67 ? 00:00:00 aio/2 68 ? 00:00:00 aio/3 69 ? 00:00:00 aio/4 70 ? 00:00:00 aio/5 71 ? 00:00:00 crypto/0 72 ? 00:00:00 crypto/1 73 ? 00:00:00 crypto/2 74 ? 00:00:00 crypto/3 75 ? 00:00:00 crypto/4 76 ? 00:00:00 crypto/5 333 ? 00:01:22 ksuspend_usbd 335 ? 00:00:09 khubd 338 ? 00:00:00 ata/0 339 ? 00:00:00 ata/1 340 ? 00:00:00 ata/2 341 ? 00:00:00 ata/3 342 ? 00:00:00 ata/4 343 ? 00:00:00 ata/5 344 ? 00:00:00 ata_aux 347 ? 00:00:00 scsi_eh_0 348 ? 00:00:00 scsi_eh_1 350 ? 00:00:00 scsi_eh_2 352 ? 00:00:00 scsi_eh_3 356 ? 00:00:00 scsi_eh_4 357 ? 00:00:00 scsi_eh_5 360 ? 00:00:00 scsi_eh_6 361 ? 00:00:00 scsi_eh_7 420 ? 00:00:03 jbd2/sda2-8 421 ? 00:00:00 ext4-dio-unwrit 422 ? 00:00:00 ext4-dio-unwrit 423 ? 00:00:00 ext4-dio-unwrit 424 ? 00:00:00 ext4-dio-unwrit 425 ? 00:00:00 ext4-dio-unwrit 426 ? 00:00:00 ext4-dio-unwrit 554 ? 00:00:00 udevd 691 ? 00:00:00 udevd 695 ? 00:00:00 udevd 937 ? 00:00:00 nouveau/0 938 ? 00:00:00 nouveau/1 939 ? 00:00:00 nouveau/2 940 ? 00:00:00 nouveau/3 941 ? 00:00:00 nouveau/4 942 ? 00:00:00 nouveau/5 953 ? 00:00:00 ttm_swap 1090 ? 00:00:00 firewire_sbp2 1179 ? 00:00:51 jbd2/sda3-8 1180 ? 00:00:00 ext4-dio-unwrit 1181 ? 00:00:00 ext4-dio-unwrit 1182 ? 00:00:00 ext4-dio-unwrit 1183 ? 00:00:00 ext4-dio-unwrit 1184 ? 00:00:00 ext4-dio-unwrit 1185 ? 00:00:00 ext4-dio-unwrit 1877 ? 00:00:00 portmap 1889 ? 00:00:00 rpc.statd 2077 ? 00:00:41 rsyslogd 2154 ? 00:00:00 acpid 2205 ? 00:00:00 atd 2213 ? 00:00:05 cron 2443 ? 00:00:00 exim4 2450 ? 00:53:36 zebra 2454 ? 3-14:02:16 bgpd 4213 tty1 00:00:00 getty 4214 tty2 00:00:00 getty 4215 tty3 00:00:00 getty 4216 tty4 00:00:00 getty 4217 tty5 00:00:00 getty 4218 tty6 00:00:00 getty 17768 ? 00:00:08 flush-8:0 20016 ? 00:00:00 sshd 20019 pts/0 00:00:00 bash 20186 pts/0 00:00:02 mc 20188 pts/1 00:00:00 bash 20225 ? 00:00:00 sshd 20235 pts/2 00:00:00 bash 20269 pts/2 00:00:00 mc 20271 pts/3 00:00:00 bash 20473 ? 00:00:00 sshd 20678 ? 00:00:09 snmpd 20679 ? 00:02:07 quagga-snmp-bgp 20685 ? 00:00:01 quagga-snmp-bgp 23513 ? 00:00:00 sshd 23514 ? 00:00:00 sshd 23515 ? 00:00:00 sshd 23516 ? 00:00:00 sshd 23517 ? 00:00:00 sshd 23518 ? 00:00:00 sshd 23519 ? 00:00:00 sshd Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted August 4, 2014 · Report post посмотрите код скриптов ifup Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MaLblsH Posted August 4, 2014 · Report post посмотрите код скриптов ifup Спасибо, попробую. Я уже в эту сторону думал, но беглым взглядом ничего подозрительного не обнаружил. Попробую отмирорить порт и сделать ifdown/ifup интерфейсу и посмотреть какие ARP сыпятся с него. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 4, 2014 · Report post http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP - можно попробовать arp_announce=1 и arp_ignore=2 поставить. Ну а так - да, ifup/ifdown и миррорить трафик (ну или tcpdump и кабель/оптику дергать) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Abram Posted August 4, 2014 · Report post Если "в лоб" - можно в arptables запретить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MaLblsH Posted August 6, 2014 · Report post Эх... зеркалировал порт и смотрел wireshark-ом ARP-ы с фильтром "arp.gratuitious == 1". Делал ifdown/ifup, физически кабель перетыкал, рестартил сеть: не генерируется нифига этот ARP. Поставил утилитку arping и сгенерировал руками командой по примеру: arping -c 4 -A -I eth0 10.0.1.1 В wireshark увидел пакет и в его info написано, что это gratuitious arp (это я к тому, что фильтр правильно был настроен). Чтобы удовлетворить наших друзей немцев, решили просто перенести стык с ними на Juniper и уже на нём спокойно применить no-gratuitous-arp-request. Просто пока я не увижу глазами пакет, бессмысленно разбирать скрипты ifup/ifdown, играться с параметрами sysctl и пр. Всем спасибо за помощь! Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Abram Posted August 6, 2014 · Report post MaLblsH, Так прямо на выходе из интерфейса зафильтруйте и фиг с ним. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 6, 2014 · Report post В wireshark увидел пакет и в его info написано, что это gratuitious arp (это я к тому, что фильтр правильно был настроен). Уверены? Точно уверены? А уверены, что вайршарк считает gratuitious arp тем же, что и апстрим? Ибо я - не уверен, и gratuitious arp может быть чем угодно в принципе, что не попадает под обязательные требования стандарта (т.е. arp who-has поиска соседа и arp reply на него). В частности, центос/рхел при старте ифейса опрашивает, а нет ли соседей с этим адресом, и если сосед есть - адрес не поднимает. Может, этот пакет определяется как gratuitious (ибо с т.з. апстрима кто-то третьий левый в сегменте вопрошает адрес второго конца пира). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MaLblsH Posted August 7, 2014 · Report post В wireshark увидел пакет и в его info написано, что это gratuitious arp (это я к тому, что фильтр правильно был настроен). Уверены? Точно уверены? А уверены, что вайршарк считает gratuitious arp тем же, что и апстрим? Ибо я - не уверен, и gratuitious arp может быть чем угодно в принципе, что не попадает под обязательные требования стандарта (т.е. arp who-has поиска соседа и arp reply на него). В частности, центос/рхел при старте ифейса опрашивает, а нет ли соседей с этим адресом, и если сосед есть - адрес не поднимает. Может, этот пакет определяется как gratuitious (ибо с т.з. апстрима кто-то третьий левый в сегменте вопрошает адрес второго конца пира). Согласен с Вами. Но я в самом начале переписки с немцами попросил их прислать дамп пакета, который они считают за gratuitious arp. В ответ на это от них тишина. Т.е. если бы они прислали дамп, я бы этот трафик вычислил и запретил. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 7, 2014 · Report post Дамп они навряд вышлют - сомневаюсь что их железка дамп пишет. Разве что может дату-время прихода пакета сообщат - по которому можно опнять, понимался ли у вас ифейс или в процессе работы сервер пакет шлет. Посмотрите что ваш дистр при подъеме ифейса в сеть гадит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...