Sunday, June 23, 2024

Re: IPv6 ULA routing stops working after 20 hours or so

> Maybe I should let slaacd run in the foreground till IPv6 stops working
> and see if that give out clues.

The output of slaacd looks completely normal. Like this over and over again:

ICMPv6 type(134), code(0) from fe80::2a0:57ff:fe3a:ac77%vio0 of length 112
update_iface_ra_dfr, dfr state: PROPOSAL_CONFIGURED, rl: 1800
dfr_proposal_state_transition[vio0] PROPOSAL_CONFIGURED ->
PROPOSAL_CONFIGURED, timo: 1788
update_iface_ra_prefix, addr state: PROPOSAL_CONFIGURED
updating address
configure_address: 1
iface_state_transition[vio0] IF_BOUND -> IF_BOUND, timo: -1
addr_proposal_state_transition[vio0] PROPOSAL_CONFIGURED ->
PROPOSAL_CONFIGURED, timo: 60477
update_iface_ra_prefix, addr state: PROPOSAL_CONFIGURED
updating address
configure_address: 1
iface_state_transition[vio0] IF_BOUND -> IF_BOUND, timo: -1
addr_proposal_state_transition[vio0] PROPOSAL_CONFIGURED ->
PROPOSAL_CONFIGURED, timo: 604788
update_iface_ra_rdns, rdns state: PROPOSAL_CONFIGURED, rl: 1800
rdns_proposal_state_transition[vio0] PROPOSAL_CONFIGURED ->
PROPOSAL_CONFIGURED, timo: 1788
configure_interface: vio0
configure_interface: vio0


I also dug into the debug output of my router.
Echo request goes out, reply comes back and is routed/forwarded to the
OpenBSD host.

[IPv6-Router] 2024/06/23 18:03:27,197 Devicetime: 2024/06/23
18:03:27,639 [INTERNET (14)]
IP packet, scope global, routing tag 0:
IPv6: 2a00:1450:4005:801::200e ->
2a02:810d:5fc0:f2a:bb4d:6e1a:d2f:c576, Payload-Len: 64
ICMP: Echo (ping) reply (129), ID: 18553, Seq: 0
--> Firewall: accepted, forwarded unicast via HOST_MAIL1 (6)


(The log-output is indistinguishable from when it is working.) Yet I
don't see them arriving with tcpdump:

# tcpdump -n -i vio0 ip6
tcpdump: listening on vio0, link-type EN10MB
18:29:38.703181 fe80::be24:11ff:fe10:5272.46404 >
fe80::2a0:57ff:fe3a:ac77.53: 29603+ AAAA? google.com.(28) [flowlabel
0xe0681]
18:29:38.731683 fe80::2a0:57ff:fe3a:ac77.53 >
fe80::be24:11ff:fe10:5272.46404: 29603 1/0/0 AAAA[|domain]
18:29:38.731839 fd00:172:17:170:c57c:a20c:2d74:124 >
2a00:1450:4005:801::200e: icmp6: echo request
18:29:39.740141 fd00:172:17:170:c57c:a20c:2d74:124 >
2a00:1450:4005:801::200e: icmp6: echo request
18:29:40.740110 fd00:172:17:170:c57c:a20c:2d74:124 >
2a00:1450:4005:801::200e: icmp6: echo request
18:29:42.980121 fe80::be24:11ff:fe10:5272 > fe80::2a0:57ff:fe3a:ac77:
icmp6: neighbor sol: who has fe80::2a0:57ff:fe3a:ac77
18:29:42.980551 fe80::2a0:57ff:fe3a:ac77 > fe80::be24:11ff:fe10:5272:
icmp6: neighbor adv: tgt is fe80::2a0:57ff:fe3a:ac77
18:29:43.731733 fe80::2a0:57ff:fe3a:ac77 > fe80::be24:11ff:fe10:5272:
icmp6: neighbor sol: who has fe80::be24:11ff:fe10:5272
18:29:43.731774 fe80::be24:11ff:fe10:5272 > fe80::2a0:57ff:fe3a:ac77:
icmp6: neighbor adv: tgt is fe80::be24:11ff:fe10:5272
^C
47 packets received by filter
0 packets dropped by kernel



Again if I restart the host it works (for about a day):

