vitus_wagner: My photo 2005 (Default)

Решил тут попробовать перейти на одном из ноутбуков с конфигурации сети с помощью пакета ifupdown на использование systemd-networkd. А то мне как-то начинает казаться что ifupdown постепенно перестает развиваться и поддерживаться.

А systemd в системе все равно держать приходится. Потому что без него половина нынешнего десктопного софта работает как-то странно.

На серверах и сборочных контейнерах я уже как-то давно использую systemd-networkd там где дистрибутивный способ конфигурирования сети не срабатывает без вмешательства человека. В смысле. если сеть завелась сама, то пусть работает. А если надо разбираться в какой-нибудь очередной etcnet, то лучше ее оторвать и делать через systemd, он везде одинаковый.

Требования к конфигурации сети на ноутбуке у меня следующие:

  1. Есть три интерфейса - wifi, ethernet и внутренний бридж для контейнеров и виртуальных машин.
  2. По умолчанию работает wifi, но если в enhernet воткнули кабель, то он лучше.
  3. Есть кэширующий DNS-сервер, он же резолвит имена виртуалок и контейнеров, поэтому единственным сервером в /etc/resolv.conf должен быть он.
  4. Виртуалки маскарадятся.
  5. Надо использовать DNS-сервера выданные по DHCP, потому как мало ли в какой сети ноутбук окажется. Т.е. инструмент конфигурировани сети должен уметь подсунуть dnsmasq-у правильный resolv-файл, и этот файл не должен называться /etc/resolv.conf.

Для этой цели потребовалась следующая конфигурация

1) enable-м сервис wpa_supplican@имя-интерфейса (вот пусть тому уроду, который придумал интерфейсы переименовывать, икнется). Конфиг к нему вполне подошел тот же самый, какой использовался для ifupdown. Пришлось только переименовать из просто wpa_supplicant.conf в wpa_wsupplicant-имя-интерфейса.conf.

Для тех, кто раньше wpa_supplicant-ом не пользовался - советую обратить внимание на опции сtrl_interface и update_config. Если у вас в ctrl_interface написана группа, в которую консольный пользователь входит, например netdev, то это позволит коннектиться всякими инструментами конфигурирования, например wpa_gui. Ну и update_config нужен для того чтобы сохранить то, что с их помощью конфигурировали. И то, и другое жизненно необходимо если вы периодически подключаетесь к ранее незнакомым сетям, например во всяких кафе.

2) то же самое проделываем с сервисами systemd-resolved и systemd-networkd (казалось бы зачем нам resolved? Он только мешает, пытаясь прибиндиться к 53 порту localhost, где у нас должен быть dnsmasq). Но нет, нам нужно чтобы systemd-networkd передал ему по d-bus адреса dns-серверов, а тот прописал их в /run/systemd/resolve/resolv.conf. А чтобы отучить его занимать порт, пропишем в /etc/systemd/resolved.conf DNSStubListener=no.

3) Прописываем /run/systemd/resolve/resolv.conf в как resolv-file в /etc/dnsmasq.conf

4) пишем файлы конфигурации интерфейсов. У Wi-Fi он совсем простой

[Match] Name=wlp* [Network] DHCP=yes А вот эзернету надо еще указать

[Link] RequiredForOnline=no

Что касается бриджа, там конфиг наиболее сложный. Потому что если раньше в /etc/network/interfaces были post-up команды с помощью которых можно было включить в ядре форвардинг, или там маскарад для этого интерфейса. то теперь у systemd-networkd отдельные ключевые слова на каждый такой случай. Ну это общее правило systemd. Ничего не делается обычными командами, для всего предусмотрены специальные опции в конфиге. а если не предусмотрены, то вам не повезло.

Впрочем зачем вообще держать форвардинг выключенным не понимаю, поэтому его можно включить глобально, добавив соотвествующее правило в /etc/sysctl.d. А для настройки маскарда воспользоваться nftables. Хотя вот тут, похоже сервис, предоставленный systemd-networkd будет не лишним.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

November 2025

S M T W T F S
       1
2345678
9101112131415
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 2nd, 2025 04:26 am
Powered by Dreamwidth Studios