Управление сетью с помощью DHCPCD

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Network management using DHCPCD and the translation is 100% complete.

Эта статья основана на теме из 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. Создайте конфигурационный файл, если он ещё не существует:

ФАЙЛ /etc/wpa_supplicant/wpa_supplicant.conf
# Разрешить пользователям из группы '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:

ФАЙЛ /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"

В случае, когда необходима аутентификация для проводного интерфейса, конфигурационный файл должен выглядеть примерно так:

ФАЙЛ /etc/conf.d/wpa_supplicant
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.

Внешние ресурсы