Настройка сети на Ubuntu

Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на 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


















2022-04-11T17:32:01
Администрирование Linux