# tcpdump -n -i vio0 ip6
tcpdump: listening on vio0, link-type EN10MB
18:36:23.536231 fe80::be24:11ff:fe10:5272.40542 >
fe80::2a0:57ff:fe3a:ac77.53: 31164+ AAAA? google.com.(28) [flowlabel
0xb2311]
18:36:23.578447 fe80::2a0:57ff:fe3a:ac77.53 >
fe80::be24:11ff:fe10:5272.40542: 31164 1/0/0 AAAA[|domain]
18:36:23.579030 fd00:172:17:170:202c:9944:920d:70dd >
2a00:1450:4005:801::200e: icmp6: echo request
18:36:23.612097 fe80::2a0:57ff:fe3a:ac77 > ff02::1:ff0d:70dd: icmp6:
neighbor sol: who has fd00:172:17:170:202c:9944:920d:70dd
18:36:23.612132 fe80::be24:11ff:fe10:5272 > fe80::2a0:57ff:fe3a:ac77:
icmp6: neighbor adv: tgt is fd00:172:17:170:202c:9944:920d:70dd
18:36:23.612433 2a00:1450:4005:801::200e >
fd00:172:17:170:202c:9944:920d:70dd: icmp6: echo reply
18:36:24.580102 fd00:172:17:170:202c:9944:920d:70dd >
2a00:1450:4005:801::200e: icmp6: echo request
18:36:24.612662 2a00:1450:4005:801::200e >
fd00:172:17:170:202c:9944:920d:70dd: icmp6: echo reply
18:36:25.580090 fd00:172:17:170:202c:9944:920d:70dd >
2a00:1450:4005:801::200e: icmp6: echo request
18:36:25.611510 2a00:1450:4005:801::200e >
fd00:172:17:170:202c:9944:920d:70dd: icmp6: echo reply
^C
79 packets received by filter
0 packets dropped by kernel


Strange

