Настройка 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!