Тайм-ауты сетевого сервиса каждую секунду перезапускаются
Настройка
Мой сервер Debian на online.net использует двойной стек ipv4/ipv6
# /etc/network/interfaces
auto lo
iface lo inet loopback
source /etc/network/interfaces.d/*
В /etc/network/interfaces.d/ есть 2 файла
# /etc/network/interfaces.d/device-enp0s20-inet
auto enp0s20
iface enp0s20 inet dhcp
а также
# /etc/network/interfaces.d/device-enp0s20-inet6
auto enp0s20
iface enp0s20 inet6 dhcp
request_prefix 1
accept_ra 2
Я запрашиваю мой делегированный префикс ipv6, используя dhclient
# /etc/dhcp/dhclient.conf
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
interface "enp0s20" {
send dhcp6.client-id XX:XX:XX:XX:XX:XX:XX:XX:XX:XX;
}
В inet6-настройке enp0s20 я хочу accept_ra=2, потому что в моем ядре net.ipv6.conf.all.forwarding=1 (я намереваюсь настроить vpn).
Эта проблема
Перезапуск сетевой службы завершается неудачно при каждой второй попытке.
$ sudo serving networking restart # first attempt
Job for networking.service failed because a timeout was exceeded.
See "systemctl status networking.service" and "journalctl -xe" for details.
$ sudo service networking restart # second attempt works fine (this cycles)
Запуск сетевой службы также всегда приводит к сбою при загрузке.
Журналы
Я включил это, чтобы лучше видеть, что происходит
# /etc/default/networking
VERBOSE=yes
Вот что я получаю из journalctl, когда перезапуск не удается:
Apr 03 12:38:37 boxname ifup[4135]: ifup: parsing file /etc/network/interfaces.d/device-enp0s20-inet
Apr 03 12:38:37 boxname ifup[4135]: ifup: parsing file /etc/network/interfaces.d/device-enp0s20-inet6
Apr 03 12:38:37 boxname ifup[4135]: /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
Apr 03 12:38:37 boxname ifup[4135]: ifup: configuring interface enp0s20=enp0s20 (inet)
Apr 03 12:38:37 boxname ifup[4135]: /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
Apr 03 12:38:37 boxname ifup[4135]: /sbin/dhclient -4 -v -pf /run/dhclient.enp0s20.pid -lf /var/lib/dhcp/dhclient.enp0s20.leases -I -df /var/lib/dhcp/dhclient6.enp0s20.leases enp0s20
Apr 03 12:38:37 boxname ifup[4135]: Internet Systems Consortium DHCP Client 4.3.5
Apr 03 12:38:37 boxname ifup[4135]: Copyright 2004-2016 Internet Systems Consortium.
Apr 03 12:38:37 boxname ifup[4135]: All rights reserved.
Apr 03 12:38:37 boxname ifup[4135]: For info, please visit https://www.isc.org/software/dhcp/
Apr 03 12:38:38 boxname ifup[4135]: Listening on LPF/enp0s20/<REDACTED>
Apr 03 12:38:38 boxname ifup[4135]: Sending on LPF/enp0s20/<REDACTED>
Apr 03 12:38:38 boxname ifup[4135]: Sending on Socket/fallback
Apr 03 12:38:38 boxname ifup[4135]: DHCPDISCOVER on enp0s20 to 255.255.255.255 port 67 interval 4
Apr 03 12:38:38 boxname ifup[4135]: DHCPREQUEST of 163.172.XX.XX on enp0s20 to 255.255.255.255 port 67
Apr 03 12:38:38 boxname ifup[4135]: DHCPOFFER of 163.172.XX.XX from 163.172.XX.1
Apr 03 12:38:38 boxname ifup[4135]: DHCPACK of 163.172.XX.XX from 163.172.XX.1
Apr 03 12:38:38 boxname ifup[4135]: bound to 163.172.XX.XX -- renewal in 2147483648 seconds.
Apr 03 12:38:38 boxname ifup[4135]: /bin/run-parts --exit-on-error --verbose /etc/network/if-up.d
Apr 03 12:38:38 boxname ifup[4135]: run-parts: executing /etc/network/if-up.d/000resolvconf
Apr 03 12:38:38 boxname ifup[4135]: run-parts: executing /etc/network/if-up.d/openntpd
Apr 03 12:38:38 boxname ifup[4135]: run-parts: executing /etc/network/if-up.d/openssh-server
Apr 03 12:38:38 boxname ifup[4135]: run-parts: executing /etc/network/if-up.d/upstart
Apr 03 12:38:38 boxname ifup[4135]: ifup: configuring interface enp0s20=enp0s20 (inet6)
Apr 03 12:38:38 boxname ifup[4135]: /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
Apr 03 12:38:38 boxname ifup[4135]: /sbin/modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure.
Apr 03 12:38:38 boxname ifup[4135]: /sbin/sysctl -q -e -w net.ipv6.conf.enp0s20.accept_ra=2
Apr 03 12:38:38 boxname ifup[4135]: /bin/ip link set dev enp0s20 up
Apr 03 12:38:38 boxname ifup[4135]: /lib/ifupdown/wait-for-ll6.sh
Apr 03 12:38:39 boxname ifup[4135]: /sbin/dhclient -6 -pf /run/dhclient6.enp0s20.pid -lf /var/lib/dhcp/dhclient6.enp0s20.leases -I -P -N -df /var/lib/dhcp/dhclient.enp0s20.leases enp0s20
Apr 03 12:38:50 boxname ifup[4135]: RTNETLINK answers: Invalid argument
Вопрос
Можете ли вы помочь мне выяснить, что не так и исправить это?
1 ответ
Я нашел проблему!
Немного изучив, я обнаружил, что dhcpv6 работает таким образом, что клиенты общаются с порта 546 и с серверов с порта 547. Я добавил два следующих правила ip6tables, которые заставляют мою коробку действовать как клиент:
-A INPUT -p udp --sport 547 --dport 546 -j ACCEPT
-A OUTPUT -p udp --sport 546 --dport 547 -j ACCEPT
Это решило проблему.
Эта проблема возникла только потому, что я использовал брандмауэр и непреднамеренно заблокировал dhcpv6. Если вы не используете брандмауэр, вам не нужны эти правила, и этот пост не является решением вашей проблемы.