Ошибка сетевого интерфейса на терминале

Munin is showing me a graph like this:Munin eth0 graph

During that spike, I was unable to access my server through the eth0 port (I could access it through my IPMI port).

I’m trying to figure out what happened, but I can’t seem to locate any log files for eth0.

I don’t see anything in /var/log/(kern|syslog|messages) that is out of the ordinary. And I don’t see a log file specifically for eth0.

Are there logs for eth0, and if so, where can I find them?

I am running Ubuntu 10.04 LTS.

asked Jun 8, 2012 at 19:25

Matt's user avatar

There are no logs for your interfaces. If you check soon enough, you can likely find them in the output of dmesg. You should find all that output in /var/log/messages. If it has rotated you need to look in /var/log/message.1.

Grep out the time range to a separate file that you can examine more easily. A command like
grep 'Jun 7 22:' /var/log/messages > ~/messages.tmp should work. Look for references to eth0 in the file. You may also see a reference to repeated messages which may be close to the line that indicates the problem. Also look for references to the driver for your interface, or the manufacturer.

Running the command ifconfig eth0 should output error counts, and may give you a hint as to the problem in the counts the follow the errors.

answered Jun 9, 2012 at 4:05

BillThor's user avatar

BillThorBillThor

27.8k3 gold badges37 silver badges69 bronze badges

2

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

  • Печать

Страницы: [1] 2  Все   Вниз

Тема: Ошибки на сетевых интерфейсах [РЕШЕНО]  (Прочитано 6236 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
TrEK

Здравствуйте, хочу удостоверится в познании познаного…
Для облегчения вопроса установил PhpSysInfo…
На скриншоте :

1.Информация о распределении памяти.
   28% съедает Ядро+Приложения
   35% Buffers — это система в резерв себе взяла 174 МБ или как?
   21% Cached — 105Мб закешировано куда?

2.Статистика сетевого интерфейса:
   Drop — откинутые пакеты включая пакеты которые не пропустил iptables
   Err — с каждым обновлением величина ошибок увеличивается на десяток, как считаете нормально ли это? :-\

« Последнее редактирование: 19 Ноября 2010, 18:44:47 от TrEK »


Beldieff

500 комментов нафлудил, а картинки вставлять так и не научился


Оффлайн
Karl500

По памяти: http://www.linuxatemyram.com/
По ошибкам: вообще говоря, ненормально. Ошибок (и дропнутых пакетов) должно быть в идеале 0. Идеал недостижим, но в нормальной ситуации — единицы пакетов за месяцы работы).
Вот, например, статистика моего файрволла (45 дней работы на данный момент):

drop — это не откинутые фарйрволлом, это — статистика интерфейса.


Оффлайн
TrEK

500 комментов нафлудил, а картинки вставлять так и не научился

Это твой ответ на заданый вопрос?


Пользователь решил продолжить мысль 11 Ноября 2010, 12:20:08:


По памяти: http://www.linuxatemyram.com/
По ошибкам: вообще говоря, ненормально. Ошибок (и дропнутых пакетов) должно быть в идеале 0. Идеал недостижим, но в нормальной ситуации — единицы пакетов за месяцы работы).
Вот, например, статистика моего файрволла (45 дней работы на данный момент):
drop — это не откинутые фарйрволлом, это — статистика интерфейса.

1.Хорошо, но я разница между Буфферс и Кешед?.. второе — резерв для Ядра и приложений… а Буфер — это уже позаимственный кусок из Кеша?
2. Вот и я не пойму откуда у меня ерроры растут?

п.с. Сервер в качестве шлюза интернета.

« Последнее редактирование: 11 Ноября 2010, 12:31:26 от TrEK »


Оффлайн
kobaltd

ifconfig
dmesg
tail -100 /var/log/debug
в студию


Оффлайн
TrEK

Перегрузил систему… уже не так растут апшибки, щас еще до 10,04 апгрейд сделаю.


Пользователь решил продолжить мысль 11 Ноября 2010, 06:38:48:


Доставил еще 512 Мб Озу…

Посмотрим что получится.. возможно ошибки появлялись из-за нехватки памяти…

« Последнее редактирование: 12 Ноября 2010, 17:20:57 от TrEK »


Оффлайн
Karl500

« Последнее редактирование: 11 Ноября 2010, 13:57:18 от Karl500 »


Оффлайн
kobaltd

огорчаю тебя — проблема не в ресурсах
у тебя с «физикой» проблемы
1) если оба линка в одном свиче — «битый» свич
2) кабели проложены с превышением допустимой длины
3) битые сетевухи (обе сразу странно)
4) кабели уложены рядом с электрической разводкой или N раз пересекаются с ней

и есчо море причин

З.Ы. мультикаст не юзаеться?

« Последнее редактирование: 11 Ноября 2010, 13:56:31 от kobaltd »


Оффлайн
Mam(O)n

