2

No matter what I try, my Ubuntu Server machine (bare metal) won't accept router advertisements. I am able to pull an IPv6 address from DHCP, ping that address from another machine, but trying to ping back doesn't work. Neither does DNS over IPv6 (likely because it's not accepting router advertisements).

Any ideas? I've run out and exhausted my knowledge of networkd, netplan and networking in general.

As far as I can tell it's because of the kernel flag net.ipv6.conf.enp4s0.accept_ra = 0.

  • If I set the flag to 1 manually, it does nothing
  • If I set the flag and reboot, it reverts to 0
  • If I set the flag and run netplan apply, it reverts to 0
  • If I set the flag and run networkctl reload, it stays at 1 but does nothing
  • If I set the flag and run networkctl reconfigure enp4s0, it reverts to 0
  • If I set the flag in /etc/sysctl.conf and reboot or sysctl -p it stays at or reverts to 0
  • If I set netplan accept-ra: true and run netplan apply it stays at or reverts to 0

Here are my configurations

  • Netplan
  ethernets:
    enp4s0:
      dhcp4: true
      dhcp6: true
      accept-ra: true
  version: 2
  • /run/systemd/network/10-netplan-enp4s0.network
[Match]
Name=enp4s0

[Network] DHCP=yes LinkLocalAddressing=ipv6 IPv6AcceptRA=yes

[DHCP] RouteMetric=100 UseMTU=true

  • /etc/sysctl.conf
net.ipv6.conf.enp4s0.accept_ra = 1
  • sysctl
net.ipv6.conf.enp4s0.accept_dad = 1
net.ipv6.conf.enp4s0.accept_ra = 0
net.ipv6.conf.enp4s0.accept_ra_defrtr = 1
net.ipv6.conf.enp4s0.accept_ra_from_local = 0
net.ipv6.conf.enp4s0.accept_ra_min_hop_limit = 1
net.ipv6.conf.enp4s0.accept_ra_mtu = 1
net.ipv6.conf.enp4s0.accept_ra_pinfo = 1
net.ipv6.conf.enp4s0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.enp4s0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.enp4s0.accept_ra_rtr_pref = 1
net.ipv6.conf.enp4s0.accept_redirects = 1
net.ipv6.conf.enp4s0.accept_source_route = 0
net.ipv6.conf.enp4s0.addr_gen_mode = 0
net.ipv6.conf.enp4s0.autoconf = 1
net.ipv6.conf.enp4s0.dad_transmits = 1
net.ipv6.conf.enp4s0.disable_ipv6 = 0
net.ipv6.conf.enp4s0.disable_policy = 0
net.ipv6.conf.enp4s0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.enp4s0.drop_unsolicited_na = 0
net.ipv6.conf.enp4s0.enhanced_dad = 1
net.ipv6.conf.enp4s0.force_mld_version = 0
net.ipv6.conf.enp4s0.force_tllao = 0
net.ipv6.conf.enp4s0.forwarding = 0
net.ipv6.conf.enp4s0.hop_limit = 64
net.ipv6.conf.enp4s0.ignore_routes_with_linkdown = 0
net.ipv6.conf.enp4s0.keep_addr_on_down = 0
net.ipv6.conf.enp4s0.max_addresses = 16
net.ipv6.conf.enp4s0.max_desync_factor = 600
net.ipv6.conf.enp4s0.mc_forwarding = 0
net.ipv6.conf.enp4s0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.enp4s0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.enp4s0.mtu = 1500
net.ipv6.conf.enp4s0.ndisc_notify = 0
net.ipv6.conf.enp4s0.ndisc_tclass = 0
net.ipv6.conf.enp4s0.proxy_ndp = 0
net.ipv6.conf.enp4s0.regen_max_retry = 3
net.ipv6.conf.enp4s0.router_probe_interval = 60
net.ipv6.conf.enp4s0.router_solicitation_delay = 1
net.ipv6.conf.enp4s0.router_solicitation_interval = 4
net.ipv6.conf.enp4s0.router_solicitation_max_interval = 3600
net.ipv6.conf.enp4s0.router_solicitations = -1
net.ipv6.conf.enp4s0.seg6_enabled = 0
net.ipv6.conf.enp4s0.seg6_require_hmac = 0
net.ipv6.conf.enp4s0.suppress_frag_ndisc = 1
net.ipv6.conf.enp4s0.temp_prefered_lft = 86400
net.ipv6.conf.enp4s0.temp_valid_lft = 604800
net.ipv6.conf.enp4s0.use_oif_addrs_only = 0
net.ipv6.conf.enp4s0.use_tempaddr = 0
Cruetz
  • 21

1 Answers1

0

I know I'm very late to the party, and I actually have to thank you for putting me on the right path to using netplan for IPv6 as until an hour ago I was a classic /network/interfaces guy by choice. netplan by forced necessity. Anyways, here is what worked for me:

sysctl -w net.ipv6.conf.enp4s0.accept_ra=1 

and in netplan:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp4s0:
      addresses:
        - 192.168.46.210/24
      nameservers:
        addresses: [192.168.46.217]
      routes:
        - to: default
          via: 192.168.46.213
      wakeonlan: true
      accept-ra: true

Just the last line seemed to be needed; I did not need to set the dhcp6 flag