| Ubuntu: управление сетевыми настройками |
|
| Добавил(а) microsin | ||||||||||||
|
Это небольшая памятка о том, как менять настройки сетевых адаптеров Linux. [Как посмотреть маршруты] В Ubuntu для просмотра таблицы маршрутизации можно использовать несколько команд. Рекомендуемый современный способ — ip route, также доступны классические route и netstat. Рекомендуемый способ: ip route. Это современная и наиболее функциональная утилита, входящая в состав пакета iproute2. Просмотр всех маршрутов: ip route show или её сокращённый вариант: ip r Эта команда выводит таблицу в удобном формате, показывая адреса сетей назначения, шлюзы (via) и сетевые интерфейсы (dev). Просмотр всех маршрутов, включая резервные: ip route show table all Иногда это бывает полезно для диагностики, чтобы увидеть полную картину. Классические способы. Эти команды из пакета net-tools всё ещё широко распространены, но в новых версиях Ubuntu их может понадобиться установить вручную (sudo apt install net-tools). route -n Ключ `-n` нужен, чтобы отображать IP-адреса в числовом формате, без попыток разрешить их в доменные имена, что значительно ускоряет вывод. Пример вывода: $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 wlp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
netstat -rn Утилита netstat с ключами -r (показать таблицу маршрутизации) и -n (числовые адреса) выведет ту же информацию, что и route -n. Понимание вывода ip route или route -n поможет вам диагностировать сеть. 0.0.0.0 (или default) — это маршрут по умолчанию. Он указывает, куда отправляются пакеты для сетей, не указанных в таблице (обычно ваш роутер в интернет). Gateway — IP-адрес шлюза (соседнего устройства), на который нужно отправить пакет. Звёздочка (`*`) или `0.0.0.0` означает, что шлюз не нужен (прямое соединение). Genmask — сетевая маска, определяющая, какая часть адреса `Destination` относится к сети, а какая — к узлу. Flags — важные флаги маршрута: `U` (Up) — маршрут активен. Iface — сетевой интерфейс, через который будет отправлен пакет (например, eth0, wlp3s0). Эти команды позволяют быстро узнать, какой шлюз используется по умолчанию, какие сети подключены напрямую, а также проверить, активны ли нужные маршруты. [Как выполнить трассировку маршрута?] В Ubuntu существует несколько удобных способов выполнить трассировку маршрута. Вот основные команды, от самой простой до более продвинутой. 1. tracepath — самый простой и готовый к работе метод tracepath скорее всего уже установлена в вашей системе. Она не требует прав суперпользователя и отлично подходит для быстрой диагностики. Как использовать: откройте терминал и выполните команду, указав целевой адрес (например, google.com или IP-адрес). tracepath google.com Что вы увидите: программа начнет последовательно выводить все узлы (роутеры), через которые проходят пакеты на пути к указанному серверу. Если какой-то узел не отвечает, на его месте появятся звездочки (`*`). 2. traceroute — классический и информативный Это более мощная и гибкая утилита, которую, скорее всего, потребуется установить. Для установки выполните в терминале: sudo apt update Как использовать: после установки выполните команду traceroute с нужным адресом. Обратите внимание, что для полной функциональности может потребоваться запуск с правами администратора. traceroute google.com # или с правами суперпользователя Преимущества: traceroute предоставляет больше технических деталей о каждом "прыжке" (hop'е) и позволяет гибко настраивать параметры трассировки с помощью опций (например, `-n` для отображения только IP-адресов без попытки разрешить имена хостов). 3. MTR — для непрерывного мониторинга mtr (My TraceRoute) — это очень полезная утилита, которая объединяет в себе функции traceroute и ping. Она не просто показывает путь, а постоянно отслеживает его состояние в реальном времени. Установка: sudo apt install mtr Как использовать: самый простой способ запустить в текстовом режиме и отправить, например, 100 пакетов — использовать ключи `-r` (report) и `-n` (не разрешать имена). mtr -r -n -c 100 google.com Для запуска в интерактивном режиме, где вы видите обновляющуюся статистику в реальном времени, просто выполните mtr google.com. Интерпретация результатов. Независимо от выбранной команды, вы увидите список узлов, где: Номер строки (1, 2, 3...) — это порядковый номер "прыжка" (hop). Время (обычно в миллисекундах) — это задержка (латентность) до этого узла. Имя или IP-адрес — идентификатор узла (промежуточного маршрутизатора). Звёздочки (`*`) — означают, что узел не отвечает на запрос (что не всегда является проблемой, так как некоторые роутеры настроены игнорировать такие запросы). Важное примечание: если какой-то узел в середине маршрута показывает звёздочки, но при этом трассировка успешно доходит до конечного сервера, это может быть нормальной настройкой сетевого оборудования и не обязательно указывает на проблему. Проблемы стоит искать, когда звёздочки появляются на последних узлах или когда наблюдаются значительные и повторяющиеся потери пакетов. [Как установить шлюз по умолчанию?] В Ubuntu установка шлюза по умолчанию зависит от того, нужен ли вам временный эффект (до перезагрузки) или постоянная настройка. Вот пошаговое руководство для всех случаев. Быстрая временная настройка (до перезагрузки). Этот метод подходит для тестирования, когда изменения не нужно сохранять после перезагрузки. Через ip route (рекомендуемый способ): sudo ip route add default via 192.168.1.1 dev eth0 192.168.1.1 — IP-адрес вашего шлюза (роутера). eth0 — имя вашего сетевого интерфейса (узнать можно командой `ip a`). Через классическую команду route: sudo route add default gw 192.168.1.1 eth0 Эта команда делает то же самое, но считается устаревшей. Постоянная настройка (сохраняется после перезагрузки). Способ настройки зависит от версии Ubuntu. Для Ubuntu 18.04 и новее (Netplan): это стандартный способ для современных версий Ubuntu. 1. Найдите файл конфигурации Netplan: ls /etc/netplan/ Обычно он называется 01-netcfg.yaml или 50-cloud-init.yaml. 2. Отредактируйте файл: sudo nano /etc/netplan/01-netcfg.yaml 3. Добавьте или измените параметр gateway4 (для статического IP) или настройте DHCP. Для статического IP: network: Если вы используете DHCP и хотите, чтобы шлюз назначался автоматически, убедитесь, что у вас указано `dhcp4: yes`. В этом случае отдельно прописывать `gateway4` не нужно. 4. Примените изменения: sudo netplan apply Для старых версий (до 18.04) и систем без Netplan используется файл /etc/network/interfaces. Однако и на новых системах этот способ настройки работает, хотя он неудобен и поэтому не рекомендуется. 1. Отредактируйте файл: sudo nano /etc/network/interfaces 2. Найдите строку с вашим интерфейсом (например, `eth0`) и добавьте или измените строку `gateway`: auto eth0 iface eth0 inet static Для конфигурации DHCP строка `gateway` обычно не требуется, так как шлюз будет получен от DHCP-сервера. 3. Перезапустите сетевую службу: sudo systemctl restart networking или sudo /etc/init.d/networking restart Как удалить или заменить существующий шлюз. Если старый шлюз уже настроен, его нужно удалить перед добавлением нового. 1. Удалите текущий шлюз по умолчанию: sudo ip route del default 2. Добавьте новый шлюз: sudo ip route add default via 192.168.1.1 dev eth0 Чтобы убедиться, что шлюз установлен правильно, выполните команду: ip route show default или route -n Вы должны увидеть строку, начинающуюся с `default` или `0.0.0.0`, содержащую IP-адрес вашего нового шлюза и сетевой интерфейс. Важные советы: 1. IP-адрес шлюза должен быть в одной подсети с вашим сетевым интерфейсом. Например, если IP вашего компьютера `192.168.1.10/24`, то шлюз должен быть `192.168.1.x`. [Как узнать, как сейчас настроен сетевой адаптер?] Чтобы узнать, как сейчас настроен сетевой адаптер, используйте команду `ip` — это самый современный и информативный способ. Для получения полной картины рекомендую выполнить три простых действия: посмотреть общую конфигурацию всех интерфейсов, убедиться, что маршрут по умолчанию указан верно, и проверить, какие DNS-серверы используются. 1. Смотрим IP-адрес и статус адаптера Начните с команды ip addr. Она покажет все сетевые интерфейсы, их состояние (`UP`/`DOWN`) и назначенные IP-адреса. ip addr Скорее всего, вы увидите вывод, разделённый на блоки для каждого адаптера (например, `eth0`, `wlan0` или `enp0s25`). Нас интересует строка `inet`, где указан сам IP-адрес. Например, `inet 192.168.1.100/24`. Если адрес начинается на `127.0.0.1`, это локальная петля (loopback), не обращайте на неё внимания. 2. Проверяем маршрут по умолчанию (шлюз) Этот шаг покажет, существует ли маршрут для выхода в интернет и какой шлюз (обычно ваш роутер) для этого используется. ip route show default При успешной настройке вы увидите строку, начинающуюся с `default via`, где будет указан IP-адрес вашего шлюза (например, `192.168.1.1`). Если команда не возвращает результат, значит, шлюз не задан, и интернета не будет. 3. Смотрим DNS-серверы IP-адрес сам по себе не обеспечивает доступ в интернет — нужно ещё знать, как преобразовывать имена сайтов (например, `google.com`) в IP-адреса. За это отвечают DNS-серверы. resolvectl status В выводе найдите ваш активный сетевой интерфейс (например, `Link 2 (eth0)`) и посмотрите на строку `DNS Servers` — там будут перечислены используемые DNS. Дополнительные способы (для детальной диагностики). Если вам нужна более детальная информация о том, какой менеджер управляет сетью и как именно он настроен, можно воспользоваться этими командами: ● Через nmcli (если используется Network Manager): nmcli device show < имя_интерфейса> Эта команда покажет подробную конфигурацию, включая настройки DHCP, таймауты и прочее. ● Через netplan (если конфигурация в YAML): netplan status Эта команда покажет, как netplan интерпретирует текущие настройки из файлов `.yaml`. ● Просмотр конфигурационных файлов. Иногда полезно заглянуть в исходные файлы конфигурации: # Конфигурация Netplan [Какой скрипт настраивает сетевой адаптер?] Ответ на этот вопрос зависит от версии вашей Ubuntu и от того, каким инструментом вы управляете сетью. Точного единого скрипта не существует, так как настройкой занимаются разные службы и файлы конфигурации. Шаг 1: узнайте, какой инструмент у вас используется Прежде чем искать скрипты, нужно определить, кто именно управляет сетью в вашей системе. Самый надёжный способ — проверить состояние служб systemd-networkd и NetworkManager. Откройте терминал и по очереди выполните следующие команды: # Проверяем, активна ли служба systemd-networkd (основа Netplan) В зависимости от результатов, смотрите соответствующий раздел ниже.
Если используется Netplan (Ubuntu 18.04 и новее). Это наиболее вероятный вариант для современных систем. Вместо одного скрипта здесь используется декларативный подход. ● Главный источник настроек: YAML-файлы в каталоге /etc/netplan/. Именно здесь прописаны ваши IP-адреса, шлюзы и DNS-серверы. Как добавить свой скрипт: если вам нужно выполнить какую-то команду при поднятии сети (например, добавить нестандартный маршрут), поместите исполняемый скрипт в каталог /etc/network/if-up.d/. `NetworkManager` автоматически запускает скрипты из этой папки. Если используется NetworkManager. Это стандартный инструмент для десктопных версий Ubuntu. ● Главный источник настроек: графическая утилита nm-connection-editor, консольная nmcli или файлы в каталоге /etc/NetworkManager/system-connections/. Как добавить свой скрипт: в NetworkManager есть специальное место для пользовательских скриптов. Просто поместите свой исполняемый скрипт в каталог /etc/NetworkManager/dispatcher.d/. Он будет получать события (например, `up` или `down`) и имя интерфейса в качестве аргументов. Так можно автоматизировать любые действия при подключении к Wi-Fi или Ethernet. Если используется ifupdown (классический метод). Этот метод считается устаревшим, но может встречаться в некоторых серверных сборках или контейнерах. ● Главный источник настроек: файл /etc/network/interfaces или файлы в каталоге /etc/network/interfaces.d/. Как добавить свой скрипт: в этой системе тоже есть директории для скриптов. Поместите свой исполняемый скрипт в /etc/network/if-up.d/ (для действий после поднятия интерфейса) или в /etc/network/if-pre-up.d/ (для действий перед поднятием интерфейса). Итог. Если вы хотите изменить настройки (например, задать статический IP), то в зависимости от вашего инструмента вам нужно править разные файлы: Netplan: /etc/netplan/*.yaml → затем выполнить sudo netplan apply. Если же ваша задача — выполнить какое-то действие при подключении к сети (например, запустить программу), то скрипты следует поместить в /etc/network/if-up.d/ (работает и для ifupdown, и для NetworkManager). [Мой сетевой адаптер настроен через файл настроек на фиксированный адрес 192.168.1.1. Где этот файл найти?] Самый простой способ - выполнить поиск по каталогу /etc. Например: sudo grep -rnw "192\.168\.1\.1" /etc Файл настроек зависит от того, какой инструмент управляет сетью в вашей системе. Проще всего это определить, выполнив несколько команд. Шаг 1: определите ваш сетевой менеджер Откройте терминал и выполните следующие команды, чтобы узнать, кто именно управляет настройками сети: # Проверяем, активен ли NetworkManager (обычно на десктопах) # Проверяем, активен ли systemd-networkd (обычно на серверах) Шаг 2: найдите файл конфигурации В зависимости от результата, файл с настройками будет находиться в одном из следующих мест. Если используется NetworkManager, то результат команды `systemctl is-active NetworkManager` вернет `active`. В этом случае конфигурация хранится в файлах внутри каталога /etc/NetworkManager/system-connections/. NetworkManager не хранит настройки в одном единственном файле. Вместо этого он создаёт отдельный файл для каждого сетевого подключения (например, для Ethernet и Wi-Fi). Чтобы найти нужный, выполните команду: # Посмотреть содержимое каталога с настройками подключений Конфигурация внутри такого файла выглядит следующим образом: [connection] Если используется Netplan, то результат команды `systemctl is-active systemd-networkd` вернет `active`. Это стандартный способ настройки для современных серверных версий Ubuntu (18.04 и новее). Все настройки хранятся в одном из YAML-файлов в каталоге /etc/netplan/. В этом каталоге может быть несколько файлов, например 00-installer-config.yaml или 01-netcfg.yaml. Чтобы найти актуальный, выполните: # Посмотреть все файлы конфигурации Netplan # Просмотреть содержимое найденного файла Конфигурация для вашего случая будет выглядеть примерно так: network: Если используется классический ifupdown. Это старый способ, сейчас встречается редко, но все еще работает, по крайней мере в Ubuntu версии до 24 включительно. Тогда настройки могут храниться в файле /etc/network/interfaces. Конфигурация в этом файле выглядит так: auto eth0 iface eth0 inet static В большинстве современных систем Ubuntu для сервера и десктопа используется Netplan и NetworkManager соответственно. Скорее всего, ваш файл будет находиться именно в одном из этих двух каталогов. [У меня адаптер Ethernet настроен через /etc/network/interfaces. Как перенастроить его на DHCP?] Шаг 1: отредактируйте файл конфигурации Откройте файл /etc/network/interfaces в текстовом редакторе с правами администратора. Например, используйте редактор nano: sudo nano /etc/network/interfaces Шаг 2: измените настройки для вашего адаптера В файле найдите строки, относящиеся к вашему Ethernet-адаптеру (обычно это `eth0`). Вам нужно будет заменить статическую конфигурацию на DHCP . Ваша текущая (статическая) конфигурация, скорее всего выглядит так: auto eth0 iface eth0 inet static Чтобы переключить адаптер на автоматическое получение настроек (DHCP), измените её на следующий вид: auto eth0 iface eth0 inet dhcp Пояснение: ключевое слово `dhcp` в строке `iface eth0 inet dhcp` указывает системе, что для этого интерфейса нужно использовать DHCP-клиент для автоматического получения IP-адреса, маски сети, шлюза и DNS-серверов от вашего роутера. Удалите или закомментируйте (поставьте `#` в начале строки) все строки с настройками статического IP (`address`, `netmask`, `gateway` и т.д.), так как для DHCP они не нужны. Шаг 3: примените изменения Чтобы новые настройки вступили в силу, нужно перезапустить сетевую службу. Самый надёжный способ — выполнить две команды по очереди, чтобы "поднять" и "опустить" интерфейс: sudo ifdown eth0 && sudo ifup eth0 Если эта команда не сработает, можно перезапустить всю службу networking: sudo systemctl restart networking Шаг 4: проверьте результат Убедитесь, что ваш интерфейс успешно получил IP-адрес от DHCP-сервера: ip addr show eth0 Вы должны увидеть, что интерфейсу назначен новый IP-адрес, отличный от `192.168.1.1`. Вы также можете проверить, что маршрут по умолчанию и DNS-серверы настроены автоматически: ip route show default [Как вернуть адаптер под управление Network Manager?] Чтобы ваш Ethernet-адаптер снова попал под управление NetworkManager, нужно выполнить два простых, но важных действия. Во-первых, очистить настройки в файле /etc/network/interfaces, а во-вторых, разрешить NetworkManager управлять интерфейсами. Шаг 1: подготовка файла /etc/network/interfaces Для того чтобы NetworkManager взял управление интерфейсом на себя, его конфигурация не должна быть прописана в классическом файле ifupdown. 1. Откройте файл для редактирования: sudo nano /etc/network/interfaces 2. Удалите или закомментируйте (поставив символ `#` в начале строки) все строки, которые относятся к вашему Ethernet-адаптеру. Например, если ваш интерфейс назывался `eth0`: # auto eth0 3. В файле должны остаться только строки, необходимые для работы локальной петли (loopback): auto lo iface lo inet loopback Это базовая конфигурация, необходимая для работы системы . 4. Сохраните изменения (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X). Шаг 2: разрешение управления в конфигурации NetworkManager Следующим шагом нужно явно разрешить NetworkManager управлять интерфейсами, которые настроены через ifupdown. 1. Откройте главный конфигурационный файл NetworkManager: sudo nano /etc/NetworkManager/NetworkManager.conf 2. Найдите секцию [ifupdown]. Внутри неё измените параметр `managed` на `true`: [ifupdown] 3. Сохраните изменения и закройте файл. Шаг 3: перезапуск NetworkManager Теперь нужно перезапустить службу NetworkManager, чтобы она применила новые настройки и начала управлять интерфейсом. sudo systemctl restart NetworkManager После этого ваш Ethernet-адаптер снова должен появиться в NetworkManager, и вы сможете управлять его настройками (например, через графический интерфейс или команду `nmcli`). Важное дополнение: если вы используете Ubuntu Desktop, то после выполнения этих шагов, скорее всего, всё заработает. Если же у вас Ubuntu Server, то вероятно, служба NetworkManager может быть не установлена по умолчанию, так как серверные версии часто полагаются на netplan или ifupdown. В этом случае вам сначала нужно будет установить NetworkManager: sudo apt update Затем уже выполните описанные выше шаги по настройке. [Ссылки] 1. Ubuntu FAQ. |