1.Хорошо, но я разница между Буфферс и Кешед?

    Memory Buffers — A page cache for the virtual memory system. The
    kernel keeps track of frequently accessed memory and stores the
    pages here.

    Memory Cached — Any modern operating system will cache files
    frequently accessed.


Оффлайн
TrEK

огорчаю тебя — проблема не в ресурсах
у тебя с «физикой» проблемы
1) если оба линка в одном свиче — «битый» свич
2) кабели проложены с превышением допустимой длины
3) битые сетевухи (обе сразу странно)
4) кабели уложены рядом с электрической разводкой или N раз пересекаются с ней

и есчо море причин

З.Ы. мультикаст не юзаеться?

1) один линк в L3 Catalyst, второй в медиаконвертер.
2) каждый линк стандартный — метр с копейками.
3) сетевухи Интеловские Гигабитные
4) Вот здесь может быть загвоздка, электрическая разводка есть, но я думаю она бы не влияла именно после 18-00 примерно… и резко в 00-00 переставала…

Хотя… пару дней понаблюдаю, или это случайность, или закономерность… на рисунке шейпера отключены


Пользователь решил продолжить мысль 12 Ноября 2010, 09:27:30:


Вот такая ситуация с доставленой 512 МБ… (и выключеными шейперами)

Ерорры пока не растут,,,


Пользователь решил продолжить мысль 13 Ноября 2010, 00:30:29:


Как ни странно, но канал загружен на полную и при этом странички открываются нормально + на компьютере торент на чает на 30 мбит… и ерорры не растут.
Видимо со стороны провайдера были проблемы. Если дропы были на входящих пакетах внешнего интерфейса…

« Последнее редактирование: 13 Ноября 2010, 00:30:29 от TrEK »


Оффлайн
TrEK

Заменили железо, бардак прекратился.
теперь двух-ядерник 2,8 + 2 ГБ озу со всем справляется… еще осталось интеловские сетевые карточки поставить и все будет в ажуре.


Оффлайн
AnrDaemon

Какое именно железо меняли?

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
TrEK

Какое именно железо меняли?

Меняли старый хлам 2,1 Ггц, 512 озу , мать убитая


Оффлайн
AnrDaemon

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
TrEK

Сетевая встроенная была?

Нет, сетевушки писиайные.

Показать скрытое содержание
root@gate:/etc# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:40:f4:36:64:13
          inet addr:192.168.180.5  Bcast:192.168.180.7  Mask:255.255.255.252
          inet6 addr: fe80::240:f4ff:fe36:6413/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:356959913 errors:68 dropped:416 overruns:22 frame:0
          TX packets:390107333 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:153982690475 (153.9 GB)  TX bytes:388224733021 (388.2 GB)
          Interrupt:19 Base address:0xe800

eth1      Link encap:Ethernet  HWaddr 00:48:54:55:95:e9
          inet addr:10.127.255.209  Bcast:10.127.255.211  Mask:255.255.255.252
          inet6 addr: fe80::248:54ff:fe55:95e9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:406548739 errors:2827 dropped:1538 overruns:720 frame:0
          TX packets:354079387 errors:0 dropped:0 overruns:1 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:389840935183 (389.8 GB)  TX bytes:153744418023 (153.7 GB)
          Interrupt:16 Base address:0xe400


Красота, за ночь ни единой обишки и дропа..


  • Печать

Страницы: [1] 2  Все   Вверх

Содержание

  1. Linux: поиск проблем сети
  2. Проверка состояния сети
  3. Поиск ошибок в передаче данных
  4. Возможные типы и причины ошибок в сети
  5. Проверка MAC-адреса
  6. Проверка сайтов с помощью curl
  7. Проверка сети с помощью netstat
  8. Использование traceroute для проверки сети
  9. Как работает traceroute?
  10. Утилита MTR
  11. Просмотр трафика с помощью tcpdump
  12. Поиск проблем в сети с помощью tshark
  13. Использование утилиты nmap
  14. Лог файлы Linux по порядку
  15. Основные лог файлы
  16. И другие журналы
  17. Чем просматривать — lnav
  18. 6.2.4. Проверка работы сетевого интерфейса
  19. Читайте также
  20. Проверка работы
  21. 1.8. История сетевого обеспечения BSD
  22. 4.13.2. Обход сетевого экрана
  23. Настройка сетевого обнаружения
  24. 13.2.5. Тестирование сетевого соединения
  25. 4.26 Совместное использование сетевого интерфейса
  26. 27.1.1.1. Уровень сетевого интерфейса
  27. Выбор сетевого размещения
  28. Оптимизация сетевого трафика
  29. Настройки параметров работы сетевого экрана
  30. Учет сетевого трафика
  31. Настройка сетевого соединения
  32. Настройка сетевого обнаружения
  33. Настройка сетевого соединения
  34. Как решить некоторые проблемы в Linux
  35. Вступление
  36. Восстановление загрузчика
  37. Если загрузка длится бесконечно
  38. Что там у меня в жужжащей коробке?
  39. Ох уж эти иксы
  40. Имитируем сетевые проблемы в Linux
  41. Имитируем проблемы с сетью
  42. Задержка пакетов
  43. Потеря пакетов
  44. Добавление шума в пакеты
  45. Дублирование пакетов
  46. Изменение порядка пакетов
  47. Изменение пропускной способности
  48. Имитируем connection timeout
  49. REJECT
  50. REJECT with tcp-reset
  51. REJECT with icmp-host-unreachable
  52. Имитируем request timeout
  53. REJECT
  54. REJECT with tcp-reset
  55. REJECT with icmp-host-unreachable
  56. Вывод

