Systemd-networkd

Материал из ALT Linux Wiki

Настройка сети с помощью systemd-networkd

Установка пакета systemd-timesyncd, который пригодится сразу после переезда, автоматически тянет за собой собственно systemd-networkd:

# apt-get install -y systemd-timesyncd

Дабы оставить возможность отката, вместо того, чтоб снести etcnet, пока просто переименуем его каталог:

# mv -f /etc/net /etc/net.old

Создадим файл автонастройки всех сетевых интерфейсов по DHCP /etc/systemd/network/lan.network со следующим содержимым:

[Match]
Name = *

[Network]
DHCP = ipv4

Но лучше это делать, предварительно выяснив список интерфейсов и удостоверившись, что среди них нет настроенных на статические адреса туннелей, вланов, мостов и т.п.

Переключимся с etcnet / NetworkManager на systemd-networkd:

# systemctl disable network NetworkManager && systemctl enable systemd-networkd systemd-timesyncd

После чего перезагрузимся с воткнутым сетевым кабелем, поскольку Wi-Fi ещё не настроен, а удостовериться в работоспособности systemd-networkd нужно сразу, а именно:

$ networkctl
$ ip -o a s | awk '!/inet6|lo /'

Создадим файл для подключения к Wi-Fi /etc/wpa_supplicant/wpa_supplicant-wlan0.conf со следующим содержимым:

ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=2
fast_reauth=1

Добавим пароль на подключение к точке доступа, не светя его в настройках:

# wpa_passphrase "имя точки доступа" "пароль от нее" | sed '/#/d' >>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf

Включим Wi-Fi:

# systemctl enable wpa_supplicant@wlan0

Перезагружаемся с выдернутым сетевым кабелем и проверяем работоспособность Wi-Fi.

При добавлении новой точки доступа делаем:

# wpa_passphrase "имя новой точки доступа" "пароль от нее" | sed '/#/d' >>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
# systemctl restart wpa_supplicant@wlan0

Плюсы systemd-networkd:

  • ключи от точек доступа никто не подберёт, поскольку в конфиге — их хэши.
  • Точка доступа подключается ещё на системном уровне, а не при входе юзера в иксы.

Переименуем каталог /etc/net обратно:

# mv -f /etc/net.old /etc/net

Удалим ненужные более openresolv и etcnet (тянет за собой NetworkManager и другие зависимости, чистит как пылесос):

# apt-get remove -y openresolv etcnet

Для синхронизации времени с определённых серверов в требуемом порядке, и чтобы дальнейшие обновления системы не изменили в этом ничего, создадим файл /etc/systemd/timesyncd.conf.d/ntp.conf со следующим содержимым:

[Time]
NTP = ntp0.zenon.net ntp1.zenon.net
FallbackNTP = ru.pool.ntp.org

Перезапустим сервис синхронизации:

# systemctl restart systemd-timesyncd

Удалим файл /etc/resolv.conf:

# rm -f /etc/resolv.conf

Создадим символьную ссылку /etc/resolv.conf на /run/systemd/resolve/resolv.conf:

# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Для настроек имени компьютера создадим файл /etc/sysctl.d/sysname.conf со следующим содержимым:

kernel.hostname = <имя компьютера>
kernel.domainname = <имя домена> # опционально

Перезагрузимся.

При необходимости отключения Wi-Fi делаем:

$ systemctl stop wpa_supplicant@wlan0

Спасибо @gbIMoBou за переданные знания! Настройка сети в контейнере