Debian не видит сеть

Обновлено: 21.11.2024

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

Доступ к сетевым приложениям Linux из Windows (localhost)

Если вы создаете сетевое приложение (например, приложение, работающее на сервере NodeJS или SQL) в своем дистрибутиве Linux, вы можете получить к нему доступ из приложения Windows (например, из интернет-браузера Edge или Chrome) с помощью локального хоста (так же, как как обычно).

Однако, если вы используете более старую версию Windows (сборка 18945 или более ранняя), вам потребуется получить IP-адрес виртуальной машины Linux (или выполнить обновление до последней версии Windows).

Чтобы найти IP-адрес виртуальной машины, на которой работает ваш дистрибутив Linux:

  • В дистрибутиве WSL (например, Ubuntu) выполните команду: ip addr
  • Найдите и скопируйте адрес под значением inet интерфейса eth0.
  • Если у вас установлен инструмент grep, его будет проще найти, отфильтровав вывод с помощью команды: ip addr | grep eth0
  • Подключитесь к серверу Linux, используя этот IP-адрес.

На рисунке ниже показан пример подключения к серверу Node.js с помощью браузера Edge.

IP-адрес хост-ВМ Linux не сохраняется между сеансами и дистрибутивами Linux.

Доступ к сетевым приложениям Windows из Linux (IP-адрес хоста)

Если вы хотите получить доступ к сетевому приложению, работающему в Windows (например, к приложению, работающему на сервере NodeJS или SQL) из вашего дистрибутива Linux (например, Ubuntu), вам необходимо использовать IP-адрес вашего хост-компьютера. Хотя это не является распространенным сценарием, вы можете выполнить следующие действия, чтобы заставить его работать.

  1. Получите IP-адрес вашего хост-компьютера, выполнив эту команду из вашего дистрибутива Linux: cat /etc/resolv.conf
  2. Скопируйте IP-адрес после слова: nameserver .
  3. Подключитесь к любому серверу Windows, используя скопированный IP-адрес.

На рисунке ниже показан пример подключения к серверу Node.js, работающему в Windows, через curl.

Подключение через удаленные IP-адреса

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

Доступ к дистрибутиву WSL 2 из вашей локальной сети (LAN)

При использовании дистрибутива WSL 1, если ваш компьютер был настроен для доступа из вашей локальной сети, тогда приложения, работающие в WSL, также могут быть доступны в вашей локальной сети.

Это не случай по умолчанию в WSL 2. WSL 2 имеет виртуализированный адаптер Ethernet с собственным уникальным IP-адресом. В настоящее время, чтобы включить этот рабочий процесс, вам нужно будет выполнить те же действия, что и для обычной виртуальной машины. (Мы ищем способы улучшить этот опыт.)

Вот пример команды PowerShell для добавления прокси-сервера порта, который прослушивает порт 4000 на хосте и подключает его к порту 4000 к виртуальной машине WSL 2 с IP-адресом 192.168.101.100.

Доступ по IPv6

В настоящее время дистрибутивы WSL 2 не могут работать только с IPv6-адресами. Мы работаем над добавлением этой функции.

На этой странице описывается, как настроить интерфейс WiFi в системе Debian для использования в сети.

Как только ваше беспроводное устройство имеет доступный интерфейс (что можно проверить, запустив "ip link show"), его необходимо настроить для доступа к сети. Если у вас нет беспроводного интерфейса, обратитесь к WiFi за информацией о получении драйвера или необходимой прошивки для вашего устройства.

Для настройки беспроводного сетевого интерфейса требуется серверная часть, обычно wpa_supplicant (часто в сочетании с ifupdown и другими утилитами) или IWD. Их можно использовать с диспетчерами соединений, которые предоставляют расширенные функции и более простой способ их настройки. Обычно это NetworkManager, ConnMan, systemd-networkd и Wicd.

