Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FS#3771 - odhcpd fails to send Router Advertisements #8785

Open
openwrt-bot opened this issue May 1, 2021 · 9 comments
Open

FS#3771 - odhcpd fails to send Router Advertisements #8785

openwrt-bot opened this issue May 1, 2021 · 9 comments
Labels

Comments

@openwrt-bot
Copy link

cvmiller:

Supply the following if possible:

  • Device problem occurs on
    Linksys EA3500

  • Software versions of OpenWrt/LEDE release, packages, etc.
    21.02.0rc1

  • Steps to reproduce

  1. Install 21.02.0rc1 on device
  2. After successful install, note that your ethernet connected laptop has only a link-local address (no ULA, or GUA).
  3. Log into router and run logread command looking for odhcpd errors. Note the following:

logread | grep odhcp
Sun Apr 18 03:07:34 2021 user.notice ucitrack: Setting up /etc/config/dhcp reload dependency on /etc/config/odhcpd
Sun Apr 18 03:07:38 2021 daemon.err odhcpd[1799]: Failed to send to ff02::1%lan@br-lan (Address not available)
Sun Apr 18 03:07:41 2021 daemon.err odhcpd[1799]: Failed to send to fe80::9ed6:43ff:feae:1915%lan@br-lan (Address not available)
Sun Apr 18 03:07:41 2021 daemon.err odhcp6c[2528]: Failed to send RS (Address not available)
Sun Apr 18 03:07:42 2021 daemon.err odhcpd[1799]: Failed to send to ff02::1%lan@br-lan (Address not available)
Sun Apr 18 03:07:42 2021 daemon.err odhcp6c[2528]: Failed to send SOLICIT message to ff02::1:2 (Address not available)
Sun Apr 18 03:07:48 2021 daemon.info dnsmasq[2569]: read /tmp/hosts/odhcpd - 0 addresses

The router does NOT, in fact, have the interface ff02::1%lan@br-lan

After installing ip-full, it is possible to see 'ip maddr' and see the correct interfaces on the router:

ip maddr

1: lo
inet 224.0.0.1
inet6 ff02::1
inet6 ff01::1
...
13: br-lan
link 33:33:00:00:00:01
link 33:33:00:00:00:02
link 01:00:5e:00:00:01
link 33:33:ff:01:70:f1
link 33:33:ff:00:00:01
link 33:33:ff:00:00:00
link 33:33:00:00:00:09
inet 224.0.0.1
inet6 ff02::9
inet6 ff02::1:ff00:0 users 3
inet6 ff02::1:ff00:1 users 2
inet6 ff02::1:ff01:70f1
inet6 ff02::2
inet6 ff02::1
inet6 ff01::1

IMPACT: No attached device can receive an IPv6 address from the router

@openwrt-bot
Copy link
Author

bjonglez:

It looks like br-lan has no link-local address, and there is a mixup between br-lan and lan.

Please provide the full output of "ip addr show" and the content of /etc/config/network

Is it a clean configuration from a 21.02 install, or did you keep settings from a previous install?

@openwrt-bot
Copy link
Author

dedeckeh:

The trace "lan@br-lan" must not be interpreted as the linux device; it must be interpreted as "logical OpenWrt interface@linux device". So in this case the logical OpenWrt interface is lan while the linux device is br-lan; which is correct.
As mentioned by Baptiste it looks like no operational link local address is present on the br-lan device

@openwrt-bot
Copy link
Author

cvmiller:

