У меня есть человечность 16.04 (ядро 4.7.3) система, которая теряет ее маршрут значения по умолчанию IPv6 после первого РА, которого это приняло, истекает (30 минут).
Вот то, на что таблица маршрутизации была похожа когда загруженная система:
# ip -6 route
2001:xxxx:xxxx:xxxx::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
fe80::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
default via fe80::ce46:d6ff:feb0:f6b1 dev ens192 proto ra metric 1024 expires 1747sec mtu 1480 hoplimit 64 pref high
30 минут спустя я видел это:
# ip -6 route
2001:xxxx:xxxx:xxxx::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
fe80::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
default via fe80::ce46:d6ff:feb0:f6b1 dev ens192 proto ra metric 1024 expires -8sec mtu 1480 hoplimit 64 pref high
И затем, несколько секунд после этого, я видел это:
# ip -6 route
2001:xxxx:xxxx:xxxx::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
fe80::/64 dev ens192 proto kernel metric 256 mtu 1480 pref medium
tcpdump показывает, что система получает RAs:
#tcpdump -vv ip6
tcpdump: listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
15:34:21.842483 IP6 (class 0xe0, hlim 255, next-header ICMPv6 (58) payload length: 96) fe80::ce46:d6ff:feb0:f6b1 > ip6-allnodes: [icmp6 sum ok] ICMP6, router advertisement, length 96
hop limit 64, Flags [none], pref high, router lifetime 1800s, reachable time 0s, retrans time 0s
source link-address option (1), length 8 (1): cc:46:d6:b0:f6:b1
0x0000: cc46 d6b0 f6b1
advertisement interval option (7), length 8 (1): 30000ms
0x0000: 0000 0000 7530
mtu option (5), length 8 (1): 1480
0x0000: 0000 0000 05c8
rdnss option (25), length 24 (3): lifetime 60s, addr: ordns.he.net
0x0000: 8075 0000 003c 2001 0470 0020 0000 0000
0x0010: 0000 0000 0002
prefix info option (3), length 32 (4): 2001:xxxx:xxxx:xxxx::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
0x0000: 40c0 0027 8d00 0009 3a80 0000 0000 2001
0x0010: XXXX XXXX XXXX 0000 0000 0000 0000
Таким образом, я предположил, что, так как tcpdump видит RAs, брандмауэр должен отбрасывать RAs (я использую UFW для управления iptables).
Таким образом, я отключил ufw и ожидал сезам, я видел другого РА в tcpdump. Все еще никакой маршрут по умолчанию.
Что продолжается? Я пропускаю что-то простое?
Править:
После большего количества рытья в систему... Похоже, что сетевому сервису не удается запуститься на начальной загрузке.
# systemctl status networking
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/generator/networking.service.d
└─50-insserv.conf-$network.conf
Active: failed (Result: exit-code) since Sun 2016-09-11 16:47:36 MST; 1min 39s ago
Docs: man:interfaces(5)
Process: 5650 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
Process: 5599 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (cod=exited, status=0/SUCCESS)
Main PID: 5650 (code=exited, status=1/FAILURE)
Sep 11 16:47:31 asdf systemd[1]: Starting Raise network interfaces...
Sep 11 16:47:33 asdf ifup[5650]: /sbin/ifup: waiting for lock on /run/network/ifstate.ens192
Sep 11 16:47:35 asdf ifup[5650]: RTNETLINK answers: File exists
Sep 11 16:47:35 asdf ifup[5650]: Failed to bring up ens192.
Sep 11 16:47:36 asdf systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Sep 11 16:47:36 asdf systemd[1]: Failed to start Raise network interfaces.
Sep 11 16:47:36 asdf systemd[1]: networking.service: Unit entered failed state.
Sep 11 16:47:36 asdf systemd[1]: networking.service: Failed with result 'exit-code'.
# journalctl -xe
Sep 11 16:47:35 asdf sh[5593]: RTNETLINK answers: File exists
Sep 11 16:47:35 asdf sh[5593]: Failed to bring up ens192.
Sep 11 16:47:35 asdf systemd[1]: ifup@ens192.service: Main process exited, code=exited, status=1/FAILURE
Sep 11 16:47:35 asdf ifup[5650]: RTNETLINK answers: File exists
Sep 11 16:47:35 asdf ifup[5650]: Failed to bring up ens192.
Sep 11 16:47:36 asdf systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Sep 11 16:47:36 asdf systemd[1]: Failed to start Raise network interfaces.
Теперь... То, что интересно мне об этом, - то, если я делаю это:
# ifdown --force ens192 && ifup ens192
RTNETLINK answers: No such process
RTNETLINK answers: Cannot assign requested address
Waiting for DAD... Done
root@az-unixweb-1:~# ip -6 route
2001:xxxx:xxxx:xxxx::/64 dev ens192 proto kernel metric 256 pref medium
fe80::/64 dev ens192 proto kernel metric 256 mtu 1500 pref medium
default via 2001:xxxx:xxxx:xxxx::1 dev ens192 metric 1024 pref medium
Я могу также запустить и остановить сетевой сервис успешно после выполнения ifdown - сила.
Как Вы видите, это теперь берет конфигурацию из моего/etc/network/interfaces файла, который похож на это:
auto lo
iface lo inet loopback
iface ens192 inet static
address a.b.c.d
netmask 255.255.255.224
gateway a.b.c.r
dns-nameserver a.b.c.dns
iface ens192 inet6 static
address 2001:xxxx:xxxx:xxxx::44
netmask 64
gateway 2001:xxxx:xxxx:xxxx::1
dns-nameserver 2001:xxxx:xxxx:xxxx::42
dns-nameserver 2001:470:20::2
auto ens192
С этой конфигурацией я ожидаю точно, что таблица маршрутизации выше дает мне. Эта конфигурация осталась неизменной, так как я первоначально задал вопрос. Если я перезагружаю, сервис перестал работать снова, и он вернулся к использованию автоматически сконфигурированного адреса, плюс мой настроенный адрес, только плюс использование рекламируемого РА маршрута (в течение 30 минут).
Так... Это все еще повреждается и сервисы, которые зависят от сетевого сервиса для запуска также сбоя на запуске.
Хорошо, это не совсем идеальное решение, так как я хотел полностью статическую конфигурацию, но сейчас у меня есть рабочая конфигурация.
Я удалил строку шлюза из моего файла /etc/network/interfaces
и перезагрузился. Это позволило запустить сетевой сервис при загрузке и привело к тому, что я настроил маршрут по умолчанию, настроенный с помощью механизма RA. Разница в том, что маршрут фактически обновляется каждые 30 секунд, когда мой маршрутизатор отправляет RA, тогда как раньше, когда в этом файле была указана линия шлюза, маршрут RA никогда не обновлялся и в итоге не выполнялся.
Честно говоря, для меня это похоже на ошибку, если я не пропущу что-то фундаментальное ...