Управление сетью с помощью DHCPCD
Эта статья основана на теме из Gentoo Forums и повествует о том, как использовать dhcpcd в качестве менеджера сети.
Конечно же, можно использовать dhcpcd вместе с net.* сценариями. На самом деле, если dhcpcd уже установлен, он будет использоваться как DHCP клиен по умолчанию, если строка config_eth0="dhcp"
установлена в /etc/conf.d/net. Эта статья фокусируется на использовании dhcpcd «в одиночку» (standalone).
Настройка
Убедитесь, что dhcpcd уже установлен. Затем добавьте его в уровень запуска по умолчанию (default) и запустите сервис.
При использовании OpenRC введите:
root #
rc-update add dhcpcd default
root #
rc-service dhcpcd start
При использовании systemd введите:
root #
systemctl enable dhcpcd
root #
systemctl start dhcpcd
Эта инструкция по настройке сети отличается от инструкций по умолчанию в Руководстве Gentoo. Достоинство этого метода состоит в том, что он автоматически переключается между проводным и беспроводным сетевым интерфейсом.
Беспроводная сеть
wpa_supplicant
Для аутентификации беспроводных и проводных сетевых интерфейсов можно использовать wpa_supplicant. Создайте конфигурационный файл, если он ещё не существует:
# Разрешить пользователям из группы 'wheel' контролировать wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
# Разрешить wpa_gui / wpa_cli записывать в этот файл
update_config=1
Для аутентификации проводных интерфейсов добавьте конфигурационный файл, упомянутый в разделе Настройка проводного 802.1X статьи wpa_supplicant.
Для начала, следуйте руководству по настройке для dhcpcd.
Установите wpa_supplicant (Необходима версия новее 2.6-r2, чтобы присутствовала опция CONFIG_MATCH_IFACE добавлена в апреле 2017):
root #
emerge --ask net-wireless/wpa_supplicant
Используя OpenRC
Для беспроводного сетевого интерфейса добавьте опцию -M
перед файлом в conf.d:
wpa_supplicant_args="-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
В случае, когда необходима аутентификация для проводного интерфейса, конфигурационный файл должен выглядеть примерно так:
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
После завершения конфигурации запустите его как сервис:
root #
rc-update add wpa_supplicant default
root #
rc-service wpa_supplicant start
Используя Systemd
Systemd позволяет более простую настройку для отдельных устройств, без необходимости создавать вышеуказанные файлы в conf.d. Как указано в строке wpa_supplicant из таблицы раздела Нативные сервисы, символьная ссылка сервиса, напр. wpa_supplicant@wlan0.service
, ищет отдельные конфигурационные файлы для своего устройства, в данном случае wlan0
.
Чтобы сконфигурировать специфическое устройство таким образом, вначале скопируйте или переименуйте файл /etc/wpa_supplicant/wpa_supplicant.conf как /etc/wpa_supplicant/wpa_supplicant-ИМЯ_УСТРОЙСТВА.conf, где ИМЯ_УСТРОЙСТВА
нужно заменить на имя устройство, например wlan0
.
Затем переместитесь в каталог /etc/systemd/system/multi-user.target.wants и создайте символьную ссылку:
root #
ln -s /lib/systemd/system/wpa_supplicant@.service wpa_supplicant@ИМЯ_УСТРОЙСТВА.service
где ИМЯ_УСТРОЙСТВА
— это такое же имя устройства, что и в конфигурационном файле.
Обратите внимание на символы @ в обоих аргументах во время создания символьной ссылки.
Протестируйте систему:
root #
systemctl daemon-reload
root #
systemctl start wpa_supplicant@ИМЯ_УСТРОЙСТВА
root #
systemctl status wpa_supplicant@ИМЯ_УСТРОЙСТВА
Используя net-wireless/iwd
См. статью iwd.
Тестирование
Остановите сервис dhcpcd, затем запустите dhcpcd с параметрами d (--debug) и -B (--nobackground), чтобы увидеть начало подключения к сети:
root #
rc-service etc/init.d/dhcpcd stop
root #
dhcpcd -dB
dhcpcd-6.11.3 starting dev: loaded udev eth0: executing `/lib/dhcpcd/dhcpcd-run-hooks' PREINIT eth0: executing `/lib/dhcpcd/dhcpcd-run-hooks' NOCARRIER wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' PREINIT wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' CARRIER DUID xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx wlan0: IAID XX:XX:XX:XX wlan0: delaying IPv6 router solicitation for 0.9 seconds wlan0: delaying IPv4 for 0.3 seconds eth0: waiting for carrier wlan0: reading lease `/var/lib/dhcpcd/dhcpcd-wlan0-.lease' wlan0: rebinding lease of 192.168.178.23 wlan0: sending REQUEST (xid 0x66820be2), next in 3.3 seconds wlan0: acknowledged 192.168.178.23 from 192.168.178.1 wlan0: leased 192.168.178.23 for 864000 seconds wlan0: renew in 432000 seconds, rebind in 756000 seconds wlan0: writing lease `/var/lib/dhcpcd/dhcpcd-wlan0-.lease' wlan0: IP address 192.168.178.23/24 already exists wlan0: changing route to 192.168.178.0/24 wlan0: changing default route via 192.168.178.1 wlan0: ARP announcing 192.168.178.23 (1 of 2), next in 2.0 seconds wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' BOUND wlan0: soliciting an IPv6 router wlan0: sending Router Solicitation wlan0: ARP announcing 192.168.178.23 (2 of 2)
Статический IP-адрес
В случае, если карта сетевого интерфейса должна работать со статическим IP-адресом, введите это в графическом пользовательском интерфейсе, также информация может быть введена вручную (в данный момент ссылка недоступна) в /etc/dhcpcd.conf, как показано в Dhcpcd#Static_IP_addresses.
Переход с Gentoo net.* сценариев
Если вы переходите на dhcpcd с net.* сценариев Gentoo, очень важно удалить net.* сценарии из уровней выполнения. Чтобы просмотреть, на каких уровнях выполнения они находятся сейчас:
user $
rc-config list | grep 'wpa_supplicant\|dhcpcd\|net\.'
net.wlp8s0 default dhcpcd default
Всё, что начинается на net.
, не должно быть в уровнях выполнения. В примере выше, net.wlp8s0 должен быть удалён:
root #
rc-update del net.wlp8s0
root #
rc-service net.wlp8s0 stop
После успешной настройки сети можно полностью удалить старые net.* сценарии Gentoo. Чтобы сделать это, отключите USE-флаг netifrc
, переустановите sys-apps/openrc и затем удалите net-misc/netifrc:
root #
echo 'sys-apps/openrc -netifrc' >> /etc/portage/package.use
root #
emerge --ask --newuse --oneshot sys-apps/openrc
root #
emerge --ask --verbose --depclean net-misc/netifrc
Также, старые конфигурационные файлы и симлинки должны быть удалены:
root #
rm /etc/conf.d/net
root #
rm /etc/init.d/net.*
Сервисы, зависимые от сети
Использование сервисов, зависимых от сети больше не поддерживается dhcpcd начиная с версии openrc-0.16.4.
Графический пользовательский интерфейс
Графический пользовательский интерфейс для dhcpcd предоставляется пакетом net-misc/dhcpcd-ui.
См. также
- Dhcpcd — популярный DHCP клиент, способный работать как с IPv4, так и с IPv6 конфигурациями.
- Dhcpcd-ui — a Qt and GTK monitor and configuration graphical user interface for dhcpcd.