- Sysadminium
- Получение информации о сетевых интерфейсах
- Настройка IP адреса
- Добавление статических маршрутов
- Итог
- Просмотр и построение таблиц маршрутизации в Linux
- Как посмотреть таблицу маршрутизации
- Команда route
- Команда netstat
- Построение таблицы маршрутизации
- Route
- Ключи
- Основные опции (command)
- Обозначения
- Опции для указания вводных данных
- IP Route
- Основные опции (command)
- Обозначения
- Опции для указания вводных данных
- Примеры статической маршрутизации
- Составление нового маршрута
- Изменение локальной сети
- Изменение адреса тоннеля
- Изменение провайдера
Sysadminium
Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Ubuntu 22.04.
Получение информации о сетевых интерфейсах
В прошлой статье мы разобрали настройку сети в системе Debian 11, а в этой разберём всё тоже самое но для Ubuntu 22.04.
Посмотреть на доступные сетевые интерфейсы мы точно также можем с помощью утилиты lshw. И на сервере Ubuntu эта утилита предустановлена.
$ sudo lshw -C network *-network:0 description: Ethernet controller product: Virtio network device vendor: Red Hat, Inc. physical id: 12 bus info: pci@0000:00:12.0 version: 00 width: 64 bits clock: 33MHz capabilities: msix bus_master cap_list rom configuration: driver=virtio-pci latency=0 resources: irq:11 ioport:e0e0(size=32) memory:fea93000-fea93fff memory:fe40c000-fe40ffff memory:fea00000-fea3ffff *-virtio3 description: Ethernet interface physical id: 0 bus info: virtio@3 logical name: ens18 serial: 02:6e:f0:fb:d4:71 capabilities: ethernet physical configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.34 link=yes multicast=yes *-network:1 description: Ethernet controller product: Virtio network device vendor: Red Hat, Inc. physical id: 13 bus info: pci@0000:00:13.0 version: 00 width: 64 bits clock: 33MHz capabilities: msix bus_master cap_list rom configuration: driver=virtio-pci latency=0 resources: irq:10 ioport:e100(size=32) memory:fea94000-fea94fff memory:fe410000-fe413fff memory:fea40000-fea7ffff *-virtio4 description: Ethernet interface physical id: 0 bus info: virtio@4 logical name: ens19 serial: 82:dd:88:27:00:a5 capabilities: ethernet physical configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 link=yes multicast=yes
В этом примере у меня два сетевых интерфейса: ens18 (02:6e:f0:fb:d4:71) и ens19 (82:dd:88:27:00:a5). При этом ip адрес назначен только на ens18 (172.28.90.34).
Мы уже знаем что утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты, то есть информацию о железе. А для получения настроек сетевых интерфейсов нужно использовать команду – ip. Работает эта команда точно также как в Debian, поэтому заострять на ней внимание не буду.
$ ip addr show ens18 2: ens18: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 02:6e:f0:fb:d4:71 brd ff:ff:ff:ff:ff:ff inet 172.28.90.34/20 brd 172.28.95.255 scope global dynamic ens18 valid_lft 258376sec preferred_lft 258376sec inet6 fe80::6e:f0ff:fefb:d471/64 scope link valid_lft forever preferred_lft forever $ ip addr show ens19 3: ens19: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 82:dd:88:27:00:a5 brd ff:ff:ff:ff:ff:ff inet6 fe80::80dd:88ff:fe27:a5/64 scope link valid_lft forever preferred_lft forever
В примере выше видно, что ens18 имеет назначенный ip адрес, а ens19 нет. Но оба интерфейса активны (state UP).
Настройка IP адреса
Вот настройка сетевых интерфейсов при помощи конфигурационных файлов в Ubuntu значительно отличается от Debian. Это потому-что в Ubuntu используется система для управления сетью — Netplan. И нужно будет изучить конфигурационные файлы и команды этой системы.
Конфигурационные файлы Netplan находятся в каталоге «/etc/netplan«, а конфигурационный файл созданный при установки системы — «/etc/netplan/00-installer-config.yaml«.
Посмотрим на этот конфиг с помощью утилиты cat:
$ cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens18: dhcp4: true ens19: dhcp4: true version: 2
Такой формат конфигурационных файлов называется — YAML (произносится как «ямл»).
Разберём этот файл построчно:
- network: — говорит о том, что сейчас будем настраивать сеть;
- ethernets: — начинается настройка сетевых интерфейсов;
- ens18: — настраиваем интерфейс ens18;
- dhcp4: true — ip адрес будет получен по dhcp;
- dhcp4: true — ip адрес будет получен по dhcp;
Разбирать формат YAML не буду, просто покажу как назначить статичные ip адреса и отключить dhcp.
Число в имени файла — означает приоритет, и чем оно выше, тем выше приоритет у файла. Создадим новый конфиг, имя можно придумать любое, но чтобы этот файл стал главнее текущего, установим приоритет 02-:
$ sudo nano /etc/netplan/02-network.yaml network: ethernets: ens18: dhcp4: no addresses: [ 172.28.90.75/20 ] routes: - to: default via: 172.28.80.10 nameservers: addresses: [ 77.88.8.8, 77.88.8.1 ] ens19: dhcp4: no addresses: [ 192.168.0.10/24 ] version: 2
После создания конфигурационного файла проверим его на синтаксис:
Если в выводе пусто, значит конфигурация верна.
Теперь можно применить настройки:
После этого, вам придётся заново подключится к серверу по ssh, по другому ip адресу.
Итак, мы указали ip адреса для обоих интерфейсов, а также назначили на одном из низ шлюз по умолчанию (routes: — to default) и dns сервера (nameservers).
И запомните, на сервере Ubuntu 22.04, не нужно использовать утилиты ifdown и ifup. Здесь работает netplan, и применять настройки нужно с помощью этой утилиты, предварительно проверив конфигурацию.
Добавление статических маршрутов
Добавлять статические маршруты нужно также в уже знакомом файле «/etc/netplan/02-network.yaml«:
$ sudo nano /etc/netplan/02-network.yaml network: ethernets: ens18: dhcp4: no addresses: [ 172.28.90.75/20 ] routes: - to: default via: 172.28.80.10 - to: 192.168.5.0/24 via: 172.28.80.5 on-link: true nameservers: addresses: [ 77.88.8.8, 77.88.8.1 ] ens19: dhcp4: no addresses: [ 192.168.0.10/24 ] version: 2
При добавлении маршрута нужно указать:
- — to: 192.168.5.0/24 — префикс (сеть назначения);
- via: 172.28.80.5 — через какой шлюз нужно добираться до сети назначения;
- on-link: true — активировать маршрут при поднятии интерфейса.
Применим настройки и проверим маршрут с помощью команды ip:
$ sudo netplan apply $ ip route show default via 172.28.80.10 dev ens18 proto static 172.28.80.0/20 dev ens18 proto kernel scope link src 172.28.90.75 192.168.0.0/24 dev ens19 proto kernel scope link src 192.168.0.10 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink
В примере выше — 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink — и есть наш дополнительный статический маршрут.
Итог
Вот мы и прошли тему “Настройка сети на Ubuntu“.
Мы познакомились с системой Netplan. Научились настраивать сеть с помощью конфигурационных файлов /etc/netplan/**-имя.yaml. Узнали как проверить и применить настройки с помощью команды netplan.
Теперь можем указать ip адрес, адрес шлюза, адрес dns сервера, а также можем создать отдельные маршруты в системе Ubuntu 22.04
Просмотр и построение таблиц маршрутизации в Linux
Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.
Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.
Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.
Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:
- Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
- Netmask (Genmask). Маска сети.
- Gateway. IP-адрес шлюза, через который можно добраться до цели.
- Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
- Metric. Числовой показатель, задающий предпочтительность маршрута.
Опционально в таблице также может содержаться следующая информация:
- адрес отправителя (source);
- размер TCP-окна (window);
- максимальная величина пакета (MSS) и типы записей.
Как посмотреть таблицу маршрутизации
Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.
Команда route
Программа используется для настройки параметров статической маршрутизации. Просмотр таблицы можно осуществить с помощью команды:
Команда netstat
Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:
Построение таблицы маршрутизации
Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):
- Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
- IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.
Оба инструмента могут использоваться для выполнения аналогичных задач. Далее будет рассмотрен синтаксис каждого в пределе основных возможностей.
Route
Команда имеет следующий вид:
route [-f] [-p] command -net [destination] netmask [MASK netmask] gw [gateway] metric [METRIC metric] dev [IF interface]
Ключи
- -f – очистка таблиц от записей всех шлюзов.
- -p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASKnetmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IFinterface] – сетевой интерфейс.
Опции для указания вводных данных
IP Route
Команда имеет следующий вид:
ip route command [destination] netmask [MASK netmask] via [gateway] metric [METRIC metric] dev [IF interface]
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASKnetmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IFinterface] – сетевой интерфейс.
Опции для указания вводных данных
- via – используется в значении «через» для указания шлюза.
- dev – сетевой интерфейс.
- netmask – маска подсети.
- metric – метрика.
Примеры статической маршрутизации
Составление нового маршрута
Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.
Маршрутизатор A имеет IP-адрес — 192.168.1.1, а маршрутизатор B — 192.168.1.2.
Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:
route add -net 172.16.10.0/24 gw 192.168.1.1
Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».
Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение локальной сети
В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:
route del -net 172.20.0.0/24 gw 192.168.1.2
А после добавить новый маршрут на маршрутизаторе А:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение адреса тоннеля
Если на маршрутизаторе B изменится IP-адрес туннеля, то следует также актуализировать адрес шлюза на маршрутизаторе А:
ip route replace 172.16.10.0/24 via 192.168.1.3
После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.
Изменение провайдера
Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):
ip route replace default via 5.215.98.7
Надежный хостинг для сайта. 14 дней — бесплатно!
Мы всегда на связи в соцсетях
Поддержка в привычной среде
- ens18: — настраиваем интерфейс ens18;
- ethernets: — начинается настройка сетевых интерфейсов;