Thank you for looking into this. I think it is odhcpd getting confused with the new interface names. But there the full IP addr output:

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 qdisc mq state UP group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
inet6 fe80::cad7:19ff:fe01:70f1/64 scope link
valid_lft forever preferred_lft forever
3: ethernet1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
4: ethernet2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
5: ethernet3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
6: ethernet4@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
7: internet@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c8:d7:19:01:70:f2 brd ff:ff:ff:ff:ff:ff
inet6 fd60:1373:e6bd:0:cad7:19ff:fe01:70f2/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 2607:c000:8011:fd60:cad7:19ff:fe01:70f2/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fd60:1373:e6bd::e7a/128 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 2607:c000:8011:fd60::e7a/128 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::cad7:19ff:fe01:70f2/64 scope link
valid_lft forever preferred_lft forever
8: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether c8:d7:19:01:70:f3 brd ff:ff:ff:ff:ff:ff
13: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c8:d7:19:01:70:f1 brd ff:ff:ff:ff:ff:ff
inet 192.168.241.1/24 brd 192.168.241.255 scope global br-lan
valid_lft forever preferred_lft forever
inet6 fd31:2541:d6a2::1/60 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 2607:c000:8011:fd68::1/62 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::cad7:19ff:fe01:70f1/64 scope link
valid_lft forever preferred_lft forever
17: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP group default qlen 1000
link/ether c8:d7:19:01:70:f5 brd ff:ff:ff:ff:ff:ff
inet6 fe80::cad7:19ff:fe01:70f5/64 scope link
valid_lft forever preferred_lft forever

And the /etc/config/network

# cat /etc/config/network

config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config globals 'globals'
option ula_prefix 'fd31:2541:d6a2::/48'

config interface 'lan'
option type 'bridge'
option ifname 'ethernet1 ethernet2 ethernet3 ethernet4'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.241.1'

config interface 'wan'
option ifname 'internet'
option proto 'dhcp'

config device 'wan_internet_dev'
option name 'internet'
option macaddr 'c8:d7:19:01:70:f2'

config interface 'wan6'
option ifname 'internet'
option proto 'dhcpv6'

Thanks for looking into this.

@openwrt-bot
Copy link
Author

cvmiller:

Is it a clean configuration from a 21.02 install, or did you keep settings from a previous install?

This is a clean install, as was suggested by LuCI when I did the upgrade from 19.07.

@openwrt-bot
Copy link
Author

cvmiller:

BTW, I also upgraded (clean install) of a GL-iNET USB150 (router on a thumb drive), and I see the same RA problem (none sent out, not even in response to a RS) and error messages in logread as the Linksys EA3500

@openwrt-bot
Copy link
Author

cvmiller:

Loaded the SNAPSHOT onto the Linksys EA3500, and it is sending RAs. Downstream hosts get IPv6 addresses.
OpenWrt SNAPSHOT r16634-5d8ea6d34f / LuCI Master git-21.120.42410-be8d749

I note that I see similar lines in the logread. So I presume the errors in the log are not the problem with 21.02.0rc1

Sun May 2 06:01:10 2021 daemon.err odhcpd[1657]: Failed to send to ff02::1%lan@br-lan (Address not available)
Sun May 2 06:01:13 2021 daemon.err odhcpd[1657]: Failed to send to ff02::1%lan@br-lan (Address not available)
Sun May 2 06:01:14 2021 daemon.err odhcpd[1657]: Failed to send to fe80::9ed6:43ff:feae:1915%lan@br-lan (Address not available)

@openwrt-bot
Copy link
Author

cvmiller:

I just wanted to say that the work-around of installing luci-mod-network to git-21.110.65613 or later, as per the release notes, does work.

I now have a router running 21.02.0-rc1 sending RAs.

Thanks.

@ianmtaylor1
Copy link

ianmtaylor1 commented Apr 30, 2022

Sorry to resurrect this issue, but I think I am experiencing the same thing or something similar.

OpenWrt version: 21.02.3
Device: Linksys WRT1900ACS

What happens:

After abut 24 hours of router up time, the router stops sending unsolicited router advertisements from my LAN interfaces. I notice a drop in ipv6 connectivity first, then open Wireshark and wait for the max RA interval and don't receive any router advertisements. If I disconnect and reconnect to wifi, I will get a router advertisement in response to a router solicitation, but no unsolicited advertisements (i.e. with dest IP ff02::1).