Linux: поиск проблем сети

Проверка состояния сети

Или с помощью ethtool :

Поиск ошибок в передаче данных

Или более подробно с помощью ethtool :

Либо с помощью netstat :

Возможные типы и причины ошибок в сети

Проверка MAC-адреса

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

Примеры того, как можно получить данные ARP-таблицы.

Примечание: Что бы проверить удалённый хост, используя не ICMP-запросы (обычный ping ), а ARP – можно воспользоваться утилитой arping :

Проверка сайтов с помощью curl

curl работает как текстовый браузер, и позволяет получать всю страницу целиком или только заголовки от веб-сервера:

Проверка сети с помощью netstat

Использование traceroute для проверки сети

Как работает traceroute?

Утилита MTR

MTR (Matt’s Traceoute) – утилита, которая в режиме реального времени отображает работу traceroute :

Просмотр трафика с помощью tcpdump

Утилита tcpdump – одна из самых популярных для просмотра трафика на сетевом интерфейсе.
Наиболее используемый вариант – это определение наличия базового двухсторонннего обмена. Проблемы с этим могут возникать в случае:

Поиск проблем в сети с помощью tshark

Для установки tshark на CentOS – используйте:

Использование утилиты nmap

Вы можете сипользовать утилиту nmap для определения всех открытых портов на удалённом сервере. Это может быть использовано, например, для поиска уязвимостей в вашей сети, например – сервера, на которых запущены неизвестные сетевые приложения.

Источник

Лог файлы Linux по порядку

Невозможно представить себе пользователя и администратора сервера, или даже рабочей станции на основе Linux, который никогда не читал лог файлы. Операционная система и работающие приложения постоянно создают различные типы сообщений, которые регистрируются в различных файлах журналов. Умение определить нужный файл журнала и что искать в нем поможет существенно сэкономить время и быстрее устранить ошибку.

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

Основные лог файлы

Все файлы журналов, можно отнести к одной из следующих категорий:

Для каждого дистрибутива будет отдельный журнал менеджера пакетов.

И немного бинарных журналов учета пользовательских сессий.

И другие журналы

Так как операционная система, даже такая замечательная как Linux, сама по себе никакой ощутимой пользы не несет в себе, то скорее всего на сервере или рабочей станции будет крутится база данных, веб сервер, разнообразные приложения. Каждое приложения или служба может иметь свой собственный файл или каталог журналов событий и ошибок. Всех их естественно невозможно перечислить, лишь некоторые.

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

/.xsession-errors — Вывод stderr графических приложений X11.

/.xfce4-session.verbose-log — Сообщения рабочего стола XFCE4.

Чем просматривать — lnav

Недавно я обнаружил еще одну годную и многообещающую, но слегка еще сыроватую, утилиту — lnav, в расшифровке Log File Navigator.

Установка пакета как обычно одной командой.

Навигатор журналов lnav понимает ряд форматов файлов.

Что в данном случае означает понимание форматов файлов? Фокус в том, что lnav больше чем утилита для просмотра текстовых файлов. Программа умеет кое что еще. Можно открывать несколько файлов сразу и переключаться между ними.

Программа умеет напрямую открывать архивный файл.

Показывает гистограмму информативных сообщений, предупреждений и ошибок, если нажать клавишу . Это с моего syslog-а.

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

Источник

6.2.4. Проверка работы сетевого интерфейса

6.2.4. Проверка работы сетевого интерфейса

Если вы не подняли (активировали) интерфейс в процессе графического конфигурирования, сделайте это сейчас. Перейдите на текстовую консоль или откройте окно терминала и выполните команду ifup eth0 (деактивировать интерфейс можно командой ifdown eth0).

Для получения сведений об активных интерфейсах выполните команду ifconfig. Она покажет примерно следующее:

eth0 Link encap:Ethernet HWaddr 00:02:F0:73:B0:85

inet addr:192.168.1.11 Beast:192.168.1.255

UP BROADCAST MULTICAST MTU:1500 Metric:1

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

Интерфейс lo, которого вы не настраивали, — это интерфейс обратной петли. Не отключайте его, он необходим для работы некоторых приложений.

