Есть вполне стандартный роутер-шлюз на linux (ASP11, 2.6.16-1.2111asp, неоднократно обновлялось, памяти изначально 64Мб, добавили до 192Мб), с задачей выпускать локалку в инет. Собственно, не раз приходилось делать подобное и всё было нормально. До этого случая.
Маршрутизация - статическая. Правила в iptables - тоже. Всё вроде работает, но порой возникает вот что:
Для какой-то одной из машин пропадает сеть. Но не на совсем. Нельзя создавать новые соединения. Т.е., если запущена icq, то она будер работать. Пинг - проходит!!! Но открыть страничку уже не получается.
Просмотр сессий (cat /proc/net/ip_conntrack | grep <ip глючащей машины>) показывает ESTABLISHED для рабочих и UNREPLIED для нерабочих сессий. Потихоньку они отваливаются по таймауту, но при попытке установить соединение вновь получают тот же статус. tcpdump показывает, что пакет действительно уходит к провайдеру, но ничего не возвращается обратно.
Глюк проходит сам собой за время от 5 до 30 минут. В это время остальные компы в офисе работают как нивчём не бывало. За сутки случается 1-6 раз. Ни разу не было замечено, что проявляется сразу на двух компах.
Прочие особенности. Шланг от провайдера слишком длинный, по этому карточка (RTL8139) переведена в 10 Мбит. Однако, до этого на шлюзе стоял Win2003 с ISA. Который сняли из-за общей лагучести. И там такого не было. С той же самой картой.
Пробовал перезагружать шлюз в момент возникновения глюка. Имею два подтверждённых случай, когда глюк "переживал" перезагрузку и держался ещё с минуту...
Я бы решил, что это глюк у провайдера, но я не понимаю, как такое может быть. Сеть скрыта NAT, как извне можно избирательно выбирать одну из машин и рубить сессии только ей?
Посоветуйте что-нибудь, где ещё можно ловить багу. А то я скоро уже в барабашек поверю... ;-)