Jump to content
Калькуляторы

Как отключить gratuitous arp ? Как отключить на Linux

Приветствую, коллеги!

Недавно подключились к 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.

Share this post


Link to post
Share on other sites

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

 

 

Share this post


Link to post
Share on other sites

посмотрите код скриптов ifup

 

Спасибо, попробую. Я уже в эту сторону думал, но беглым взглядом ничего подозрительного не обнаружил.

Попробую отмирорить порт и сделать ifdown/ifup интерфейсу и посмотреть какие ARP сыпятся с него.

Share this post


Link to post
Share on other sites

http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP - можно попробовать arp_announce=1 и arp_ignore=2 поставить. Ну а так - да, ifup/ifdown и миррорить трафик (ну или tcpdump и кабель/оптику дергать)

Share this post


Link to post
Share on other sites

Эх... зеркалировал порт и смотрел 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 и пр.

 

Всем спасибо за помощь!

Share this post


Link to post
Share on other sites

В wireshark увидел пакет и в его info написано, что это gratuitious arp (это я к тому, что фильтр правильно был настроен).

Уверены? Точно уверены? А уверены, что вайршарк считает gratuitious arp тем же, что и апстрим? Ибо я - не уверен, и gratuitious arp может быть чем угодно в принципе, что не попадает под обязательные требования стандарта (т.е. arp who-has поиска соседа и arp reply на него).

В частности, центос/рхел при старте ифейса опрашивает, а нет ли соседей с этим адресом, и если сосед есть - адрес не поднимает. Может, этот пакет определяется как gratuitious (ибо с т.з. апстрима кто-то третьий левый в сегменте вопрошает адрес второго конца пира).

Share this post


Link to post
Share on other sites

В wireshark увидел пакет и в его info написано, что это gratuitious arp (это я к тому, что фильтр правильно был настроен).

Уверены? Точно уверены? А уверены, что вайршарк считает gratuitious arp тем же, что и апстрим? Ибо я - не уверен, и gratuitious arp может быть чем угодно в принципе, что не попадает под обязательные требования стандарта (т.е. arp who-has поиска соседа и arp reply на него).

В частности, центос/рхел при старте ифейса опрашивает, а нет ли соседей с этим адресом, и если сосед есть - адрес не поднимает. Может, этот пакет определяется как gratuitious (ибо с т.з. апстрима кто-то третьий левый в сегменте вопрошает адрес второго конца пира).

 

Согласен с Вами. Но я в самом начале переписки с немцами попросил их прислать дамп пакета, который они считают за gratuitious arp.

В ответ на это от них тишина. Т.е. если бы они прислали дамп, я бы этот трафик вычислил и запретил.

Share this post


Link to post
Share on other sites

Дамп они навряд вышлют - сомневаюсь что их железка дамп пишет. Разве что может дату-время прихода пакета сообщат - по которому можно опнять, понимался ли у вас ифейс или в процессе работы сервер пакет шлет.

Посмотрите что ваш дистр при подъеме ифейса в сеть гадит.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.