>
>
>>
>>> On 23 Jun 2024, at 2:27 AM, Thomas Bohl
>>> <openbsd-misc-518597@aloof.de> wrote:
>>>
>>> Hello,
>>>
>>> I'm using ULAs for my local IPv6 networks. The hosts have internet
>>> access via the router doing NPTv6.
>>>
>>> After around 20 to 24 hours of uptime the OpenBSD hosts (three in
>>> total) are no longer able to reach the IPv6 internet. A restart of
>>> the affected hosts usually helps. In rare cases a double restart is
>>> required. Linux and Windows don't show this problem.
>>>
>>> Any ideas? What information should I provide in order to debug this
>>> further?
>>>
>>> # uname -a
>>> OpenBSD mail1 7.5 GENERIC#79 amd64
>>>
>>> # cat /etc/hostname.vio0
>>> # BEGIN ANSIBLE MANAGED BLOCK IPv6
>>> inet6 -soii
>>> inet6 autoconf
>>> # END ANSIBLE MANAGED BLOCK IPv6
>>> # BEGIN ANSIBLE MANAGED BLOCK IPv4
>>> inet 172.17.17.2 255.255.255.252
>>> !route add default 172.17.17.1
>>> # END ANSIBLE MANAGED BLOCK IPv4
>>>
>>>
>>> When things are working:
>>>
>>> # uptime
>>>   5:11PM  up 9 mins, 1 user, load averages: 0.00, 0.01, 0.00
>>>
>>>
>>> # ifconfig vio0
>>> vio0:
>>> flags=648843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6,INET6_NOSOII> mtu 1500
>>>          lladdr bc:24:11:10:52:72
>>>          index 1 priority 0 llprio 3
>>>          groups: egress
>>>          media: Ethernet autoselect
>>>          status: active
>>>          inet6 fe80::be24:11ff:fe10:5272%vio0 prefixlen 64 scopeid 0x1
>>>          inet 172.17.17.2 netmask 0xfffffffc broadcast 172.17.17.3
>>>          inet6 fd00:172:17:170:be24:11ff:fe10:5272 prefixlen 64
>>> autoconf pltime 604644 vltime 2591844
>>>          inet6 fd00:172:17:170:1fa3:a3db:db4a:707d prefixlen 64
>>> autoconf temporary pltime 74422 vltime 172248
>>>
>>>
>>> # ping6 -vn -c 3 google.com
>>> PING google.com (fd00:172:17:170:1fa3:a3db:db4a:707d -->
>>> 2a00:1450:4005:801::200e): 56 data bytes
>>> 64 bytes from 2a00:1450:4005:801::200e: icmp_seq=0 hlim=114
>>> time=27.533 ms
>>> 64 bytes from 2a00:1450:4005:801::200e: icmp_seq=1 hlim=114
>>> time=30.263 ms
>>> 64 bytes from 2a00:1450:4005:801::200e: icmp_seq=2 hlim=114
>>> time=30.143 ms
>>>
>>> --- google.com ping statistics ---
>>> 3 packets transmitted, 3 packets received, 0.0% packet loss
>>> round-trip min/avg/max/std-dev = 27.533/29.313/30.263/1.260 ms
>>>
>>>
>>> # traceroute6 -vn google.com
>>> traceroute6 to google.com (2a00:1450:4005:801::200e), 64 hops max, 60
>>> byte packets
>>>   1  fd00:172:17:170:2a0:57ff:fe3a:ac77 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  0.227 ms  0.159 ms  0.136 ms
>>>   2  2a02:810d:1:bf::3 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  13.606 ms 2a02:810d:1:bf::2 68
>>> bytes to fd00:172:17:170:1fa3:a3db:db4a:707d  15.823 ms
>>> 2a02:810d:1:bf::3 68 bytes to fd00:172:17:170:1fa3:a3db:db4a:707d
>>> 14.467 ms
>>>   3  * * *
>>>   4  * * *
>>>   5  * * *
>>>   6  2001:4860:1:1::2a4 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  16.263 ms  12.806 ms  14.327 ms
>>>   7  * 2001:4860:0:1::839f 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  15.828 ms *
>>>   8  * * *
>>>   9  2001:4860::c:4003:4958 152 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  27.715 ms  29.765 ms  30.264 ms
>>> 10  2001:4860::c:4002:f990 152 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  31.119 ms 2001:4860::c:4002:f991
>>> 152 bytes to fd00:172:17:170:1fa3:a3db:db4a:707d  29.906 ms
>>> 2001:4860::c:4002:f990 152 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  36.316 ms
>>> 11  2001:4860::c:4001:ebf 152 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  29.679 ms 2001:4860::c:4002:7869
>>> 152 bytes to fd00:172:17:170:1fa3:a3db:db4a:707d  33.901 ms  31.045 ms
>>> 12  2001:4860::9:4001:ecb 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  29.68 ms 2001:4860::9:4001:ec0
>>> 68 bytes to fd00:172:17:170:1fa3:a3db:db4a:707d  29.575 ms
>>> 2001:4860::9:4001:ecb 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  36.681 ms
>>> 13  2001:4860:0:1::6b65 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  29.283 ms * *
>>> 14  2001:4860:0:1::6b65 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  30.595 ms
>>> 2a00:1450:4005:801::200e 68 bytes to
>>> fd00:172:17:170:1fa3:a3db:db4a:707d  40.122 ms 2001:4860:0:1::6b65 68
>>> bytes to fd00:172:17:170:1fa3:a3db:db4a:707d  30.369 ms
>>>
>>>
>>> # route -n show -inet6
>>> Routing tables
>>>
>>> Internet6:
>>> Destination Gateway                                 Flags   Refs
>>> Use Mtu  Prio Iface
>>> default fe80::2a0:57ff:fe3a:ac77%vio0           UGS        0        8
>>> -     8 vio0
>>> ::/96 ::1                                     UGRS       0        0
>>> 32768     8 lo0
>>> ::1 ::1                                     UHhl      10       20
>>> 32768     1 lo0
>>> ::ffff:0.0.0.0/96 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002::/24 ::1                                     UGRS       0
>>> 0 32768     8 lo0
>>> 2002:7f00::/24 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002:e000::/20 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002:ff00::/24 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> fd00:172:17:170::/64 fd00:172:17:170:be24:11ff:fe10:5272
>>> UCPn       0        1 -     4 vio0
>>> fd00:172:17:170::/64 fd00:172:17:170:1fa3:a3db:db4a:707d
>>> UCPn       0        0 -     4 vio0
>>> fd00:172:17:170:1fa3:a3db:db4a:707d
>>> bc:24:11:10:52:72                       UHLl       0      193 -     1
>>> vio0
>>> fd00:172:17:170:be24:11ff:fe10:5272
>>> bc:24:11:10:52:72                       UHLl       0        0 -     1
>>> vio0
>>> fe80::/10 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> fec0::/10 ::1                                     UGRS       0
>>> 0 32768     8 lo0
>>> fe80::%vio0/64 fe80::be24:11ff:fe10:5272%vio0          UCn
>>> 1        0 -     4 vio0
>>> fe80::2a0:57ff:fe3a:ac77%vio0 00:a0:57:3a:ac:77
>>> UHLch      1       91 -     3 vio0
>>> fe80::be24:11ff:fe10:5272%vio0
>>> bc:24:11:10:52:72                       UHLl       0        8 -     1
>>> vio0
>>> fe80::1%lo0 fe80::1%lo0                             UHl
>>> 0        0 32768     1 lo0
>>> ff01::/16 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> ff01::%vio0/32 fe80::be24:11ff:fe10:5272%vio0          Um
>>> 0        2 -     4 vio0
>>> ff01::%lo0/32 fe80::1%lo0                             Um
>>> 0        1 32768     4 lo0
>>> ff02::/16 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> ff02::%vio0/32 fe80::be24:11ff:fe10:5272%vio0          Um
>>> 0        5 -     4 vio0
>>> ff02::%lo0/32 fe80::1%lo0                             Um
>>> 0        1 32768     4 lo0
>>>
>>>
>>>
>>> ######
>>> And when things don't work:
>>>
>>> # uptime
>>>   5:12PM  up 1 day,  1:53, 1 user, load averages: 0.00, 0.00, 0.00
>>>
>>>
>>> # ifconfig vio0
>>> vio0:
>>> flags=648843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6,INET6_NOSOII> mtu 1500
>>>          lladdr bc:24:11:10:52:72
>>>          index 1 priority 0 llprio 3
>>>          groups: egress
>>>          media: Ethernet autoselect
>>>          status: active
>>>          inet6 fe80::be24:11ff:fe10:5272%vio0 prefixlen 64 scopeid 0x1
>>>          inet 172.17.17.2 netmask 0xfffffffc broadcast 172.17.17.3
>>>          inet6 fd00:172:17:170:be24:11ff:fe10:5272 prefixlen 64
>>> autoconf pltime 604500 vltime 2591700
>>>          inet6 fd00:172:17:170:60b3:77d:dae4:601a prefixlen 64
>>> deprecated autoconf temporary pltime 0 vltime 80513
>>>          inet6 fd00:172:17:170:5e06:a3a:7788:d154 prefixlen 64
>>> autoconf temporary pltime 45077 vltime 160314
>>>
>>>
>>> # ping6 -vn -c 10 google.com
>>> PING google.com (fd00:172:17:170:5e06:a3a:7788:d154 -->
>>> 2a00:1450:4005:801::200e): 56 data bytes
>>> 32 bytes from fe80::2a0:57ff:fe3a:ac77%vio0: Neighbor Advertisement
>>> 32 bytes from fe80::2a0:57ff:fe3a:ac77%vio0: Neighbor Solicitation
>>>
>>> --- google.com ping statistics ---
>>> 10 packets transmitted, 0 packets received, 100.0% packet loss
>>>
>>>
>>> # traceroute6 -vn google.com
>>> traceroute6 to google.com (2a00:1450:4005:801::200e), 64 hops max, 60
>>> byte packets
>>>   1  fd00:172:17:170:2a0:57ff:fe3a:ac77 68 bytes to
>>> fd00:172:17:170:5e06:a3a:7788:d154  0.25 ms  0.163 ms  0.145 ms
>>>
>>> 32 bytes from fe80::2a0:57ff:fe3a:ac77%vio0 to
>>> fe80::be24:11ff:fe10:5272: icmp type 136 (OUT-OF-RANGE) code 0
>>> 0000: fe800000 00000000 02a057ff fe3aac77
>>> 0010: 020100a0 573aac77 2a001450 40050801
>>>
>>> 32 bytes from fe80::2a0:57ff:fe3a:ac77%vio0 to
>>> fe80::be24:11ff:fe10:5272: icmp type 135 (OUT-OF-RANGE) code 0
>>> 0000: fe800000 00000000 be2411ff fe105272
>>> 0010: 010100a0 573aac77 2a001450 40050801
>>> 64  * * *
>>>
>>>
>>> # route -n show -inet6
>>> Routing tables
>>>
>>> Internet6:
>>> Destination Gateway                                 Flags   Refs
>>> Use Mtu  Prio Iface
>>> default fe80::2a0:57ff:fe3a:ac77%vio0           UGS        0      123
>>> -     8 vio0
>>> ::/96 ::1                                     UGRS       0        0
>>> 32768     8 lo0
>>> ::1 ::1                                     UHhl      10       20
>>> 32768     1 lo0
>>> ::ffff:0.0.0.0/96 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002::/24 ::1                                     UGRS       0
>>> 0 32768     8 lo0
>>> 2002:7f00::/24 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002:e000::/20 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> 2002:ff00::/24 ::1                                     UGRS
>>> 0        0 32768     8 lo0
>>> fd00:172:17:170::/64 fd00:172:17:170:be24:11ff:fe10:5272
>>> UCPn       1        2 -     4 vio0
>>> fd00:172:17:170::/64 fd00:172:17:170:60b3:77d:dae4:601a
>>> UCPn       0        0 -     4 vio0
>>> fd00:172:17:170::/64 fd00:172:17:170:5e06:a3a:7788:d154
>>> UCPn       0        0 -     4 vio0
>>> fd00:172:17:170:4727:605a:938:42
>>> link#1                                  UHLc       0        4 -     3
>>> vio0
>>> fd00:172:17:170:5e06:a3a:7788:d154
>>> bc:24:11:10:52:72                       UHLl       0        9 -     1
>>> vio0
>>> fd00:172:17:170:60b3:77d:dae4:601a
>>> bc:24:11:10:52:72                       UHLl       0      113 -     1
>>> vio0
>>> fd00:172:17:170:be24:11ff:fe10:5272
>>> bc:24:11:10:52:72                       UHLl       0        0 -     1
>>> vio0
>>> fe80::/10 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> fec0::/10 ::1                                     UGRS       0
>>> 0 32768     8 lo0
>>> fe80::%vio0/64 fe80::be24:11ff:fe10:5272%vio0          UCn
>>> 1        0 -     4 vio0
>>> fe80::2a0:57ff:fe3a:ac77%vio0 00:a0:57:3a:ac:77
>>> UHLch      1     5196 -     3 vio0
>>> fe80::be24:11ff:fe10:5272%vio0
>>> bc:24:11:10:52:72                       UHLl       0      262 -     1
>>> vio0
>>> fe80::1%lo0 fe80::1%lo0                             UHl
>>> 0        0 32768     1 lo0
>>> ff01::/16 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> ff01::%vio0/32 fe80::be24:11ff:fe10:5272%vio0          Um
>>> 0        3 -     4 vio0
>>> ff01::%lo0/32 fe80::1%lo0                             Um
>>> 0        1 32768     4 lo0
>>> ff02::/16 ::1                                     UGRS       0
>>> 1 32768     8 lo0
>>> ff02::%vio0/32 fe80::be24:11ff:fe10:5272%vio0          Um
>>> 0        7 -     4 vio0
>>> ff02::%lo0/32 fe80::1%lo0                             Um
>>> 0        1 32768     4 lo0
>>>
>>>
>>> # ping6 -n -c 3 fe80::2a0:57ff:fe3a:ac77%vio0
>>> PING fe80::2a0:57ff:fe3a:ac77%vio0 (fe80::2a0:57ff:fe3a:ac77%vio0):
>>> 56 data bytes
>>> 64 bytes from fe80::2a0:57ff:fe3a:ac77%vio0: icmp_seq=0 hlim=64
>>> time=0.395 ms
>>> 64 bytes from fe80::2a0:57ff:fe3a:ac77%vio0: icmp_seq=1 hlim=64
>>> time=0.273 ms
>>> 64 bytes from fe80::2a0:57ff:fe3a:ac77%vio0: icmp_seq=2 hlim=64
>>> time=0.286 ms
>>>
>>> --- fe80::2a0:57ff:fe3a:ac77%vio0 ping statistics ---
>>> 3 packets transmitted, 3 packets received, 0.0% packet loss
>>> round-trip min/avg/max/std-dev = 0.273/0.318/0.395/0.055 ms
>>>
>>
>

No comments:

Post a Comment