В первых двух строчках утилита ifconfig выводит тип (Ethernet) адаптера, его физический адрес (MAC-адрес) и присвоенный ему IP-адрес. Дальше — параметры интерфейса, указывающие, что он запушен и используется.

MTU (Maximum Transfer Unit) — максимальный размер единицы передачи данных. Практически все протоколы позволяют использовать в кадре поля переменной длины, это касается даже заголовка кадра. Максимально допустимое значение длины поля — это как раз и есть MTU.

Далее следует статистика — сколько пакетов принято/передано, сколько байтов принято/передано, сколько коллизий было с участием этого интерфейса.

Теперь проверим, как работает соединение. Это делают командой ping (пингуют нужный адрес).

Эта команда посылает на указанный адрес по протоколу ICMP маленький пакет, требующий эхо-ответа, раз за разом, пока не будет остановлена (например, нажатием комбинации клавиш Ctrl+). Обычно ею пользуются для проверки доступности узлов.

Потом пропингуйте свою машину по имени, которое вы ей дали: ping dhsilabs.

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

Теперь попробуйте обратиться к удаленной машине по имени. Помните, что символьное имя должно быть разрешено в IP-адрес? В вашей небольшой сети сервера имен, скорее всего, нет. В этом случае для преобразования IP-адресов в имена и обратно служит файл /etc/hosts. Это обычный текстовый файл, каждая строка которого содержит

разделенные пробелами. Откройте этот файл в любом текстовом редакторе и добавьте туда сведения о машинах своей локальной сети. Символ # в этом файле понимается как знак комментария.

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Читайте также

Проверка работы

Проверка работы Работоспособность механизма мониторинга ссылок можно проверить командами:#netamsctl show dshost: localhost port: 20001 login: anton password: aaacmd: show dsData–source type LIBPCAP source xl1:0 loop 82356480 average 35 mcsecPerf: average skew delay 2676 mcsec, PPS: 1060, BPS: 904985IP tree: 258 nodes [12] + 4 dlinks [1024] + 254 unodes [20] = 12272 bytesFlows: 1644/2507 act/inact entries

1.8. История сетевого обеспечения BSD

