Поиск по сайту

    Мои услуги на Kwork

Настройка systemd-networkd на виртуальных серверах Ubuntu

systemd-networkd – это системный демон, который управляет сетевыми настройками. По мере появления он обнаруживает и настраивает сетевые устройства, также может создавать виртуальные сетевые устройства. Эта служба может быть особенно полезной для установки сложных сетевых настроек, для контейнера управляемым Systemd-nspawn или для виртуальных машин. А также отлично работает на простом соединении.

Systemd полностью поддерживается в Ubuntu 15.04 и старше.

Запуск systemd-networkd

$ systemctl --version

Чтобы использовать, запустите следующие две службы и включите их работу при загрузке системы (отключив при этом другие демоны, управляющие конфигурацией сети, например netplan):

$systemctl enable systemd-networkd
$systemctl start systemd-networkd
$systemctl enable systemd-resolved
$systemctl start systemd-resolved

systemd-resolved на самом деле требуется, только если вы указали записи DNS в файлах .network или если вы хотите получить адреса DNS от DHCP клиента networkd.

Конфигурирование

Конфигурационные файлы systemd-networkd находятся в директории /etc/systemd/network. Доступны следующие типы файлов:

  • *.link – описывают физические параметры каждого интерфейс: имя, MAC, MTU и другие
  • *.network – описывают параметры сети: IP, маршруты, DNS и другие
  • *.netdev – описывают виртуальные интерфейсы, мосты

Все они следуют тем же правилам:

  • Если все условия в [Match] разделе совпали, профиль будет активирован
  • Пустая секция [Match] означает, что профиль будет применяться в любом случае (можно сравнить с шуткой *)
  • Каждая запись с синтаксисом NAME=VALUE является ключевой
  • все файлы настроек вместе сортируются и обрабатываются в лексическом порядке, независимо от каталога, в котором они живут
  • файлы с одинаковым именем сменяют друг друга

[Match] раздел

Наиболее распространенные ключи:

  • Name= имя устройства (например Br0, enp4s0, en*)
  • Host= имя  машины
  • Virtualization= проверить, является ли система выполненной в виртуализированной среде или нет. Virtualization=no ключ будет применяться только на вашей машине, в то время как Virtualization=yes применяются к любому контейнеру или VM.

[Network] раздел

Наиболее распространенные ключи:

  • DHCP= включает поддержку DHCPv4 и/или DHCPv6. Принимает: yes, no, ipv4 или ipv6
  • DNS= является DNS адрес сервера. Вы можете указать этот параметр более одного раза
  • Bridge= это имя моста, чтобы добавить ссылку на
  • IPForward= по умолчанию no. Это разрешает IP forwarding, выполняя пересылку в соответствии с таблицей маршрутизации и необходим для настройки. Заметим, что включение IPForward= относится ко всем сетевым интерфейсам.
  • Domains= список доменов, используемых для разрешения имен DNS хоста.

[Address] раздел

Большинство общих ключ в разделе [Address]:

  • Address= статический IPv4 или IPv6 адрес и его длина префикса, разделенных символом / (например 192.168.1.90/24). Эта опция обязательна, если не используется DHCP

[Route] раздел

Большинство общих ключ в разделе [Route]:

  • Gateway= это адрес шлюза вашей машины. Эта опция обязательна если не используется DHCP.

Конфигурация для примера: два интерфейса со статическим IP в LAN и WAN.

root@test:/home/disnetern# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:3e:ee:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.178/24 brd 192.168.2.255 scope global dynamic ens160
       valid_lft 80562sec preferred_lft 80562sec
    inet6 fe80::20c:29ff:fe3e:eec4/64 scope link
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:3e:ee:ce brd ff:ff:ff:ff:ff:ff
    inet 10.4.5.90/24 brd 10.3.5.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3e:eece/64 scope link
       valid_lft forever preferred_lft forever

Необходимо создать 4 файла в директории /etc/systemd/network/

root@test:/home/disnetern# cat /etc/systemd/network/ens192.link
[Match]
MACAddress=00:0c:29:3e:ee:ce
[Link]
Name=ens-outer

root@test:/home/disnetern# cat /etc/systemd/network/ens160.link
[Match]
MACAddress=00:0c:29:3e:ee:c4
[Link]
Name=ens-inner

root@test:/home/disnetern# cat ens192.network
[Match]
Name=ens-outer
[Network]
DHCP=no
Adress=10.4.5.90/24
Gateway=10.4.5.1
DNS=8.8.8.8

root@test:/home/disnetern# cat ens160.network
[Match]
Name=ens-inner
[Network]
Address=192.168.2.178/24

Вот и всё: конфигурация сети завершена. Теперь можно перезапустить сервис:

root@test:/home/disnetern# systemctl restart systemd-networkd

root@test:/home/disnetern# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     unmanaged
  2 ens160           ether              routable    configured
  3 ens192           ether              routable    configured

Другие типы сетей:

DHCP

В данном примере конфигурируем DHCP IPv4

root@test:/home/disnetern# cat /etc/systemd/network/wired-dhcp.network
[Match]
Name=ens*

[Network]
DHCP=ipv4
NTP=time.disnetern.ru

Подключение типа «Мост»

Cоздает конфигурацию виртуального интерфейса:

root@test:/home/disnetern#cat /etc/systemd/network/bridge.netdev 
Name=br0 Kind=bridge 
root@test:/home/disnetern# cat /etc/systemd/network/bridge.network 
[Match] Name=br0 
[Network]
DHCP=ipv4

Настраиваем интерфейс для подключения:

root@test:/home/disnetern#cat /etc/systemd/network/wired.network 
[Match]
Name=ens*
[Network]
Bridge=br0

Настройка маршрута

[Route]
Destination=10.0.0.0/8
Gateway=10.4.5.1

Comments

So empty here ... leave a comment!

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

Sidebar



Яндекс.Метрика Рейтинг@Mail.ru