- Рука помощи
- 1. Просмотр доступных сетевых интерфейсов
- 2. Настройка сети
- Настройка для Ubuntu 16.04 и ранее
- Настройка для Ubuntu 18.04 и более поздние
- Конфигурация сетевых интерфейсов через командную строку
- 3. Управление таблицей маршрутизации.
- Добавление статического маршрута в Ubuntu 16.04
- Добавление статического маршрута в Ubuntu 18.04
- Конфигурация маршрутов через командную строку
Рука помощи
Предлагаю рассмотреть управление сетевыми интерфейсами в ОС Ubuntu. А именно настройку сетевых интерфейсов из командной строки, что в первую очередь, используется при работе с серверными системами и применимо к рабочим станциям с графической оболочкой.
Настройку сети можно разделить на два вида:
Постоянные настройки — задаются через конфигурационные файлы и сохраняются после перезагрузки.
Временные настройки — задаются через командную строку, сбрасываются после перезагрузки системы или сервиса отвечающего за работу сети.
На текущий момент, наиболее часто используются Ubuntu 16.04 и Ubuntu 18.04, которые отличаются в настройке сети. Так в OC Ubuntu 16.04 использовалась утилита ifupdown, которую заменили netplan.
1. Просмотр доступных сетевых интерфейсов
Перечень доступных интерфейсов можно получить несколькими способами.
С помощью утилиты lshw, которая выводит информацию о всех компонентах компьютера. Для получения информации о сетевых картах выполняем ее с ключом -C и указываем интересующий класс network. Пример вывода:
$ sudo lshw -C network
*-network
description: Ethernet interface
product: RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
vendor: Realtek Semiconductor Co., Ltd.
physical ID: 7
bus info: pci@0000:08:07.0
logical name: enp8s7
version: 10
serial: 00:1d:60:bc:40:98
size: 100Mbit/s
capacity: 100Mbit/s
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=full ip=10.254.253.1 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=100Mbit/s
Для дальнейшей настройки нас будут интересовать следующие значения:
- logical name — логическое имя сетевого адаптера
- serial — MAC-адрес сетевой карты
- link — указывает наличие подключения
При помощи утилиты lshw Вы сможете получить информацию только о физических сетевых интерфейсах, информации о логических, например, VLAN Вы не получите.
Получить информацию о сетевых интерфейсах можно, используя утилиту ip вызвав ее с параметром address. Данная утилита выводит информацию о всех доступных интерфейсах, в том числе, логических. Пример вывода:
$ ip address
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp8s7: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:1d:60:bc:40:98 brd ff:ff:ff:ff:ff:ff
inet 10.254.253.1/24 brd 10.254.253.255 scope global enp8s7
valid_lft forever preferred_lft forever
inet6 fe80::21d:60ff:febc:4098/64 scope link
valid_lft forever preferred_lft forever
Где lo — петля, enp8s7 — интерфейс сетевой карты.
Для меня в работе более привычно использование утилиты ifconfig, поэтому все дальнейшие действия я буду описывать, используя ее.
Пример вывода информации о сетевых интерфейсах используя ifconfig:
$ ifconfig
enp8s7: flags=4163 mtu 1500
inet 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 # Информация о настройке сетевого интерфейса
inet6 fe80::21d:60ff:febc:4098 prefixlen 64 scopeid 0x20
ether 00:1d:60:bc:40:98 txqueuelen 1000 (Ethernet) # MAC-адрес сетевой карты
RX packets 2473367 bytes 1178806843 (1.1 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3706512 bytes 2647126986 (2.6 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Локальная петля (Loopback))
RX packets 43756 bytes 4844250 (4.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43756 bytes 4844250 (4.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2. Настройка сети
Настройку сетевых интерфейсов в данной статье буду рассматривать на примере проводной сети.
Настройка для Ubuntu 16.04 и ранее
Настройки происходят посредством редактирования конфигурационного файла /etc/network/interfaces
Пример настройки сетевых интерфейсов:
# This file describes the network interfaces available on your system
#
# and how to activate them. For more information, see interfaces(5).
#
# The loopback network interface
auto lo
iface lo inet loopback
# My Net
iface inet static
address 10.10.10.1
netmask 255.255.255.0
gateway 10.10.10.2
dns-nameservers 8.8.8.8 8.8.4.4
auto enp8s7
В данном файле всегда должен быть описан сетевой интерфейс lo и секции настройки наших сетевых интерфейсов. Пояснения по параметрам конфигурации:
- auto enp8s7 — указывает, что сетевой интерфейс «поднимать» при загрузке системы
- iface enp8s7 inet static — указываем, что для сетевого интерфейса enp8s7 используем статический IP-адрес, если вместо параметра static указать dhcp — сетевой адрес будет получен по протоколу dhcp и остальные параметры конфигурации не нужны
- address 10.10.10.1 — указывает IP-адрес сетевого интерфейса
- netmask 255.255.255.0 -маска подсети
- gateway 10.10.10.2 — основной шлюз
- dns-nameservers 8.8.8.8 8.8.4.4 — перечень DNS-серверов через пробел
Для применения настроек необходимо перезагрузить систему или службу, отвечающую за работу сети
Настройка для Ubuntu 18.04 и более поздние
Начиная с Ubuntu 18.04, для настройки сети используется Netplan, который для хранения конфигурации использует формат YAML. Файлы конфигурации хранятся в директории /etc/netplan/ при установке системы создается файл 50-cloud-init.yaml В него будем вносить все изменения
Файл имеет четкую структуру, каждая строка конфигурации выделена отступом, количество пробелов четко определенно. В случае, если количество не будет соответствовать, файл конфигурации не прочитается и будет получена ошибка.
Error while loading /etc/netplan/50-cloud-init.yaml, aborting. — в файле для отступов используются знаки табуляции
An error occured: the configuration could not be generated или Error in network definition: expected mapping (check indentation) — в случае не соблюдения количества отступов также будет указана строка с ошибкой.
Структура конфигурационного файла:
network:
ethernets: — объявляем блок с конфигурацией сетевых интерфейсов, далее идут блоки конфигураций для каждого интерфейса. Отступ 2 пробела
enp8s7: — имя первого сетевого интерфейса. Отступ 4 пробела
addresses: [10.10.10.1/24] — IP-адрес и маска подсети, в случае использования нескольких IP-адресов на одном интерфейсе, перечисляем через запятую, например, [10.10.10.1/24,10.10.20.1/24] IPv6 выделяется кавычками. Отступ 6 пробелов
gateway4: 10.10.10.2 — основной шлюз. Отступ 6 пробелов
nameservers: — блок конфигурации DNS-серверов. Отступ 6 пробелов
addresses: [8.8.8.8] — перечень IP-адресов DNS-серверов, допускается использование нескольких, указываются через запятую. Отступ 8 пробелов
dhcp4: false — указывает использовать статические параметры или получать по DHCP. Допустимые значения true/false. Если значение «true», будет прочитан только блок с настройками DNS-серверов. Отступ 6 пробелов
enp0s25: — имя второго сетевого интерфейса
dhcp4: true
version: 2
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init’s network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network:
network:
ethernets:
enp8s7:
addresses: [10.10.10.1/24]
gateway4: 10.10.10.2
nameservers:
addresses: [8.8.8.8]
dhcp4: false
enp0s25:
dhcp4: true
version: 2
Для проверки файла конфигурации и применения изменений используем команду
Обратите внимание, что необходимо нажать Enter для применения или по истечению 2-х минут ожидания применение прервется и изменения не будут применены.
Конфигурация сетевых интерфейсов через командную строку
Напоминаю, что все изменения, внесенные через командную строку, не сохраняются после перезагрузки. Конфигурацию описываю, используя утилиту ifconfig.
Для присвоения IP-адреса сетевому интерфейсу используем команду:
- enp8s7 — имя сетевого интерфейса
- 10.10.10.1 — IP-адрес
- 255.255.255.0 — маска подсети
Так как через утилиту ifconfig не указывается основной шлюз и DNS-сервера, это необходимо сделать отдельно
Для временного указания DNS-сервера необходимо добавить в файл /etc/resolv.conf строку
Где 8.8.8.8 — IP-адрес DNS-сервера
Для получения IP-адреса через DHCP используем команду
Где enp8s7 — имя сетевого интерфейса
3. Управление таблицей маршрутизации.
Для просмотра таблицы маршрутизации используются команды: netstat -rn или route -n
Если у Вас нет отдельно созданных маршрутов, вывод результата будет похож на следующий
$ netstat -rn
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.10.10.2 0.0.0.0 UG 0 0 0 enp8s7
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 enp8s7
Добавление статических маршрутов
Добавление статического маршрута в Ubuntu 16.04
Для добавления статического маршрута необходимо добавить строку конфигурации в файл /etc/network/interfaces в секцию конфигурации соответствующего сетевого интерфейса. Пример строки конфигурации
- 192.168.0.0 — указание подсети
- 255.255.0.0 — маска подсети
- 10.10.10.3 — шлюз
При добавлении такого маршрута конфигурационный файл будет иметь следующий вид
# This file describes the network interfaces available on your system
#
# and how to activate them. For more information, see interfaces(5).
#
# The loopback network interface
auto lo
iface lo inet loopback
# My Net
iface inet static
address 10.10.10.1
netmask 255.255.255.0
gateway 10.10.10.2
dns-nameservers 8.8.8.8 8.8.4.4
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3
auto enp8s7
Добавление статического маршрута в Ubuntu 18.04
Для добавления статических маршрутов через netplan необходимо добавить секцию routes: в конфигурацию сетевого интерфейса
Пример конфигурации сетевого интерфейса с указанием статических маршрутов
enp8s7:
addresses: [10.10.10.1/24]
gateway4: 10.10.10.2
nameservers:
addresses: [8.8.8.8]
dhcp4: false
routes:
— to: 10.10.20.0/24
via: 10.10.10.3
metric: 100
— to: 10.10.30.0/24
via: 10.10.10.4
metric: 100
Конфигурация маршрутов через командную строку
При конфигурации маршрутов через командную строку все изменения сохраняются до перезагрузки.
Управление маршрутами происходит при помощи утилиты route. Для добавления маршрута выполняем команду
В заметке не затрагивались настройки wi-fi адаптеров и виртуальных интерфейсов. Это будет описано отдельно. При возникновении вопросов задавайте их в комментариях.