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

Материал из ALT Linux Wiki
Строка 3: Строка 3:
==Подготовка==
==Подготовка==
#Установка пакета [[systemd-timesyncd]], который пригодится сразу после переезда, автоматически тянет за собой собственно systemd-networkd:
#Установка пакета [[systemd-timesyncd]], который пригодится сразу после переезда, автоматически тянет за собой собственно systemd-networkd:
#: # apt-get install -y systemd-timesyncd
#:<source lang=bash> # apt-get install -y systemd-timesyncd</source>
#Дабы оставить возможность отката, вместо сноса etcnet пока достаточно просто переименовать его каталог:
#Дабы оставить возможность отката, вместо сноса <code>etcnet</code> пока достаточно просто переименовать его каталог:
#: # mv -f /etc/net /etc/net.old
#:<source lang=bash> # mv -f /etc/net /etc/net.old</source>
#Создать пару файлов автонастройки для проводных (<code>/etc/systemd/network/lan.network</code>) и беспроводных (<code>/etc/systemd/network/lan.network</code>) интерфейсов по DHCP со следующим содержимым:
#Создать пару файлов автонастройки для проводных (<code>/etc/systemd/network/lan.network</code>) и беспроводных (<code>/etc/systemd/network/wifi.network</code>) интерфейсов по DHCP (предварительно удостоверившись в отсутствии настроенных на статические адреса туннелей, вланов, мостов и т.п.) со следующим содержимым:
#:<source lang=ini>
#:<source lang=ini>
[Match]
[Match]
Name = e* # лучше предварительно удостовериться в отсутствии настроенных на статические адреса туннелей, вланов, мостов и т.п.
Name = e* # в lan.network
Name = w* # в wifi.network


[Network]
[Network]
DHCP = ipv4
DHCP = ipv4
</source>
</source>
#:и:
#:<source lang=ini>
[Match]
Name = w* # лучше предварительно удостовериться в отсутствии настроенных на статические адреса туннелей, вланов, мостов и т.п.
[Network]
DHCP = ipv4
</source>
#:...соответственно.
==Проводная сеть==
==Проводная сеть==
Пора переключиться с etcnet / NetworkManager на systemd-networkd:
Пора переключиться с etcnet / NetworkManager на systemd-networkd:
Строка 74: Строка 66:
#Перезагрузиться.
#Перезагрузиться.
==Заключение==
==Заключение==
Плюсы systemd-networkd:
Плюсы такого способа настройки:
*Wi-Fi подключается ещё при загрузке, а не после входа юзера в иксы;
*Wi-Fi подключается ещё при загрузке, а не после входа юзера в иксы;
*ключи от точек доступа из системы не выудить, поскольку в конфиге — только их хэши.
*ключи от точек доступа из системы не выудить, поскольку в конфиге — только их хэши;
*работает в любом современном дистрибутиве linux в отличие от дистроспецифичных <code>upstart</code>, <code>etcnet</code> и пр.
И это лишь малая часть того, что умеет <code>systemd-networkd</code>. В частности её посредством настраиваются мосты (bridges), сетевые объединения (bonds) и мн.др.
==P.S.==
Создание статьи инициировано @NeuroFreak, которому я помогал настроить по этой методе домашнюю сеть на лаптопе.
Создание статьи инициировано @NeuroFreak, которому я помогал настроить по этой методе домашнюю сеть на лаптопе.
[[Категория:Systemd]]
[[Категория:Systemd]]
{{Category navigation|title=Использование оборудования|category=использование оборудования|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Использование оборудования|category=использование оборудования|sortkey={{SUBPAGENAME}}}}
[[Контейнеры_systemd-nspawn#Сеть|Настройка сети для контейнера nspawn]]
[[Контейнеры_systemd-nspawn#Сеть|Настройка сети для контейнера nspawn]]

Версия от 11:43, 9 марта 2022

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Управление сетью посредством 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/lan.network) и беспроводных (/etc/systemd/network/wifi.network) интерфейсов по DHCP (предварительно удостоверившись в отсутствии настроенных на статические адреса туннелей, вланов, мостов и т.п.) со следующим содержимым:
    [Match]
    Name = e* # в  lan.network
    Name = w* # в wifi.network
    
    [Network]
    DHCP = ipv4
    

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

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

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

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

Сразу после перезагрузки имеет смысл проверить, получен ли адрес каким-нибудь из интерфейсов:

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

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

  1. Для подключения к Wi-Fi понадобится файл /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
     ##########################
    
  2. Чтоб подключаться к точке доступа по паролю, требуется добавить его, не светя в настройках:
    # wpa_passphrase "имя точки доступа" "пароль от нее" | sed '/#/d' >>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  3. И включить авторизацию по Wi-Fi:
    # systemctl enable wpa_supplicant@wlan0
  4. Осталось перезагрузиться с выдернутым сетевым кабелем и способом, описанным выше, проверить работоспособность уже Wi-Fi.
  5. Если нужно добавить новую точку доступа:
    # wpa_passphrase "имя новой точки доступа" "пароль от нее" | sed '/#/d' >>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
    # systemctl restart wpa_supplicant@wlan0
  6. При необходимости отключения Wi-Fi:
    # systemctl stop wpa_supplicant@wlan0

DNS

С получением ДНС-серверов по сети прекрасно справляется systemd-resolved, который нужно:

  • установить и запустить:
    # apt-get install systemd-resolved
    # systemctl enable --now systemd-resolved
  • нацелиться символьной ссылкой /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 = <имя домена> # опционально

Уборка

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

  1. Переименовать каталог /etc/net обратно:
    # mv -f /etc/net.old /etc/net
  2. Удалить ненужные более openresolv и etcnet (тянет за собой NetworkManager и другие зависимости, чистит как пылесос):
    # apt-get remove -y openresolv etcnet
  3. Перезагрузиться.

Заключение

Плюсы такого способа настройки:

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

И это лишь малая часть того, что умеет systemd-networkd. В частности её посредством настраиваются мосты (bridges), сетевые объединения (bonds) и мн.др.

P.S.

Создание статьи инициировано @NeuroFreak, которому я помогал настроить по этой методе домашнюю сеть на лаптопе.

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