1.8. История сетевого обеспечения BSD API сокетов происходит от системы 4.2BSD (Berkeley Software Distribution — программное изделие Калифорнийского университета, в данном случае — адаптированная для Интернета реализация операционной системы Unix, разрабатываемая и распространяемая этим

4.13.2. Обход сетевого экрана

4.13.2. Обход сетевого экрана Сетевой экран не может обеспечить абсолютной безопасности, потому что алгоритм его работы несовершенен. В нашем мире нет ничего безупречного, стопроцентно надежного, иначе жизнь была бы скучной и неинтересной.Как Firewall защищает ваш компьютер

Настройка сетевого обнаружения

Настройка сетевого обнаружения Хотя подсоединение к сети уже настроено, вы все равно не сможете видеть компьютеры в сети. Чтобы это стало возможным, необходимо дополнительно настроить сетевое окружение.Нужно вернуться к диалоговому окну управления сетями и общим

13.2.5. Тестирование сетевого соединения

13.2.5. Тестирование сетевого соединения Чтобы проверить, соединяется ли ваш компьютер с сетью, попробуйте дать команду ping, указав ей в качестве параметра IP-адрес одного из компьютеров сети. Пусть, например, вам известно (узнайте реальный номер и имя у администратора сети),

4.26 Совместное использование сетевого интерфейса

4.26 Совместное использование сетевого интерфейса Как уже отмечалось, несложно найти локальные и региональные сети, использующие одновременно несколько протоколов. На практике один сетевой узел иногда посылает и принимает данные по нескольким протоколам через единый

27.1.1.1. Уровень сетевого интерфейса

27.1.1.1. Уровень сетевого интерфейса Этот уровень лежит в основании всей модели протоколов семейства TCP/IP. Уровень сетевого интерфейса отвечает за отправку в сеть и прием из сети кадров, которые содержат информацию. Кадр (frame) — это единица данных, которыми обмениваются

Выбор сетевого размещения

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

Оптимизация сетевого трафика

Оптимизация сетевого трафика Как правило, сервер СУБД устанавливается не на одном компьютере вместе с клиентом, а используется через локальную сеть. При этом на времени отклика сервера сказываются задержки при передаче данных по сети, независимо от того, насколько

Настройки параметров работы сетевого экрана

Настройки параметров работы сетевого экрана Для активизации сетевого экрана достаточно нажать ссылку Включить на соответствующей вкладке. Окно настройки параметров можно вызвать нажатием кнопки Настройка внизу окна и выбором соответствующего пункта или из

Учет сетевого трафика

Учет сетевого трафика Возможно, когда-нибудь на просторы России и близлежащих стран придет эра супер-Интернета. Тогда скорость соединения у каждого пользователя будет такой, как при копировании данных на жестком диске, компьютеры будут продаваться с уже настроенным

Настройка сетевого соединения

Настройка сетевого соединения Итак, у вас есть ноутбук, к которому просто подключен кабель локальной сети. Если в сети присутствует специальный компьютер с настроенными на нем DHCP[3]-сервером, то вам не придется специально устанавливать какие-либо параметры, поэтому

Настройка сетевого обнаружения

Настройка сетевого обнаружения Подсоединение к сети настроено, однако вы не можете видеть компьютеры в сети без дополнительной настройки сетевого окружения.Для этого вернитесь к окну управления сетями и общим доступом (см. рис. 14.7) и нажмите кнопку со стрелкой напротив

Настройка сетевого соединения

Настройка сетевого соединения Итак, у вас есть ноутбук, к которому подключен кабель локальной сети, и пока не произведены настройки. Следует отметить, что если в сети присутствует специальный компьютер с настроенным DHCP-сервером[43], то тогда вам вряд ли придется что-либо

Источник

Как решить некоторые проблемы в Linux

Вступление

Как известно, типичные РС-компьютеры собирают из весьма разношерстных компонентов — процессор от одного производителя, видеокарта от другого, звуковая карта от третьего. Темы про принтеры/сканеры/Wi-Fi адаптеры/TV-тюнеры просто кишат повсюду на форумах. Не добавляют оптимизма и вездесущие китайские производители, не особо-то стремящиеся к стандартизации. Перед операционной системой стоит непростая задача заставить работать согласованно все эти устройства.
Предлагаю вашему вниманию небольшой гайд по устранению типичных проблем в Linux.

Восстановление загрузчика

Как правило, загрузчики Linux достаточно дружелюбны в отношении других ОС, и при установке обнаруживают присутствие соседей на других разделах. А вот Windows при установке нагло затирает MBR своим загрузчиком, и прощай, линукс.
Не стоит рвать на себе волосы беспокоиться, для начала нужно подготовить ваш любимый LiveCD с линуксом. Теперь любой уважающий себя дистрибутив имеет свой LiveCD, но мне приглянулся %distrname%. Загружаетесь с диска, входите в терминал с правами рута и вводите следующую команду:

Если загрузка длится бесконечно

Во времена господства Windows 9x при загрузке линукса по экрану пробегали десятки строк, и можно было определить, на чём именно загрузка стопорится. Сейчас в моду вошли Splash-затычки, и определить, почему ваш любимый Ubuntu загружается вот уже 40 минут, невозможно. Для того, что бы отключить сплеш, при загрузке нажмите Shift (или что там предлагает ваш дистрибутив), станьте курсором на первую строку, нажмите E, перейдите курсором к строке, начинающейся на kernel и снова нажмите E. Удалите параметры quiet и splash. Если загрузка стопорится сразу, рекомендуется в эту строку добавить noapic, эта опция скажет ядру не использовать APIC. Далее нажмите Enter и B для начала загрузки.

В SUSE достаточно ввести в опциях загрузки splash=0.

Ну вот, загрузка пошла.

Далее ждёте сообщение об ошибке, и гуглите её текст.

Что там у меня в жужжащей коробке?

Bus 001 Device 004: ID 03f0:2c17 Hewlett-Packard
Bus 004 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Что бы узнать побольше о конкретном устройстве, есть опции -s и -v:

где непонятные символы 001:004 — адрес устройства из вывода команды lspci или lsusb.
Если вы испытываете страх при взгляде на мигающий курсор в терминале, то можно воспользоваться пакетом Hardinfo

Ох уж эти иксы

Довольно часто бывает, что после окончания начальной загрузки вы лицезреете чёрный экран. Что случилось? Возможно, слетел видеодрайвер. Разумеется, для не искушённого пользователя лучше воспользоваться драйверами из репозиториев. Для того, чтобы войти в ваш любимый Gnome или KDE для запуска менеджера пакетов, нажмите Ctrl-Alt-F1, и вы попадёте в терминал. Зайдите с правами рута, и заставьте ваш Xorg заюзать VESA драйвера: команда dpkg-reconfigure xserver-xorg для дебиана/убунту, yast2 для SUSE, а там выбираете VESA-совместимую видеокарту. Или nano /etc/X11/xorg.conf, ищете там слово intel, nvidia и подобное в секции Driver и меняете на vesa. Далее запускаем иксы: kdm или gdm или startxfce4 и т.д. (по вкусу). Если экран и дальше чёрный, прибиваете иксы с помощью Ctrl-Alt-Backspace и смотрите, где кошка зарыта: cat /var/log/Xorg.0.log | grep EE и гуглите текст ошибки.

Для начала поговорим о беспроводной сети. Проверьте наличие сети с помощью команды ifconfig. Естественно, ваша точка доступа должна быть включена и настроена. Если в выводе команды отсутствует интерфейс, названный ath0 или wlan0, то нужно что-то делать. Есть такие замечательные драйвера, как madwifi. Инструкцию по установке можно найти там же. Если они не помогли, вам возможно поможет такая утилита, как NDISwrapper. Этот костыль позволит использовать виндовые драйвера для адаптеров беспроводной сети в линуксе.

Далее попробуем поднять сеть:

sudo ifconfig wlan0 up
sudo iwlist wlan0 scan

Если на первую команду система ругается вроде «Interface Doesn’t Support Scanning», то вы неверно выбрали название интерфейса, или не тот драйвер. Вторая команда запустит поиск беспроводной сети.

Источник

Имитируем сетевые проблемы в Linux

Всем привет, меня зовут Саша, я руковожу тестированием бэкенда в FunCorp. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

В этой статье я расскажу о двух утилитах, с помощью которых можно проверить базовые сценарии, описывающие работу приложения при наличии проблем с сетью.

Имитируем проблемы с сетью

Обычно ПО тестируется на тестовых серверах с хорошим интернет-каналом. В суровых условиях продакшена всё может быть не так гладко, поэтому иногда нужно проверять программы в условиях плохого соединения. В Linux с задачей имитации таких условий поможет утилита tc.

tc (сокр. от Traffic Control) позволяет настраивать передачу сетевых пакетов в системе. Эта утилита обладает большими возможностями, почитать про них подробнее можно здесь. Тут же я рассмотрю лишь несколько из них: нас интересует шедулинг трафика, для чего мы используем qdisc, а так как нам нужно эмулировать нестабильную сеть, то будем использовать classless qdisc netem.

Запустим echo-сервер на сервере (я для этого использовал nmap-ncat):

Для того чтобы детально вывести все таймстемпы на каждом шаге взаимодействия клиента с сервером, я написал простой скрипт на Python, который шлёт запрос Test на наш echo-сервер.

Запустим его и посмотрим на трафик на интерфейсе lo и порту 12345:

Всё стандартно: трёхстороннее рукопожатие, PSH/ACK и ACK в ответ дважды — это обмен запросом и ответом между клиентом и сервером, и дважды FIN/ACK и ACK — завершение соединения.

Задержка пакетов

Теперь установим задержку 500 миллисекунд:

Запускаем клиент и видим, что теперь скрипт выполняется 2 секунды:

Что же в трафике? Смотрим:

Можно увидеть, что во взаимодействии между клиентом и сервером появился ожидаемый лаг в полсекунды. Гораздо интереснее себя ведёт система, если лаг будет больше: ядро начинает повторно слать некоторые TCP-пакеты. Изменим задержку на 1 секунду и посмотрим трафик (вывод клиента я показывать не буду, там ожидаемые 4 секунды в total duration):

Видно, что клиент дважды посылал SYN-пакет, а сервер дважды посылал SYN/ACK.

Помимо константного значения, для задержки можно задавать отклонение, функцию распределения и корреляцию (со значением для предыдущего пакета). Делается это следующим образом:

Здесь мы задали задержку в промежутке от 100 до 900 миллисекунд, значения будут подбираться в соответствии с нормальным распределением и будет 50-процентная корреляция со значением задержки для предыдущего пакета.

Вы могли заметить, что в первой команде я использовал add, а затем change. Значение этих команд очевидно, поэтому добавлю лишь, что ещё есть del, которым можно убрать конфигурацию.

Потеря пакетов

Попробуем теперь сделать потерю пакетов. Как видно из документации, осуществить это можно аж тремя способами: терять пакеты рандомно с какой-то вероятностью, использовать для вычисления потери пакета цепь Маркова из 2, 3 или 4 состояний или использовать модель Эллиота-Гилберта. В статье я рассмотрю первый (самый простой и очевидный) способ, а про другие можно почитать здесь.

Сделаем потерю 50% пакетов с корреляцией 25%:

К сожалению, tcpdump не сможет нам наглядно показать потерю пакетов, будем лишь предполагать, что она и правда работает. А убедиться в этом нам поможет увеличившееся и нестабильное время работы скрипта client.py (может выполниться моментально, а может и за 20 секунд), а также увеличившееся количество retransmitted-пакетов:

Добавление шума в пакеты

Помимо потери пакетов, можно имитировать их повреждение: в рандомной позиции пакета появится шум. Сделаем повреждение пакетов с 50-процентной вероятностью и без корреляции:

Запускаем скрипт клиента (там ничего интересного, но выполнялся он 2 секунды), смотрим трафик:

Видно, что некоторые пакеты отправлялись повторно и есть один пакет с битыми метаданными: options [nop,unknown-65 0x0a3dcf62eb3d,[bad opt]>. Но главное, что в итоге всё отработало корректно — TCP справился со своей задачей.

Дублирование пакетов

Что ещё можно делать с помощью netem? Например, сымитировать ситуацию, обратную потере пакетов, — дубликацию пакетов. Эта команда также принимает 2 аргумента: вероятность и корреляцию.

Изменение порядка пакетов

Можно перемешать пакеты, причём двумя способами.

В первом часть пакетов посылается сразу, остальные — с заданной задержкой. Пример из документации:

С вероятностью 25% (и корреляцией 50%) пакет отправится сразу, остальные отправятся с задержкой 10 миллисекунд.

Второй способ — это когда каждый N-й пакет отсылается моментально с заданной вероятностью (и корреляцией), а остальные — с заданной задержкой. Пример из документации:

Каждый пятый пакет с вероятностью 25% будет отправлен без задержки.

Изменение пропускной способности

Обычно везде отсылаются к TBF, но с помощью netem тоже можно изменить пропускную способность интерфейса:

Эта команда сделает походы по localhost такими же мучительными, как серфинг в интернете через dial-up-модем. Помимо установки битрейта, можно также эмулировать модель протокола канального уровня: задать оверхед для пакета, размер ячейки и оверхед для ячейки. Например, так можно сымитировать ATM и битрейт 56 кбит/сек.:

Имитируем connection timeout

Ещё один важный пункт в тест-плане при приёмке ПО — таймауты. Это важно, потому что в распределённых системах при отключении одного из сервисов остальные должны вовремя сфоллбэчиться на другие или вернуть ошибку клиенту, при этом они ни в коем случае не должны просто зависать, ожидая ответа или установления соединения.

Есть несколько способов сделать это: например, использовать мок, который ничего не отвечает, или подключиться к процессу с помощью дебаггера, в нужном месте поставить breakpoint и остановить выполнение процесса (это, наверное, самый извращённый способ). Но один из самых очевидных — это фаерволлить порты или хосты. С этим нам поможет iptables.

Для демонстрации будем фаерволлить порт 12345 и запускать наш скрипт клиента. Можно фаерволлить исходящие пакеты на этот порт у отправителя или входящие на приёмнике. В моих примерах будут фаерволлиться входящие пакеты (используем chain INPUT и опцию —dport). Таким пакетам можно делать DROP, REJECT или REJECT с TCP флагом RST, можно с ICMP host unreachable (на самом деле дефолтное поведение — это icmp-port-unreachable, а ещё есть возможность послать в ответ icmp-net-unreachable, icmp-proto-unreachable, icmp-net-prohibited и icmp-host-prohibited).

При наличии правила с DROP пакеты будут просто «исчезать».

Запускаем клиент и видим, что он зависает на этапе подключения к серверу. Смотрим трафик:

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

Сразу удаляем правило:

Можно удалить сразу все правила:

Если вы используете Docker и вам нужно зафаерволлить весь трафик, идущий на контейнер, то сделать это можно следующим образом:

REJECT

Теперь добавим аналогичное правило, но с REJECT:

Клиент завершается через секунду с ошибкой [Errno 111] Connection refused. Смотрим трафик ICMP:

Видно, что клиент дважды получил port unreachable и после этого завершился с ошибкой.

REJECT with tcp-reset

Попробуем добавить опцию —reject-with tcp-reset:

В этом случае клиент сразу выходит с ошибкой, потому что на первый же запрос получил RST пакет:

REJECT with icmp-host-unreachable

Попробуем ещё один вариант использования REJECT:

Клиент завершается через секунду с ошибкой [Errno 113] No route to host, в ICMP трафике видим ICMP host 127.0.0.1 unreachable.

Можете также попробовать остальные параметры REJECT, а я остановлюсь на этих 🙂

Имитируем request timeout

Еще одна ситуация — это когда клиент смог подключиться к серверу, но не может отправить ему запрос. Как отфильтровать пакеты, чтобы фильтрация началась как бы не сразу? Если посмотреть на трафик любого общения между клиентом и сервером, то можно заметить, что при установлении соединения используются только флаги SYN и ACK, а вот при обмене данными в последнем пакете запроса будет флаг PSH. Он устанавливается автоматически, чтобы избежать буферизации. Можно использовать эту информацию для создания фильтра: он будет пропускать все пакеты, кроме тех, которые содержат флаг PSH. Таким образом, соединение будет устанавливаться, а вот отправить данные серверу клиент не сможет.

Для DROP команда будет выглядеть следующим образом:

Запускаем клиент и смотрим трафик:

Видим, что соединение установлено, и клиент не может послать данные серверу.

REJECT

В этом случае поведение будет таким же: клиент не сможет отправить запрос, но будет получать ICMP 127.0.0.1 tcp port 12345 unreachable и увеличивать время между переотправкой запроса по экспоненте. Команда выглядит так:

REJECT with tcp-reset

Команда выглядит следующим образом:

Мы уже знаем, что при использовании —reject-with tcp-reset клиент получит в ответ RST-пакет, поэтому можно предугадать поведение: получение RST-пакета при установленном соединении означает непредвиденное закрытие сокета с другой стороны, значит, клиент должен получить Connection reset by peer. Запускаем наш скрипт и удостоверяемся в этом. А вот так будет выглядеть трафик:

REJECT with icmp-host-unreachable

Думаю, уже всем очевидно, как будет выглядеть команда 🙂 Поведение клиента в таком случае будет немного отличаться от того, которое было с простым REJECT: клиент не будет увеличивать таймаут между попытками переотправить пакет.

Вывод

Не обязательно писать мок для проверки взаимодействия сервиса с зависшим клиентом или сервером, иногда достаточно использовать стандартные утилиты, которые есть в Linux.

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

Источник

Для диагностирования возможных сетевых проблем рекомендуется осуществить следующие действия:

Проверка настроек сетевых интерфейсов

Проверить текущие настройки сетевых интерфейсов можно с помощью команды в терминале:

Пример выполнения команды:

Пример ошибки:

Проверка маршрутизации

Вывести на экран все содержимое таблицы IP-маршрутизации можно с помощью команды в терминале:

Пример выполнения команды:

Пример ошибки:

Проверка даты и времени

Вывести текущую дату и время, а также часовой пояс в системе можно с помощью команды в терминале:

Пример выполнения команды:

Пример ошибки:

Проверка доступности сервера Assist

Для проверки целостности и качества соединения с сервером payments111.paysecure.ru используется команда в терминале:

ping -c 10 payments111.paysecure.ru

Пример выполнения команды:

Примеры ошибок:

Проверка работы службы DNS 

Для диагностики службы DNS, проверки DNS записей сервера payments-direct.paysecure.ru и обнаружения проблем, связанных с разрешением имен в системе DNS используется команда в терминале:

nslookup payments-direct.paysecure.ru

Пример выполнения команды:

Пример ошибки:

В случае ошибки об отсутствии пакета nslookup необходимо установить пакет командой — apt-get install dnsutils -y.

В RHEL/Centos — yum install bind-utils.

Проверка ответов сервера Assist

Для диагностики службы DNS, проверки DNS записей сервера payments111.paysecure.ru  используется команда в терминале:

nslookup payments111.paysecure.ru

Пример выполнения команды:

Пример ошибки:

Проверка доступности порта сервера Assist

Для проверки доступности 443 порта (HTTPS) сервера payments111.paysecure.ru из сети пользователя применяется команда в терминале:

telnet -e q payments111.paysecure.ru 443

В случае успешного выполнения команды для выхода нажать q, потом еще раз q и Enter.

Пример выполнения команды:

Пример ошибки:

Проверка маршрутизации до сервера Assist 

Для определения маршрута, то есть пути прохождения пакетов до сервера payments111.paysecure.ru, используется команда в терминале:

mtr -r payments111.paysecure.ru

В других дистрибутивах Linux можно использовать команду traceroute payments111.paysecure.ru

Пример выполнения команды:

Пример ошибки:

Диагностика службы DNS 

Для диагностики службы DNS  используется команда в терминале:

ip1=`nslookup payments111.paysecure.ru | grep Address | sed -n '2p' | cut -d: -f2`; name_answer=`nslookup payments111.paysecure.ru | grep Name | cut -d: -f2`; ip2=`nslookup $name_answer ns6.incapdns.net | grep Address | sed -n '2p' | cut -d: -f2`; [[ $ip1 == $ip2 ]] && echo 'true' || echo 'false'

 Если после выполнения команды выводится значение true (см. пример ниже), то служба DNS работает корректно.

 Если после выполнения команды выводится значение false , то рекомендуется выполнить действия. описанные в разделе «Решение проблем».

Пример выполнения команды:

Пример ошибки:

Наверх

Вывод команды ifconfig показывает, что на интерфейсе появились ошибки вида

eth0      Link encap:Ethernet  HWaddr 84:

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:22360560 errors:0 dropped:648 overruns:0 frame:0

TX packets:46780560 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1578193542 (1.4 GiB)  TX bytes:69178601201 (64.4 GiB)

Interrupt:36 Memory:da000000da012800

Backlog: длина очереди для входящих пакетов. Выставить значение можно через

/proc/sys/net/core/netdev_max_backlog

и/или через

/etc/sysctl.d/99sysctl.conf

net.core.netdev_max_backlog = 1500

Значение по умолчанию 300. Минимальное значение должно быть равным количеству буферов на сетевом интерфейсе,

что бы не вызвать переполнение. Рекомендуемое значение от 3000. Не используется при NAPI.

0
0
голоса

Рейтинг статьи

Загрузка…

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка сервера яндекс аудитории
  • Ошибка сервера что это значит на телефоне
  • Ошибка сетевого доступа к серверу 1с 10061
  • Ошибка сетевого контроллера код 28
  • Ошибка сберпэй при оплате

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии