Systemd-networkd: различия между версиями

Материал из ALT Linux Wiki
Строка 24: Строка 24:


==Беспроводная сеть==
==Беспроводная сеть==
Для подключения к Wi-Fi понадобится вот такой файл:
Для подключения к Wi-Fi понадобится включить авторизацию <code># systemctl enable wpa_supplicant@wlan0</code> и создать вот такой файл:
{|class="mw-collapsible mw-collapsed wikitable"
{|class="mw-collapsible mw-collapsed wikitable"
!/etc/wpa_supplicant/wpa_supplicant-wlan0.conf &nbsp;
!/etc/wpa_supplicant/wpa_supplicant-wlan0.conf &nbsp;
Строка 39: Строка 39:
</source>
</source>
|}
|}
И включённая авторизация:
# systemctl enable wpa_supplicant@wlan0
Чтоб подключаться к точке доступа по паролю, нужно...
Чтоб подключаться к точке доступа по паролю, нужно...
#Добавить её, не светя пароль в настройках:
#Добавить её, не светя пароль в настройках:

Версия от 05:43, 6 июля 2023

Управление сетью посредством systemd-networkd

Подготовка

  1. Установка пакета systemd-timesyncd, который пригодится сразу после переезда, автоматически тянет за собой собственно systemd-networkd:
     # apt-get install -y systemd-timesyncd
    
  2. Дабы оставить возможность отката, вместо сноса etcnet пока достаточно просто переименовать его каталог:
     # mv -f /etc/net /etc/net.old
    
  3. Создать в каталоге /etc/systemd/network/ пару файлов автонастройки по DHCP для проводных (lan.network) и беспроводных (wifi.network) интерфейсов (предварительно удостоверившись в отсутствии настроенных на статические адреса туннелей, вланов, мостов и т.п.) со следующим содержимым:
    [Match]
    Name = X* # вместо "Х" — "e" для lan.network и "w" для wifi.network
    
    [Network]
    DHCP = ipv4
    

Проводная сеть

Пора переключиться с etcnet/NetworkManager на systemd-networkd:

# systemctl disable network NetworkManager && systemctl enable systemd-{network,timesync}d

Для проверки работоспособности нового сервиса следует перезагрузиться с воткнутым сетевым кабелем (поскольку Wi-Fi ещё не настроен) и сразу после перезагрузки — убедиться, что адрес получен каким-то из интерфейсов:

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

Беспроводная сеть

Для подключения к Wi-Fi понадобится включить авторизацию # systemctl enable wpa_supplicant@wlan0 и создать вот такой файл:

/etc/wpa_supplicant/wpa_supplicant-wlan0.conf  
 ctrl_interface=/run/wpa_supplicant
 ctrl_interface_group=wheel
 eapol_version=2
 fast_reauth=1
 ## Только для бродкомов ##
 #preassoc_mac_addr=0
 #mac_addr=0
 ##########################

Чтоб подключаться к точке доступа по паролю, нужно...

  1. Добавить её, не светя пароль в настройках:
    # wpa_passphrase "BSSID" "пароль" | sed '/#/d' >>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  2. Перезапустить авторизацию на интерфейсе:
    # systemctl restart wpa_supplicant@wlan0

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

Для отключения Wi-Fi достаточно остановить авторизацию:

# systemctl stop wpa_supplicant@wlan0

DNS

С получением ДНС-серверов по сети прекрасно справляется systemd-resolved, который нужно установить, запустить и нацелиться на /run/systemd/resolve/resolv.conf символьной ссылкой /etc/resolv.conf, заменив ею файл openresolv'а:

# apt-get install systemd-resolved
# systemctl enable --now systemd-resolved
# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

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

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

Уборка

Если всё получилось, можно:

  • вернуть на место каталог /etc/net:
# mv -f /etc/net.old /etc/net
  • удалить ненужные более openresolv и etcnet:
Внимание: вместе с openresolv'ом приведённая команда тянет за собой NetworkManager и другие зависимости — чистит как пылесос!
# apt-get remove etcnet openresolv
  • перезагрузиться.

Заключение

Преимущества такого подхода к настройке сети:

  • работает в любом современном дистрибутиве linux в отличие от дистроспецифичных upstart, etcnet и пр.;
  • Wi-Fi подключается ещё при загрузке подобно проводному соединению, а не после входа юзера в иксы, как с NetworkManager;
  • ключи от точек доступа из системы не выудить, поскольку в конфиге — только их хэши.

Данная заметка — лишь первый шаг в освоении systemd-networkd и малая часть того, чем я пользуюсь и что он вообще умеет:

  • поднимать связки (bonds),
  • делить тегированные вланы,
  • строить мосты всех со всеми,
  • выступать не только клиентом DHCP, но и его сервером (пусть и с минимумом настроек),
  • прибивать отдельные статические маршруты через винегрет интерфейсов и даже заполнять для них пространные таблицы маршрутизации…

…и многое другое.

Ссылки

Настройка сети для контейнера nspawn

Благодарности

Статью вчерне накропал @NeuroFreak по следам моей ему помощи в настройке домашней сети на лаптопе. Мне оставалось её вычитать, отрихтовать, дополнить и структурировать.

Обратная связь