Столкнулся с проблемой у одного из клиентов. Сервер работает под Федорой нормально часов так 6-10, а потом ни с того ни с сего падает в кору, при чем время работы разное. По-скольку я приходящий админ, то в консоли посмотреть, что происходит не мог. Туда сыпался всякий мусор, который не имел отношения к факту падения. Вернее инфа о падении убегала с экрана раньше, чем я доезжал. Ковыряние в логах ничего не дало, там все чисто было.
И все таки я дождался момента, когда сервак начал дико глючить и увидел заветную надпись «Neighbour table overflow«. Ковыряние Гугла показало, что проблема с размером таблиц кеша ARP. Увеличение ее до 10000 ничего не дало. Кстати, увеличивается таким макаром:
echo 10000 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 10000 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 10000 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
Дальнейшее ковыряние Гугла навело на мысль о том, что сервак находится под атакой вирусняка из внутренней сети. Послушав tcpdump’ом поочереди внутренние интерфейсы выявил нехорошую активность. Но, что самое странное, эта активность была связана с сетью 169.254.0.0/16, т.е. с сетью, которая в принципе у меня не должна быть. При чем сервак сам упорно опрашивал по ARP все IP в этой подсети, т.е. фактически сам себе устроил arpflood и DoS в одном лице.
Таблица роутнига указала на один из внутренних VLANов, где и был обнаружен этот флуд. В принципе все уже было понятно, кроме одного: откуда эта сетка взялась? Оказывается в RedHat-like ОСях это фича ядра. Т.е. этот маршрут удалить нельзя через ip route. Был найден другой путь — во всех конфигах интерфейсов была добавлена строчка:
NOZEROCONF=yes
После рестарта сети маршрут с сетью 169.254.0.0 удалился и флуд закончился. Сервер продолжил работать как часы, оставив после этой проблемы вопросы:
- Нафига принудительно пихать мне сеть, которая мне 300 лет не нужна?
- Почему до определенного момента все работало и флуда не было?
Сейчас вот проверил на своем серваке. В Убунте нет такого маршрута. В очередной раз убедился, что не зря перелез на нее с Федоры.