Алгоритм WEP небезопасен и не рекомендуется WPA. Использование WEP не рекомендуется и не рассматривается в этом документе.

  1. Как использовать интерфейс Wi-Fi
  2. Автоматически
    1. Менеджер сети
      1. Внешние интерфейсы NetworkManager
      2. Устранение неполадок и советы по NetworkManager
        1. Конфигурация сети
        2. Настройка iwd через iwctl
        3. Настройка разрешения DNS для IWD (простое)
        4. Отладка и тестирование
        5. Дополнительная литература
          1. Использование IWD
          2. Использование ifupdown
            1. WPS
              1. WPA-PSK и WPA2-PSK
              2. WPA-EAP

              Менеджер сети

              Для обычного пользователя настольного компьютера самый простой способ настроить сеть — установить интерфейс с графическим интерфейсом для NetworkManager, соответствующий вашему рабочему столу. Сам NetworkManager является интерфейсом для различных сетевых бэкэндов (по умолчанию wpa_supplicant), который абстрагирует конфигурацию и упрощает ее. Ваш беспроводной интерфейс не должен упоминаться в файле /etc/network/interfaces Debian.

              Внешние интерфейсы NetworkManager

              NetworkManager в GNOME

              Начиная с GNOME 3, интеграция с NetworkManager встроена в оболочку GNOME и отображается в настройках и в виде значка в правом верхнем углу экрана, пока он запущен.

              Откройте раздел "Сети" в настройках, выберите свою сеть в списке, введите пароль при появлении запроса, и вы должны быть готовы к работе в Интернете.

              Пакет network-manager-gnome все еще существует и предоставляет апплет системного лотка для других рабочих столов, но не будет иметь никакого значения для GNOME 3.

              См. страницу NetworkManager для часто задаваемых вопросов, документации и ссылок на поддержку.

              NetworkManager в KDE Plasma

              • Нажмите на название нужной сети.
              • Если в сети используется шифрование WPA с паролем (парольная фраза/предварительный общий ключ), вам будет предложено ввести его. После предоставления нажмите кнопку "Подключиться".
              • Беспроводное сетевое соединение будет активировано.
              • Нажмите "Подключиться к другой беспроводной сети".
              • Введите название сети в поле «Имя (ESSID)».
              • Отметьте «Использовать шифрование», если оно используется в сети.
                • Выберите используемый метод шифрования (обычно "WPA Personal").
                • Введите кодовую фразу/общий ключ в поле "Пароль".
                • Выберите «WPA 1» или «WPA 2» для версии протокола, используемой в сети.

                См. страницу NetworkManager для часто задаваемых вопросов, документации и ссылок на поддержку.

                NetworkManager на обычном настольном/безголовом сеансе

                Если внешний интерфейс с графическим интерфейсом недоступен, команды «nmcli» и «nmtui» доступны как интерфейсы CLI и TUI соответственно для NetworkManager.

                Устранение неполадок и советы по NetworkManager

                WiFi может сканировать, но не может подключиться с помощью NetworkManager (Debian 9 Stretch)

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

                Напишите внутри /etc/NetworkManager/NetworkManager.conf:

                После этого перезапустите NetworkManager с помощью service NetworkManager restart

                Настройка точки доступа Wi-Fi

                В последние годы NetworkManager стал достаточно сложным, чтобы настроить точку доступа Wi-Fi, которая «просто работает» (т. е. создает локальную частную сеть с DHCP и переадресацией IP-адресов). В некоторых настольных компьютерах, таких как KDE Plasma, кнопка для создания точки доступа отображается в сетевом апплете, если присутствуют два отдельных беспроводных сетевых интерфейса. Кроме того, его можно создать вручную с помощью команды, подобной:

                Изменение бэкенда

                Можно заменить wpa_supplicant на IWD в NetworkManager в Debian 10 и более поздних версиях, хотя рекомендуется использовать Debian 11, так как в Debian 10 есть известные проблемы со старой версией IWD. , см. NetworkManager/iwd.

                ИВКтл

                Несмотря на то, что он также доступен в качестве серверной части для ConnMan, NetworkManager и systemd-networkd, с помощью одного только IWD также можно создать почти весь сетевой стек на основе одной кодовой базы. Это универсальный беспроводной клиент, беспроводной демон и даже DHCP-клиент по желанию! В лучшем случае весь ваш сетевой стек может быть минимальным, как IWD + systemd-resolved, и это прекрасно работает во многих сценариях. Он практически не имеет зависимостей и максимально часто использует современные функции ядра. В отдельных отчетах говорится, что подключение к сетям происходит намного быстрее, чем wpa_supplicant, и, среди прочих предполагаемых улучшений, имеет лучшую поддержку роуминга.

                Сначала установите пакет iwd. Если вы установили wpasupplicant, либо удалите пакет, либо остановите и отключите службу wpa_supplicant с помощью:

                Затем убедитесь, что только что установленная служба IWD включена и работает с помощью:

                Конфигурация сети

                Если вы планируете использовать автономный IWD, вам следует сначала включить некоторые важные функции в файле конфигурации IWD, который можно найти по адресу /etc/iwd/main.conf. Отредактируйте этот файл с правами суперпользователя в своем любимом редакторе.

                iwd можно настроить для самостоятельной настройки сети, не требуя для этого внешних инструментов или систем. Чтобы включить настройку сети, добавьте этот раздел в файл конфигурации:

                Статическая конфигурация сети может быть указана в файлах конфигурации сети iwd, как описано в man iwd.network и в вики iwd. Согласно man iwd.config, «Если для сети не указана статическая IP-конфигурация, iwd попытается получить динамические адреса из сети через встроенный DHCP-клиент».

                Чтобы включить поддержку IPv6, добавьте этот раздел в файл конфигурации:

                Примечание. Начиная с версии 1.19, протокол IPv6 все еще несколько неисправен.

                Включение IPv6 может привести к ошибкам сегментации при подключении. Upstream считает, что это было исправлено фиксацией d0f00698245a («dhcp6: переключиться на BOUND до LEASE_OBTAINED»), но признает, что «поддержка IPv6 в iwd все еще является экспериментальной, поскольку нам все еще не хватает поддержки SLAAC», хотя «DHCPv6 должен быть в основном функциональным. ."

                После внесения изменений в файл конфигурации iwd перезапустите службу с помощью "service iwd restart", чтобы они вступили в силу.

                Настройка iwd через iwctl

                Запустите клиент IWCtl, запустив iwctl от имени обычного пользователя (не root!), что вызовет интерактивное приглашение. Вы можете запустить help, чтобы получить полный список команд здесь. (Если вы действительно хотите запретить пользователям без полномочий root настраивать iwd, см. инструкции здесь.)

                Чтобы подключиться к сети Wi-Fi в наиболее типичном сценарии, сначала введите список устройств, чтобы найти имя вашего беспроводного устройства. В этом примере мы будем использовать wlan0, но ваше имя может быть другим и потенциально намного длиннее, если ваша система переименовывает интерфейсы в уникальное имя.

                После получения имени устройства запустите что-нибудь вроде station wlan0 scan, чтобы устройство просканировало сети. Затем вы можете получить список этих сетей, запустив station wlan0 get-networks. После того, как вы нашли сеть, к которой собираетесь подключиться, запустите station wlan0 connect Router123, заменив Router123 именем сети. Поместите имя сети в двойные кавычки, если оно содержит пробел. (Обратите внимание, что для ввода имени сети можно использовать автодополнение с помощью табуляции, а iwd даже поможет с цитированием.)

                Затем IWCtl запросит у вас парольную фразу. После этого IWD подключится к сети и навсегда сохранит его в каталоге /var/lib/iwd. После добавления таким образом IWD будет пытаться автоматически подключаться к сети в будущем.

                Настройка разрешения DNS для IWD (простое)

                Если установлено значение "EnableNetworkConfiguration=true", вам также потребуется настроить службу разрешения имен IWD. Он поддерживает systemd-resolved и resolvconf. Если не указано, используется systemd-resolved. Обратитесь к странице IWD.CONFIG(5), если вы хотите вместо этого использовать resolvconf.

                Если DNS не работает, вам, вероятно, потребуется настроить systemd-resolve для использования с IWD. Включите и запустите службу с разрешением systemd, если она еще не запущена, выполнив:

                Затем создайте символическую ссылку /etc/resolv.conf на /run/systemd/resolve/stub-resolv.conf, выполнив:

                Этого должно быть достаточно, чтобы подключиться к Интернету. Если вы хотите внести изменения в конфигурацию DNS, обратитесь к файлу /etc/systemd/resolved.conf и соответствующей справочной странице RESOLVED.CONF(5)

                Отладка и тестирование

                Чтобы диагностировать проблемы, запустите iwd вручную (а не через systemd) с параметром отладки: iwd -d.

                Дополнительная литература

                Официальная документация iwd находится здесь.

                Как обычно, в ?ArchWiki есть отличная документация по использованию и настройке iwd.

                Wicd недоступен в Debian 11/Bullseye или новее из-за устаревания Python 2.

                Вы должны удалить network-manager, чтобы wicd заработал. Проверьте, установлен ли network-manager, и посмотрите, работает ли ваша беспроводная связь после установки драйвера в области уведомлений диспетчера рабочего стола. Возможно, вы уже готовы к работе.

                wicd (демон подключения к беспроводному интерфейсу) — это облегченная альтернатива NetworkManager, использующая wpa_supplicant в качестве серверной части. Он не зависит от среды, что делает его подходящим для всех сред рабочего стола, включая GNOME, Xfce, LXDE и Fluxbox. Как и NetworkManager, wicd настраивается через графический интерфейс. Ваш беспроводной интерфейс не должен упоминаться в файле /etc/network/interfaces Debian.

                Исправьте /etc/network/interfaces, чтобы он содержал только следующее:

                Мошенник

                ConnMan — это еще один сетевой интерфейс, разработанный для встроенных устройств. Пример использования:

                После настройки connman запоминает выбранные вами SSID и автоматически использует их повторно. Не беспокойтесь о длинных шестнадцатеричных кодах — в клиентском режиме автодополнение TAB работает как для команд, так и для данных.

                Использование IWD

                Использование ifupdown

                Найдите свой беспроводной интерфейс и вызовите его: (ПРИМЕЧАНИЕ: wlp2s0 является примером, вам необходимо убедиться, что вы используете правильное имя устройства для вашей системы)

                Выполните поиск доступных сетей и получите сведения о сети (если вы уже знаете идентификатор своей сети Wi-Fi/ESSID, этот шаг можно пропустить):

                Теперь отредактируйте /etc/network/interfaces. Требуемая конфигурация во многом зависит от вашей конкретной настройки. Следующий пример будет работать для наиболее распространенных сетей WPA/WPA2:

                Откройте интерфейс и проверьте соединение:

                Вы можете вручную включать и выключать интерфейс с помощью команд ifup и ifdown. Если вы добавили allow-hotplug wlp2s0, как в примере выше, интерфейс будет запущен автоматически при загрузке.

                Дополнительную информацию о доступных параметрах конфигурации см. в разделах man interfaces, man iw, man wireless и /usr/share/ doc/wireless-tools/README.Debian.

                WPS-PBC

                Найдите свою сеть Wi-Fi, в которой включен WPS.

                Используйте wpa_cli для подключения к MAC-адресу, полученному при сканировании.

                Затем нажмите кнопку WPS на точке доступа, чтобы запустить режим PBC.

                После подключения запустите dhclient, чтобы получить динамический IP-адрес.

                wpa_supplicant

                wpa_supplicant — это клиент WPA и запросчик IEEE 802.1X.

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

                WPA-PSK и WPA2-PSK

                Если вы не укажете парольную фразу в командной строке, она будет запрошена. Приведенная выше команда дает следующий вывод и передает (записывает) его в «/etc/wpa_supplicant/wpa_supplicant.conf»:

                Начиная с wpa_supplicant v2.6, вам необходимо добавить следующее в ваш /etc/wpa_supplicant/wpa_supplicant.conf для работы sudo wpa_cli:

                вам нужно будет скопировать из "psk anchor" >

                Быстрое подключение к настроенной сети (не требует ifupdown):

                Дополнительные параметры wpa-* описаны в файле /usr/share/doc/wpasupplicant/README.modes.gz. Это также следует прочитать при подключении к сети, не передающей свой SSID.

                Общую информацию по /etc/network/interfaces см. на справочной странице interfaces(5).

                WPA-EAP

                Для сетей, использующих EAP-TLS, необходимо установить файл конфигурации wpa_supplicant и предоставить сертификат на стороне клиента. Пример файла конфигурации WPA2-EAP можно найти по адресу /usr/share/doc/wpasupplicant/examples/wpa2-eap-ccmp.conf.

                После того, как он будет доступен, укажите ссылку на файл конфигурации в /etc/network/interfaces. Например:

                Сеть, используемая в этом руководстве, не назначает IP-адрес автоматически с помощью DHCP, мы назначим все вручную. В этом руководстве я предполагаю, что ваше устройство Linux является дистрибутивом на основе Debian или Ubuntu. Это может быть полезно и для других дистрибутивов, но некоторые команды могут отличаться, например, при перезапуске таких служб, как Samba.

                Первый шаг — удалить все предыдущие данные, принадлежащие старым соединениям или сетям, выполнив команду «dhclient -r»

                Где «dhclient» указывает на клиент dhcp, а «-r» аналогичен «выпуску», используемому в Windows (ipconfig /release) .

                Далее нам нужно узнать, какое сетевое устройство будет взаимодействовать с сетью, запустив «ifconfig», аналогично команде Windows «ipconfig», в данном случае проводным сетевым устройством является «enp2s0», как показано на снимке экрана ниже.< /p>

                Затем мы проверим информацию о сети с рабочей станции Windows, выполнив эквивалентную команду «ipconfig», чтобы увидеть диапазон IP-адресов и адрес шлюза.

                Мы видим, что сетевому устройству назначены два IP-адреса, в этом случае я знаю, что один IP-адрес (10.100.100.141) ограничен коммутатором небольшой частью сети без доступа в Интернет, а второй (172.31.124.141) ) имеет полный доступ. Прошу прощения, но сеть принадлежит латиноамериканской компании, и все рабочие станции на испанском языке. Где «Direcciòn» означает «адрес», а «Puerta de enlace determinada» означает «шлюз».

                С рабочей станции Windows мы пропингуем IP-адреса, принадлежащие к тому же диапазону, чтобы получить неназначенный или свободный IP-адрес для назначения нашему устройству (помните, что IP-адреса внутри сети не могут повторяться, и каждое устройство должно быть уникальный адрес). В этом случае я отправил ping на IP-адрес 172.31.124.142, и он не ответил, поэтому он был свободен.

                Следующий шаг — назначить нашему Linux-устройству собственный IP-адрес и направить его через соответствующий шлюз, выполнив команду «ifconfig enp2s0 XXXX», чтобы назначить IP-адрес, и «route add default gw XXXX», чтобы определить шлюз.

                Не забудьте заменить «X.X.X.X» на правильные адреса в соответствии с информацией о вашей сети Windows, как показано на следующем рисунке.

                Мы будем использовать сервер доменных имен Google версии 8.8.8.8. Вы можете использовать тот же DNS для своей сети, если вам нужен доступ в Интернет.

                После редактирования файла мы сохраним его, нажав CTRL+X, и подтвердим, нажав Y.

                Если нам нужно больше, чем доступ в Интернет, и нам нужно взаимодействовать с другими устройствами в той же сети, нам нужно установить Samba, службу, которая позволяет нам взаимодействовать со службами Windows.

                После того, как Samba была установлена, нам нужно добавить рабочую группу. В этом руководстве я предполагаю, что вы знаете, как использовать Windows в графическом режиме. Вы можете проверить рабочую группу, нажав правой кнопкой мыши на «Этот компьютер», а затем проверив свойства. В этом случае рабочая группа «Modernizacion», мы отредактируем наш файл конфигурации Samba, хранящийся в /etc/samba, снова используя Nano:


                Мы увидим тот же файл, показанный ниже, и среди первых незакомментированных строк параметр «рабочая группа», который нам нужно отредактировать, чтобы добавить наше устройство в рабочую группу Windows.

                Снова, чтобы сохранить файл, нажмите CTRL+X, а затем Y, когда вас спросят, хотите ли вы его сохранить.

                После внесения изменений в файл конфигурации samba нам потребуется перезапустить службу, чтобы применить изменения, запустив «/etc/init.d/smbd restart»

                Теперь мы можем проверить с помощью нашего файлового менеджера новые местоположения и принтеры, принадлежащие сети.

                Добавить устройство Linux в сеть Windows очень просто, это может быть даже проще, чем в этом руководстве, если сеть назначает IP-адреса автоматически с помощью DHCP-сервера.

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

                Об авторе

                Дэвид Адамс

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

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

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

                В этой статье мы рассмотрим основы устранения неполадок в сети с помощью командной строки Linux.

                Краткий обзор модели TCP/IP

                Для начала рассмотрим основы сетевой модели TCP/IP. Хотя большинство людей используют модель взаимодействия открытых систем (OSI) для обсуждения теории сети, модель TCP/IP более точно представляет набор протоколов, развернутых в современных сетях.

                Уровни сетевой модели TCP/IP по порядку включают:

                Я предполагаю, что вы знакомы с этой моделью, и продолжу обсуждение способов устранения неполадок на уровнях стека с 1 по 4.С чего начать устранение неполадок, зависит от ситуации. Например, если вы можете подключиться к серверу по SSH, но сервер не может подключиться к базе данных MySQL, проблема вряд ли связана с физическим уровнем или уровнем канала передачи данных на локальном сервере. В общем, неплохо идти вниз по стеку. Начните с приложения, а затем постепенно устраняйте неполадки на каждом нижнем уровне, пока не изолируете проблему.

                После этого перейдем к командной строке и приступим к устранению неполадок.

                Уровень 1: физический уровень

                Часто мы воспринимаем физический уровень как должное ("Вы убедились, что кабель подключен?"), но мы можем легко устранять неполадки физического уровня из командной строки Linux. Это если у вас есть консольное подключение к хосту, что может быть не так для некоторых удаленных систем.

                Начнем с самого основного вопроса: работает ли наш физический интерфейс? Команда ip link show сообщает нам:

                Обратите внимание на индикацию DOWN в приведенном выше выводе для интерфейса eth0. Этот результат означает, что уровень 1 не подходит. Мы можем попытаться устранить неполадки, проверив кабели или удаленный конец соединения (например, коммутатор) на наличие проблем.

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

                Вывод ip link show может быть трудно проанализировать с первого взгляда. К счастью, параметр -br выводит этот вывод в гораздо более удобном для чтения формате таблицы:

                Похоже, ip link set eth0 помог, и eth0 снова в деле.

                Дополнительные ресурсы по Linux

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

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

                Для более сложного устранения неполадок уровня 1 отлично подходит утилита ethtool. Особенно хорошим вариантом использования этой команды является проверка того, согласовал ли интерфейс правильную скорость. Интерфейс, который согласовал неправильную скорость (например, интерфейс 10 Гбит/с, который сообщает только о скорости 1 Гбит/с), может быть индикатором проблемы с оборудованием/кабелем или неправильной конфигурацией согласования на одной стороне канала (например, неправильно настроенный порт коммутатора).< /p>

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

                Обратите внимание, что в выходных данных выше показан канал, который правильно согласовал скорость 1000 Мбит/с и полнодуплексный режим.

                Уровень 2. Канальный уровень

                Уровень канала передачи данных отвечает за подключение к локальной сети; по сути, это передача кадров между хостами в одном и том же домене уровня 2 (обычно называемом локальной сетью). Наиболее подходящим протоколом уровня 2 для большинства системных администраторов является протокол разрешения адресов (ARP), который сопоставляет IP-адреса уровня 3 с MAC-адресами Ethernet уровня 2. Когда хост пытается связаться с другим хостом в своей локальной сети (например, со шлюзом по умолчанию), он, скорее всего, имеет IP-адрес другого хоста, но не знает MAC-адреса другого хоста. ARP решает эту проблему и вычисляет MAC-адрес для нас.

                Распространенной проблемой, с которой вы можете столкнуться, является запись ARP, которая не заполняется, особенно для шлюза вашего хоста по умолчанию. Если ваш локальный хост не может успешно разрешить MAC-адрес своего шлюза уровня 2, он не сможет отправлять трафик в удаленные сети. Эта проблема может быть вызвана неверным IP-адресом, настроенным для шлюза, или другой проблемой, например неправильно настроенным портом коммутатора.

                Мы можем проверить записи в нашей таблице ARP с помощью команды ip Neighbor:

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

                Примечание. Хотя уникальные MAC-адреса назначаются устройствам на заводе, их можно изменить или подделать. Многие современные сети также часто используют такие протоколы, как протокол избыточности виртуального маршрутизатора (VRRP), в котором используется сгенерированный MAC-адрес.

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

                В приведенном выше примере мы видим заполненную запись ARP для адреса 192.168.122.70 на eth0. Затем мы удаляем запись ARP и видим, что она была удалена из таблицы.

                Уровень 3: сетевой/интернет-уровень

                Уровень 3 включает работу с IP-адресами, которые должны быть знакомы любому системному администратору. IP-адресация предоставляет хостам способ связаться с другими хостами, находящимися за пределами их локальной сети (хотя мы часто используем их и в локальных сетях). Одним из первых шагов устранения неполадок является проверка локального IP-адреса машины, которую можно выполнить с помощью команды ip address, снова используя флаг -br для упрощения вывода:

                Мы видим, что наш интерфейс eth0 имеет IPv4-адрес 192.168.122.135. Если бы у нас не было IP-адреса, мы бы хотели устранить эту проблему. Отсутствие IP-адреса может быть вызвано локальной неправильной настройкой, например неверным файлом конфигурации сетевого интерфейса, или проблемами с DHCP.

                Наиболее распространенным передовым инструментом, который большинство системных администраторов используют для устранения неполадок уровня 3, является утилита ping. Ping отправляет пакет эхо-запроса ICMP на удаленный хост и ожидает в ответ эхо-ответ ICMP. Если у вас возникли проблемы с подключением к удаленному хосту, ping — это обычная утилита для начала устранения неполадок. Выполнение простого эхо-запроса из командной строки бесконечно отправляет эхо-сигналы ICMP на удаленный хост; вам нужно будет нажать CTRL+C, чтобы завершить проверку связи, или передать флаг -c, например:

                Обратите внимание, что каждый пинг включает время, которое потребовалось для получения ответа. Хотя ping может быть простым способом узнать, жив ли хост и отвечает ли он, он ни в коем случае не является окончательным. Многие сетевые операторы блокируют пакеты ICMP из соображений безопасности, хотя многие другие не согласны с этой практикой. Еще одна распространенная ошибка заключается в использовании поля времени как точного индикатора задержки в сети. Скорость пакетов ICMP может быть ограничена промежуточным сетевым оборудованием, и не следует полагаться на то, что они обеспечивают достоверное представление о задержке приложения.

                Следующим инструментом в наборе инструментов для устранения неполадок уровня 3 является команда traceroute. Traceroute использует поле Time to Live (TTL) в IP-пакетах, чтобы определить путь, по которому трафик идет к месту назначения. Traceroute будет отправлять по одному пакету за раз, начиная с TTL, равного единице. Поскольку срок действия пакета истекает в пути, вышестоящий маршрутизатор отправляет обратно пакет ICMP Time-to-Live Exceeded. Затем traceroute увеличивает TTL, чтобы определить следующий переход. В результате получается список промежуточных маршрутизаторов, через которые проходил пакет на пути к месту назначения:

                Traceroute кажется отличным инструментом, но важно понимать его ограничения. Как и в случае ICMP, промежуточные маршрутизаторы могут фильтровать пакеты, на которые опирается traceroute, например сообщение ICMP Time-to-Live Exceeded. Но что еще более важно, путь, по которому идет трафик к месту назначения и обратно, не обязательно симметричен и не всегда одинаков. Traceroute может ввести вас в заблуждение, заставив думать, что ваш трафик идет по прямолинейному пути к месту назначения и обратно. Однако такая ситуация бывает редко. Трафик может следовать по другому обратному пути, и пути могут динамически меняться по многим причинам. Хотя traceroute может обеспечить точное представление пути в небольших корпоративных сетях, он часто не точен при попытке отследить большие сети или Интернет.

                Еще одна распространенная проблема, с которой вы, скорее всего, столкнетесь, – это отсутствие шлюза исходящего трафика для определенного маршрута или отсутствие маршрута по умолчанию. Когда IP-пакет отправляется в другую сеть, он должен быть отправлен на шлюз для дальнейшей обработки. Шлюз должен знать, как направить пакет к конечному пункту назначения. Список шлюзов для разных маршрутов хранится в таблице маршрутизации, которую можно просматривать и изменять с помощью команд ip route.

                Мы можем распечатать таблицу маршрутизации с помощью команды ip route show:

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

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

                В приведенном выше примере мы отправляем весь трафик, предназначенный для сети 10.0.0.0/8, на другой шлюз (192.168.122.200).

                Ярким признаком проблемы с DNS является возможность подключения к удаленному хосту по IP-адресу, но не по имени хоста. Выполнение быстрого nslookup по имени хоста может многое нам рассказать (nslookup является частью пакета bind-utils в системах на базе Red Hat Enterprise Linux):

                Вышеприведенные выходные данные показывают серверу, что поиск был выполнен по адресу 192.168.122.1, и в результате был получен IP-адрес 172.217.3.100.

                Если вы выполняете nslookup для хоста, но ping или traceroute пытаются использовать другой IP-адрес, вы, вероятно, столкнулись с проблемой записи файла хоста. Поэтому проверьте хост-файл на наличие проблем:

                Уровень 4. Транспортный уровень

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

                Первое, что вы можете сделать, это посмотреть, какие порты прослушиваются на локальном хосте. Результат может быть полезен, если вы не можете подключиться к определенной службе на машине, например к веб-серверу или SSH-серверу. Другая распространенная проблема возникает, когда демон или служба не запускаются из-за того, что что-то еще прослушивает порт. Команда ss незаменима для выполнения следующих типов действий:

                Давайте разберем эти флаги:

                • -t — показать порты TCP.
                • -u — показать порты UDP.
                • -n — не пытаться разрешать имена хостов.
                • -l — показать только прослушиваемые порты.
                • -p — показать процессы, использующие определенный сокет.
                • -4 — показывать только сокеты IPv4.

                Глядя на результат, мы видим несколько сервисов прослушивания. Приложение sshd прослушивает порт 22 на всех IP-адресах, обозначенных выводом *:22.

                Команда ss — это мощный инструмент, и обзор ее краткой справочной страницы может помочь вам найти флаги и параметры, чтобы найти то, что вы ищете.

                Еще один распространенный сценарий устранения неполадок связан с удаленным подключением. Представьте, что ваш локальный компьютер не может подключиться к удаленному порту, например к MySQL через порт 3306. Маловероятно, но часто устанавливаемый инструмент может помочь вам при устранении проблем такого типа: telnet. Команда telnet пытается установить TCP-соединение с любым хостом и портом, который вы ей предоставляете. Эта функция идеально подходит для тестирования удаленного TCP-подключения:

                В приведенном выше выводе telnet зависает, пока мы его не завершим. Этот результат говорит нам о том, что мы не можем получить доступ к порту 3306 на удаленной машине. Возможно, приложение не слушает, и нам нужно применить предыдущие шаги по устранению неполадок, используя ss на удаленном хосте — если у нас есть доступ. Другой возможностью является хост или промежуточный брандмауэр, фильтрующий трафик. Возможно, нам придется работать с сетевой командой, чтобы проверить подключение уровня 4 по пути.

                Telnet отлично работает для TCP, но как насчет UDP? Инструмент netcat предоставляет простой способ проверки удаленного порта UDP:

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

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

                • Сканирование портов TCP и UDP на удаленных компьютерах.
                • Отпечатки ОС.
                • Определение того, закрыты ли удаленные порты или просто отфильтрованы.

                Подведение итогов

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

                По мере вашего продвижения по устранению неполадок в сети вы, несомненно, столкнетесь с ранее неизвестными флагами команд, причудливыми однострочниками и новыми мощными инструментами (мои любимые tcpdump и Wireshark), которые помогут разобраться в причинах проблем с сетью. Получайте удовольствие и помните: посылки не врут!

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