Systemd-networkd: различия между версиями
Дым (обсуждение | вклад) (→DNS) |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 14: | Строка 14: | ||
DHCP = ipv4 | DHCP = ipv4 | ||
</source> | </source> | ||
==Проводная сеть== | ==Проводная сеть== | ||
Пора переключиться с <code>etcnet</code>/<code>NetworkManager</code> на <code>systemd-networkd</code>: | Пора переключиться с <code>etcnet</code>/<code>NetworkManager</code> на <code>systemd-networkd</code>: | ||
Строка 23: | Строка 22: | ||
$ ip -o a s | awk '!/inet6|lo /' | $ ip -o a s | awk '!/inet6|lo /' | ||
</source> | </source> | ||
==Беспроводная сеть== | ==Беспроводная сеть== | ||
#Для подключения к Wi-Fi понадобится файл <code>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf</code> со следующим содержимым: | #Для подключения к Wi-Fi понадобится файл <code>/etc/wpa_supplicant/wpa_supplicant-wlan0.conf</code> со следующим содержимым: | ||
Строка 48: | Строка 46: | ||
#При необходимости отключения Wi-Fi: | #При необходимости отключения Wi-Fi: | ||
#:<source lang=bash># systemctl stop wpa_supplicant@wlan0</source> | #:<source lang=bash># systemctl stop wpa_supplicant@wlan0</source> | ||
==DNS== | ==DNS== | ||
С получением ДНС-серверов по сети прекрасно справляется <code>systemd-resolved</code>, который нужно установить, запустить и нацелиться на <code>/run/systemd/resolve/resolv.conf</code> символьной ссылкой <code>/etc/resolv.conf</code>, заменив ею файл <code>openresolv</code>'а: | С получением ДНС-серверов по сети прекрасно справляется <code>systemd-resolved</code>, который нужно установить, запустить и нацелиться на <code>/run/systemd/resolve/resolv.conf</code> символьной ссылкой <code>/etc/resolv.conf</code>, заменив ею файл <code>openresolv</code>'а: | ||
Строка 67: | Строка 56: | ||
kernel.hostname = <имя компьютера> | kernel.hostname = <имя компьютера> | ||
kernel.domainname = <имя домена> # опционально | kernel.domainname = <имя домена> # опционально | ||
==Уборка== | |||
Если всё получилось, можно: | |||
*переименовать каталог /etc/net обратно: | |||
<source lang=bash># mv -f /etc/net.old /etc/net</source> | |||
*удалить ненужные более openresolv и etcnet: | |||
{{Внимание|вместе с <code>openresolv</code>'ом приведённая команда тянет за собой <code>NetworkManager</code> и другие зависимости — чистит как пылесос!}} | |||
<source lang=bash># apt-get remove etcnet openresolv</source> | |||
*перезагрузиться. | |||
==Заключение== | ==Заключение== | ||
Преимущества такого подхода к настройке сети: | Преимущества такого подхода к настройке сети: | ||
Строка 79: | Строка 75: | ||
*прибивать статические маршруты через разные интерфейсы и заполнять таблицы маршрутизации для них… | *прибивать статические маршруты через разные интерфейсы и заполнять таблицы маршрутизации для них… | ||
…и многое другое. | …и многое другое. | ||
==Ссылки== | ==Ссылки== | ||
[[Контейнеры_systemd-nspawn#Сеть|Настройка сети для контейнера nspawn]] | [[Контейнеры_systemd-nspawn#Сеть|Настройка сети для контейнера nspawn]] |
Версия от 03:34, 10 марта 2022
Управление сетью посредством systemd-networkd
Подготовка
- Установка пакета systemd-timesyncd, который пригодится сразу после переезда, автоматически тянет за собой собственно
systemd-networkd
:# apt-get install -y systemd-timesyncd
- Дабы оставить возможность отката, вместо сноса
etcnet
пока достаточно просто переименовать его каталог:# mv -f /etc/net /etc/net.old
- Создать пару файлов автонастройки для проводных (
/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
Для проверки работоспособности нового сервиса следует перезагрузиться с воткнутым сетевым кабелем (поскольку Wi-Fi ещё не настроен) и сразу после перезагрузки — убедиться, что адрес получен каким-то из интерфейсов:
$ 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 ## Только для бродкомов ## #preassoc_mac_addr=0 #mac_addr=0 ##########################
- Чтоб подключаться к точке доступа по паролю, требуется добавить его, не светя в настройках:
# 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
- При необходимости отключения 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:
# apt-get remove etcnet openresolv
- перезагрузиться.
Заключение
Преимущества такого подхода к настройке сети:
- работает в любом современном дистрибутиве linux в отличие от дистроспецифичных
upstart
,etcnet
и пр.; - Wi-Fi подключается ещё при загрузке подобно проводному соединению, а не после входа юзера в иксы, как с
NetworkManager
; - ключи от точек доступа из системы не выудить, поскольку в конфиге — только их хэши.
Данная заметка — лишь первый шаг в освоении systemd-networkd
и малая часть того, чем я пользуюсь и что он вообще умеет:
- выступать не только клиентом DHCP, но и его сервером (пусть и с минимумом настроек);
- поднимать мосты (bridges) и связки (bonds);
- прибивать статические маршруты через разные интерфейсы и заполнять таблицы маршрутизации для них…
…и многое другое.
Ссылки
Настройка сети для контейнера nspawn
Благодарности
Статью вчерне накропал @NeuroFreak по следам моей ему помощи в настройке домашней сети на лаптопе. Мне оставалось её вычитать, отрихтовать, дополнить и структурировать.