- Как настроить статический IP-адрес в Ubuntu Server 20.04
- Определение сетевых интерфейсов
- Настройки локальной сети
- Настройки беспроводной сети
- Применение конфигурации
- Подключение по SSH
- Пример конфигурации
- Sysadminium
- Получение информации о сетевых интерфейсах
- Настройка IP адреса
- Добавление статических маршрутов
- Итог
Как настроить статический IP-адрес в Ubuntu Server 20.04
Настройка сети в Ubuntu Server 20.04 LTS осуществляется через утилиту Netplan.
NetPlan — это инструмент для управления настройками сети, представленный в Ubuntu начиная с версии 17.10 и выше.
Этот инструмент заменяет файл статических интерфейсов /etc/network/interfaces , который ранее использовался для настройки сетевых интерфейсов в Ubuntu. Теперь нужно использовать /etc/netplan/*.yaml для ваших изменений в настройках сетевых интерфейсов.
Определение сетевых интерфейсов
Определите все доступные сетевые интерфейсы используя команду ip или lshw :
sudo ip a // Или sudo lshw -class network
У меня уже настроен IP адрес: 192.169.0.150. Я изменю его.
Настройки локальной сети
Отредактируйте файл конфигурации netplan который находится в директории /etc/netplan/ :
sudo vim /etc/netplan/00-installer-config.yaml
Здесь придётся прописать всё ручками, если у вас ещё нет доступа по SSH. У меня этот файл уже редактировался, мне необходимо изменить только IP адрес.
Основные настройки:
- addresses — ip адрес который будет назначен вашей сетевой карте.
- gateway4 — ip адрес вашего роутера.
- nameservers — DNS сервера. Первый — наш роутер.
- search — домен в котором будет произведен поиск. Домен можно настроить при помощи DNS сервера
Мои настройки:
network: ethernets: enp0s3: addresses: - 192.168.0.105/24 gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1, 8.8.4.4] optional: true version: 2 renderer: networkd
ВАЖНО!
Обратите внимание на пробелы! Именно пробелы должны быть, а не табуляция. Если у вас после сохранения файла не появилась ошибка типа: Error while loading /etc/netplan/00-installer-config.yaml, то файл отредактирован правильно с точки зрения его синтаксиса.
После редактирования файла: Esc -> Shift + : -> wq! -> Enter .
Если есть необходимость передать управление сетевыми устройствами утилите NetworkManager:
network: version: 2 renderer: NetworkManager
Настройки беспроводной сети
Для корректной работы беспроводного интерфейса вам потребуется установить утилиту WPA supplicant , которая позволяет подключиться к точкам доступа с WPA. WPA и WPA2:
sudo apt install wpasupplicant
Добавьте новый файл конфигурации в каталог /etc/netplan/ :
sudo vim /etc/netplan/01-config.yaml
Отредактируйте файл конфигурации беспроводной сети с динамическим ip-адресом (DHCP):
network: version: 2 renderer: networkd wifis: wlp3s0: dhcp4: yes dhcp6: no access-points: "network_ssid_name": password: "**********"
Для беспроводной сети в которой используются статические ip-адреса подойдет следующая конфигурация:
network: version: 2 renderer: networkd wifis: wlp3s0: dhcp4: no dhcp6: no addresses: [192.168.0.21/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1, 8.8.8.8] access-points: "network_ssid_name": password: "**********"
Применение конфигурации
Использование netplan для генерации необходимой конфигурации:
Для подробного вывода информации при генерации, используйте опцию —debug :
sudo netplan --debug generate
Применение конфигурации netplan:
Для подробного вывода информации при применении, используйте опцию —debug :
Далее рекомендуется перезапустить интерфейсы или перезагрузить сервер:
Подключение по SSH
В Windows PowerShell:
Используем Putty. Указываем IP адрес и задаем имя сессии, жмём Open:
При первом подключении к серверу мы увидим сообщение. Жмём ДА.
Вводим имя пользователя и пароль. Если всё прошло успешно, увидим:
На этом настройка статического IP-адреса в Ubuntu Server 20.04 LTS закончена.
Пример конфигурации
Пример, который показывает большинство доступных функций:
network: version: 2 # if specified, can only realistically have that value, as networkd cannot # render wifi/3G. renderer: NetworkManager ethernets: # opaque ID for physical interfaces, only referred to by other stanzas wlp3s0: match: macaddress: 00:11:22:33:44:55 wakeonlan: true dhcp4: true addresses: - 192.168.14.2/24 - 192.168.14.3/24 - "2001:1::1/64" gateway4: 192.168.14.1 gateway6: "2001:1::2" nameservers: search: [foo.local, bar.local] addresses: [8.8.8.8] routes: - to: 0.0.0.0/0 via: 11.0.0.1 table: 70 on-link: true metric: 3 routing-policy: - to: 10.0.0.0/8 from: 192.168.14.2/24 table: 70 priority: 100 - to: 20.0.0.0/8 from: 192.168.14.3/24 table: 70 priority: 50 # only networkd can render on-link routes and routing policies renderer: networkd lom: match: driver: ixgbe # you are responsible for setting tight enough match rules # that only match one device if you use set-name set-name: lom1 dhcp6: true switchports: # all cards on second PCI bus unconfigured by # themselves, will be added to br0 below # note: globbing is not supported by NetworkManager match: name: enp2* mtu: 1280 wifis: all-wlans: # useful on a system where you know there is # only ever going to be one device match: <> access-points: "Joe's home": # mode defaults to "infrastructure" (client) password: "s3kr1t" # this creates an AP on wlp1s0 using hostapd # no match rules, thus the ID is the interface name wlp1s0: access-points: "guest": mode: ap # no WPA config implies default of open bridges: # the key name is the name for virtual (created) interfaces # no match: and set-name: allowed br0: # IDs of the components; switchports expands into multiple interfaces interfaces: [wlp1s0, switchports] dhcp4: true
Подробнее об использовании Netplan здесь.
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
- ens18: — настраиваем интерфейс ens18;
- ethernets: — начинается настройка сетевых интерфейсов;