Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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;
      • ens19: — настраиваем интерфейс ens19;
        • dhcp4: true — ip адрес будет получен по dhcp;
    • version: 2 — версия YAML.

Разбирать формат 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

После создания конфигурационного файла проверим его на синтаксис:

$ sudo netplan generate

Если в выводе пусто, значит конфигурация верна.

Теперь можно применить настройки:

$ sudo netplan apply

После этого, вам придётся заново подключится к серверу по 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


Сводка
Настройка сети на Ubuntu
Имя статьи
Настройка сети на Ubuntu
Описание
Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Ubuntu 22.04

3 Replies to “Настройка сети на Ubuntu”

  1. При настройке по данной инструкции все отлично получилось кроме шлюза.
    В ip route show маршрут вообще не отобразился и соответственно не работал.
    После добавления через sudo ip route add default via xxx.xxx.xxx.xxx заработало.

  2. Спасибо за статью. Я настройки сбил или снес своими корявыми ручками. Все выполнил, все работает. Касательно копирования кода — мне понравилось что вместе с текстом не копируется всякая дрянь типа ссылки на сайт и прочее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *