LINUX.ORG.RU
решено ФорумAdmin

Linux дропает пакеты

 , , , ,


2

4

Привет, господа!

Сегодня мне довелось наблюдать следующую картину...

Есть гейт на Linux (Ubuntu, без разницы). В него втыкается провайдерская соска. IP, GW - статика. Раньше всё работало =) На днях у провайдера погорело оборудование, и оно было заменено. Интернет пропал...

Местный админ достучался до ТП, пришёл человек, воткнул соску в ноут (Win, это важно), вбил «те же» настройки - работает. Человек ушёл. Админ пробует на Win-хосте - работает. Знакомый этого админа попросил меня помочь...

Опустим все мои пляски с бубном...

Linux (любой, см. ниже) дропает все направленные ему (на его MAC) пакеты. МАС гейта (GW) в ARP-cache значится как INCOMPLETE (т.е., якобы, ответ на ARP-запрос не прилетел). Разумеетя, Linux через этот гейт ничего не пытается слать. В tcpdump я вижу (!!!) ARP-ответы, но Linux делает вид, что их нет. Я проставляю руками соответствие IP->MAC - картина меняется. Теперь я могу пинговать любой валидный внешний IP (те же 8.8.8.8), но ответы видны только в tcpdump. В самой ping ничего нет. Смотрю MAC назначения - мой.

Предполагаю, что Ethernet-фреймы в каком-то месте не соответствуют RFC (м.б., в угоду MS), и Linux их дропает. К сожалению, снять дамп трафика для дальнейшего рассмотрения под лупой не получилось (по орг. причинам). Сейчас доступа к телу нет, но эта задача меня никак не отпускает.

Разумеется, в iptables - всё в ACCEPT, никаких Advanced Routing-ов и т.п. Проверил на своём ноуте с Linux - та же картина

Какие ваши мысли, котаны?

П.с. Всех с ДР!



Последнее исправление: ephecaff (всего исправлений: 1)

Без pcap-а тут сложно что-то сказать. Учитывая что самые банальные причины - файрвол и таблицу маршрутизации ты уже отмёл.

Pinkbyte ★★★★★
()

В tcpdump я вижу (!!!) ARP-ответы

1. Они прямо вот однозначно летят на нужный MAC ?
2. С IP и маской точно нет косяков ? Цифры перепутаны, ещё какая мелочь...

AS ★★★★★
()

Я не смогу сейчас ответить добротно, в силу уязвимого состояния. Но могу рассказать историю, которая, в целом, может навести на мысли.

На одной из моих работ была похожая ситуация, в которой win-host'ы работали, а linux-host'ы нет. После относительно долгого дэбага выяснили, что железо провайдера слало битые(точнее неверные (свойственные для специфического дешевого железа)) tcp-фреймы. И линукса их дропали, по всем правилам RFC. А в саппорте виндов нам ответили в духе «мы рассчитываем на то, что наш рядовой пользователь идиот, потому мы не придерживаемся RFC, и исключениями резолвим всё что можно». Как-то так.

iu0v1
()
Ответ на: комментарий от iu0v1

наш рядовой пользователь идиот

Ну вот и точное описание аудитории Windows =) Наканец-та.

bookman900 ★★★★★
()

Не могу описать почему, но попробуй отключить rp_filter на всех интерфейсах, а также включить log_martians.

greek_31 ★★
()
Ответ на: комментарий от greek_31

попробуй отключить rp_filter

Не стал указывать в старт-посте, но с файликами в /proc/sys/net/ipv4/conf/eth0/ я поигрался - безрезультатно. На уме только невалидные Ethernet-кадры.

ephecaff
() автор топика
Ответ на: комментарий от iu0v1

железо провайдера слало битые(точнее неверные (свойственные для специфического дешевого железа)) tcp-фреймы

точно _TCP_ фреймы _железо_ слало?

Harald ★★★★★
()

Связался с админами провайдера в обход ТП (через закомого), попросили дамп. Буду держать в курсе...

ephecaff
() автор топика
Ответ на: комментарий от ephecaff

А в `ip link -s' значения dropped растёт? А пробовал на другом Linus хосте, на ноуте например?

greek_31 ★★
()
Последнее исправление: greek_31 (всего исправлений: 1)
Ответ на: комментарий от Harald

Ох, ну и подловил же, чертяка. Это делали прошивки, установленные на железо провайдера.

<oracle>«А точно ли _это_делала_прошивка_?</oracle> Ох, ну от тебя ничего не укрыть. Это делали службы, работающие в этой прошивке.

<oracle>„А точно ли _это_делали_службы?</oracle> Прямо в суть глядишь! Это делал код, который написали китайские программисты, и оформили это в виде служб.

<oracle>„А точно ли _эта_прошивка_работала_ЖЕЛЕЗЕ_?</oracle> Ну опять! Прав. Это было оборудование для маршрутизации.

Тебе в политику нужно. Уже не в первый раз, в отношении многих людей. Абы только бесполезно доебаться до чего-то, что на вопрос никак не влияет, решению абсолютно не поможет, и всем и так очевидно.

iu0v1
()

Итак, через 2-3 часа после отправки дампа на место приехал человек от провайдера (по словам местного админа - «линуксоид») и всё пофиксил. Что-то делал на крыше. Не исключено, что заменил оборудование. Дамп я сам пока не смотрел, ибо лень не до того. Судя по разговору, после поломки основного оборудования на его место была поставлена временная «затычка».

ephecaff
() автор топика

Заглянул в дамп...
Там тупо VLAN...
VLAN, Карл!

На мой пакет без тега приходит ответ с тегом. Вопрос к знатокам: «Как работали Win-хосты?» Википедию забанили/не?

ephecaff
() автор топика
Ответ на: комментарий от ephecaff

В свойствах сетевки могли установить не вдавшись в подробности. Ну и номер влана какой? 1? Тогда вполне может быть.

anonymous
()
Ответ на: комментарий от anonymous

Нет, не 1 (23, не важно). Винда была взята мной для теста первая попавшаяся. VLAN, разумется, не прописывал.

ephecaff
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.