Different devices respond differently to this. My Windows 10 laptop will still have IPv6 connectivity (I can "ping -6" anything on the internet) but will prefer IPv4 in all circumstances. A Raspberry Pi on my network will still have IPv6 addresses on the correct prefixes and on-link routes to its own /64, but no default route. It can ping the router itself and other machines on its same subnet but no machines on any other LAN subnets or anything else. The router itself still has full IPv6 connectivity. "ip -6 route show" shows a default route, and the IPv6 ping and traceroute diagnostics work from LuCI.

I noticed this after I updated from 19.07. I updated to 21.02.1 with a fresh configuration and recreated all interfaces manually, then updated to 21.02.3 by uploading the configuration archive from 21.02.1.

What I've tried so far:

Rebooting the router restores router advertisements and default routes on all devices for a couple of days until they stop again. I honestly don't know what to look for in logs to identify the problem, but I'm happy to search.

Configuration:

/etc/config/network (with some sensitive info redacted)

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdxx:xxxx:xxxx::/48'

config interface 'lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option ip6hint '01'
        option device 'bridge.101'

config device
        option name 'wan'

config interface 'wan'
        option proto 'dhcp'
        option device 'bridge.201'

config interface 'wan6'
        option proto '6rd'
        option peeraddr '---'
        option ip6prefix '2602::'
        option ip6prefixlen '24'

config device
        option type 'bridge'
        option name 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'
        list ports 'wan'

config bridge-vlan
        option device 'bridge'
        option vlan '201'
        list ports 'wan:t'

config interface 'srv'
        option proto 'static'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option ip6hint '0a'
        option device 'bridge.102'

config interface 'henet'
        option proto '6in4'
        option peeraddr '---'
        option ip6addr '2001:yyyy:yyyy:yyyy::2/64'
        list ip6prefix '2001:zzzz:zzzz::/48'
        option tunnelid '---'
        option username '---'
        option password '----'
        option peerdns '0'
        list dns '---'
        list dns '---'
        option mtu '1480'

... wireguard config omitted ...

config bridge-vlan
        option device 'bridge'
        option vlan '101'
        list ports 'lan4:u*'

config bridge-vlan
        option device 'bridge'
        option vlan '102'
        list ports 'lan1:u*'
        list ports 'lan2:u*'
        list ports 'lan3:u*'

config bridge-vlan
        option device 'bridge'
        option vlan '103'
        list ports 'lan1:t'

config interface 'dmz'
        option proto 'static'
        option device 'bridge.103'
        option ipaddr '192.168.11.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option ip6hint '0b'

/etc/config/dhcp (with some sensitive info redacted)

config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
        option localservice '1'
        option ednspacket_max '1232'
        option local '/example.com/'
        option domain 'example.com'

config dhcp 'lan'
        option interface 'lan'
        option dhcpv4 'server'
        option ra 'server'
        option start '5'
        option limit '245'
        list dhcp_option '6,192.168.10.zzz'
        list dns 'fdxx:xxxx:xxxx:a::zzz'
        option leasetime '2h'
        list ra_flags 'none'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'
        list ra_flags 'none'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

config dhcp 'srv'
        option interface 'srv'
        option start '185'
        option limit '15'
        option ra 'server'
        option dhcpv6 'server'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'
        list dhcp_option '6,192.168.10.zzz'
        list dns 'fdxx:xxxx:xxxx:a::zzz'
        option leasetime '2h'

... static leases omitted ...

config dhcp 'dmz'
        option interface 'dmz'
        option start '185'
        option limit '15'
        list dhcp_option '6,9.9.9.9,149.112.112.112'
        option ra 'server'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'
        option dhcpv6 'server'
        list dns '2620:fe::fe'
        list dns '2620:fe::9'
        option leasetime '2h'

@jabdoa2
Copy link

jabdoa2 commented Jan 15, 2023

I ran into something similar on my DSL router running 21.02.3 as well. After a reconnect I loose IPV6 for my clients and see the same error. So the issue seems to still exists. Is there any way for me to help narrow this down?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants