Автор Тема: Arp проблемът (напомняне)  (Прочетена 742 пъти)

tmcdos

  • Напреднали
  • *****
  • Публикации: 53
  • Distribution: Fedora Core 6
  • Window Manager: Не използвам - само Command-Line
    • Профил
    • WWW
Arp проблемът (напомняне)
« -: Dec 08, 2007, 11:37 »
Привет на всички.
Наскоро (сряда, 5-ти) МЕГАЛАН смениха софтуера на някои свои рутери от ЛИНУКС на BSD. Явно неговия TCP стек е по-стриктен от този на Linux, и веднага "цъфна" 1 проблемче. След половин ден ровене в Гугъл се пообразовах малко и успях да го реша. Сега споделям опита си - може на някой да му е от полза.
По подразбиране ЛИНУКС отговаря на ARP заявки относно всеки дефиниран локален IP-адрес, независимо през кой интерфейс е дошла заявката. Това води до разпространение на вътрешни адреси (обикновено 192.168 и 172.16, но важи и за всички останали) по външната мрежа.
Например, моята конфигурация беше такава:

eth0 - 192.168.0.1/24
eth1 - 192.168.2.1/24
eth2 - 78.90.xx.yy/24

И когато получаваше ARP заявки за 192.168.0.1 през ETH2, системата ми отговаряше на тях - а това не е редно, защото трябва да отговаря само ако заявката е дошла през ETH0.
Понеже съм с 2.6 ядро, това лесно се коригира в SYSCTL:
Примерен код
sysctl -w "net.ipv4.conf.all.arp_announce=2"
sysctl -w "net.ipv4.conf.all.arp_ignore=2"

Вместо all може да специфицирате конкретен интерфейс (eth0/1/2...)
За повече подробности (описание на стойностите за ARP_ANNOUNCE и ARP_IGNORE) може да прочетете ТУК
Активен