Странное временное переключение сети в Linux

Я столкнулся с очень раздражающей проблемой, которую я заметил через неделю, и за которую я не могу найти ответ: моя сеть внезапно перестает отвечать, обычно возвращается ровно через 25 секунд. Я использовал ядро ​​3.10.4 и теперь перешел на 3.11-rc4, чтобы узнать, не изменилось ли что-то, но нет, поведение такое же. И поскольку трудно определить проблему из-за того, что обычный веб-серфинг находится в «всплесках», а отключение полностью случайное, я не могу сказать, что эта проблема присутствовала и в предыдущем ядре (я всегда использую пользовательские, но нераспаковываемые ядра из kernel.org, все составленные мною)

Я не могу сказать, что ядро ​​тоже является виновником, но я могу сказать, что в системных журналах нет никаких подсказок (я проверял как /var/log/syslog и /var/log/messages и там нет ничего необычного), и что аппаратное обеспечение не похоже на ошибку, поскольку проблема возникает с использованием одной из моих сетевых карт:

lspci output:

 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01) 04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30) 

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

Я наткнулся на wirehark на моей машине и оставил его постоянно, пинговая наши шлюзы и другую машину в том же сегменте сети. Затем, при первом признаке сбоя сети, я бы проверил его и проверил, что шлюз перестает отвечать на сигналы, но другая машина все еще там реагирует нормально. Некоторые другие времена – это другая машина, которая перестает отвечать на запросы, и шлюз в порядке, а некоторые другие перестают отвечать. Я не знаю, что еще делать, поэтому мне нужна помощь или советы по дальнейшему ее отладке, поскольку системные журналы полностью нормальные.

У меня есть файл конфигурации ядра и файл захвата из wirehark, показывающий ситуацию. Я могу опубликовать здесь или на каком-то сайте pastebin на случай, если кто-либо сочтет полезным разобраться в этом случае, просто сообщите мне уровень детализации, который я должен использовать (думаю, уровень пакета без необработанных данных будет достаточным).

2 Solutions collect form web for “Странное временное переключение сети в Linux”

Симптомы согласуются с конфликтом IP-адреса. Конфликт IP-адреса возникает, когда ваш компьютер и другой компьютер в одной сети пытаются использовать один и тот же IP-адрес .

В локальной сети связи адресация основана на MAC-адресах . Каждая карта Ethernet имеет свой собственный MAC-адрес (запрет грубой неправильной конфигурации или злобы). Маршрутизатор, решая, куда отправить IP- пакет, отправит ARP- запрос для целевого IP-адреса на всех его портах. Это сообщение иногда называют «who has»: маршрутизатор пытается выяснить, кто из его коллег отвечает за этот IP-адрес. Когда маршрутизатор получает ответ, содержащий MAC-адрес, он может создавать и отправлять Ethernet-кадр (Ethernet-пакет), содержащий IP-пакет, на этот MAC-адрес. Поскольку этот обмен занимает некоторое время, маршрутизатор хранит кеш недавней информации ARP. (Существуют другие типы сообщений ARP, но то, что я объяснил здесь, достаточно для понимания текущей проблемы.)

Итак, вкратце, маршрутизаторы должны знать, какое физическое устройство имеет каждый IP-адрес, по которому они отправляют IP-пакеты. Итак, что происходит, когда есть два устройства, требующих одного и того же IP-адреса? Маршрутизатор получает ответ от одного из устройств, и с этого момента он решает, что этот IP-адрес принадлежит этому устройству, пока не истечет соответствующая запись кэша. По истечении срока действия кэширования маршрутизатор отправит новый запрос ARP, и, возможно, на этот раз другое устройство ответит быстрее. Это объясняет, почему такие ситуации нестабильны: через минуту маршрутизатор разговаривает с вами, в следующую минуту он разговаривает с другим парнем.

Если вы постоянно пингоруете кого-то, маршрутизатор всегда сохраняет ваш IP-адрес в кеше ARP. Поэтому, пока вы пингуете, есть только небольшое окно, в течение которого другой парень может заменить вас в кеше (после истечения срока действия вашего кэша до того, как появится следующий пинг). Вот почему наблюдение за этой проблемой в основном уходит, что может расстраивать, пока вы не поймете, в чем проблема.

В вашем случае это похоже на то, что ваш локальный маршрутизатор сохраняет записи в кеше в течение 25 секунд. Когда вы находитесь в кеше, вы добры в течение 25 секунд. Затем иногда появляется другой парень в случайных моментах, и вы выходите из него на 25 секунд.

Когда вы пытаетесь связаться с несколькими машинами по одной и той же локальной ссылке, каждая из них имеет свою собственную таблицу ARP, поэтому вы можете наблюдать противоречивые результаты, при этом одна машина решит, что вы владеете IP-адресом, а другая машина решает, что делает другой парень.

Высокопроизводительные маршрутизаторы регистрируют конфликты IP-адресов, поэтому, если вы думаете, что сталкиваетесь с ними, заручитесь помощью своего системного администратора. Прежде всего убедитесь, что не ваша машина пытается использовать IP-адрес, который он не должен использовать!

Я собираюсь предположить, что у вас есть 2 записи «nameserver» в /etc/resolv.conf , а первая запись относится к DNS-серверу, который периодически недоступен или недоступен. Код resolver в libc попробует первый IP-адрес сервера имен, получит тайм-аут, а затем попробует второй IP-адрес сервера имен, который будет успешным.

Чтобы проверить это, вы можете заменить IP-адреса «nameserver» в файле /etc/resolv.conf всего одним, 8.8.8.8, который является общедоступным DNS-сервером Google. Если отключение не происходит, проблема связана с сервером имен.

  • Как установить статический IP-адрес для отключенного интерфейса?
  • Как протестировать функцию NAPI в Linux?
  • Как проверить, установлено ли соединение с данным хостом / портом в Bash?
  • Как выполнить udhcpc как не root
  • Сетевое соединение CentOS разрывается каждые 5 минут
  • Уменьшите скорость загрузки wget или curl во время загрузки
  • Что я делаю неправильно, пытаясь написать сценарий bash, который возвращает номер следующего доступного порта?
  • UFW Предотвращение веб-браузера
  • Ubuntu 16.04 Как легко переключаться в Wicd Network Manager?
  • перехват трафика, генерируемого pktgen
  • Как выполнить ping GW в подсети?
  • Linux и Unix - лучшая ОС в мире.