Arch and IPv6

First lets get out of the way the obvious, yes I am running Arch in a server environment. Yes, I'm a stubborn idiot.

So I submitted a ticket about this issue and among a few inquiries was recommended to post here, I've included the steps I've taken thus far as well as output, config files, and commands.

Disable dhcpcd (EDIT: forgot to mention originally)

systemctl stop dhcpcd@enp0s4.service
systemctl disable dhcpcd@enp0s4.service

Remove IP from interface otherwise netctl complains

ip link set enp0s4 down
ip addr delete LINODE_PUB_IPV4 dev enp0s4

Allow for discovery

ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A FORWARD -p icmpv6 -j ACCEPT

Use an example as template

cp /etc/netctl/examples/ethernet-static /etc/netctl/enp0s4

/etc/netctl/enp0s4:

Description='A basic static ethernet connection'
Interface=enp0s4
Connection=ethernet
IP=static
Address=('LINODE_PUBLIC_IPV4/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='LINODE_PUBLIC_IPV4_GATEWAY'
DNS=('8.8.8.8' '1.1.1.1' '2001:4860:4860::8888' '2606:4700:4700::1111')

## For IPv6 autoconfiguration
IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'

Bring interface up

netctl start enp0s4

Everything comes back correctly, no issues from the netctl status. Pinging IPv4 works properly. While IPv6 reads the correct IP of my linode however ping -6 returns the following:

ping -6 google.com

PING google.com(2607:f8b0:4002:c00::71 (2607:f8b0:4002:c00::71)) 56 data bytes

--- google.com ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6092ms

Ryan from Linodes support team recommended I run the following commands

netstat -rn -6                                                                        

Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
::1/128                        ::                         U    256 2     0 lo
2600:3c02::/64                 ::                         UAe  256 1     0 enp0s4
fe80::/64                      ::                         U    256 1     0 enp0s4
::/0                           fe80::1                    UGDAe 1024 3     0 enp0s4
::1/128                        ::                         Un   0   4     0 lo
ff00::/8                       ::                         U    256 2     0 enp0s4
::/0                           ::                         !n   -1  1     0 lo

And

ip -6 route show dev enp0s4

2600:3c02::/64 proto kernel metric 256 expires 2591995sec pref medium
fe80::/64 proto kernel metric 256 pref medium
default via fe80::1 proto ra metric 1024 expires 595sec hoplimit 64 pref medium

Its possible I may jump ship to systemd as Ryan recommended, but for the moment its a matter of my dwindling dignity to figure out what the issue is.

Thanks for your time!

5 Replies

What's the output of ip addr show and sysctl -a | grep net.ipv6?

Thanks for the quick reply!

ip addr show

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: enp0s4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether f2:3c:92:e2:0f:10 brd ff:ff:ff:ff:ff:ff
    inet 173.230.130.36/24 brd 173.230.130.255 scope global dynamic enp0s4
       valid_lft 84458sec preferred_lft 73658sec
    inet6 2600:3c02::8fba:b3e1:3fd3:3d20/64 scope global tentative dynamic mngtmpaddr noprefixroute 
       valid_lft 2591998sec preferred_lft 604798sec
    inet6 2600:3c02::f03c:92ff:fee2:f10/64 scope global dynamic mngtmpaddr 
       valid_lft 2591998sec preferred_lft 604798sec
    inet6 fe80::a1ba:c963:b7e6:4673/64 scope link 
       valid_lft forever preferred_lft forever

sysctl -a | grep net.ipv6

net.ipv6.anycast_src_echo_reply = 0
net.ipv6.auto_flowlabels = 1
net.ipv6.bindv6only = 0
net.ipv6.calipso_cache_bucket_size = 10
net.ipv6.calipso_cache_enable = 1
net.ipv6.conf.all.accept_dad = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.addr_gen_mode = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.all.drop_unsolicited_na = 0
net.ipv6.conf.all.enhanced_dad = 1
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.ndisc_tclass = 0
net.ipv6.conf.all.optimistic_dad = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_probe_interval = 60
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitation_max_interval = 3600
net.ipv6.conf.all.router_solicitations = -1
net.ipv6.conf.all.seg6_enabled = 0
net.ipv6.conf.all.seg6_require_hmac = 0
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_oif_addrs_only = 0
net.ipv6.conf.all.use_optimistic = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_from_local = 0
net.ipv6.conf.default.accept_ra_min_hop_limit = 1
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.default.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.default.addr_gen_mode = 0
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.disable_policy = 0
net.ipv6.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.default.drop_unsolicited_na = 0
net.ipv6.conf.default.enhanced_dad = 1
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.force_tllao = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.ignore_routes_with_linkdown = 0
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.ndisc_notify = 0
net.ipv6.conf.default.ndisc_tclass = 0
net.ipv6.conf.default.optimistic_dad = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_retry = 3
net.ipv6.conf.default.router_probe_interval = 60
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitation_max_interval = 3600
net.ipv6.conf.default.router_solicitations = -1
net.ipv6.conf.default.seg6_enabled = 0
net.ipv6.conf.default.seg6_require_hmac = 0
net.ipv6.conf.default.suppress_frag_ndisc = 1
net.ipv6.conf.default.temp_prefered_lft = 86400
net.ipv6.conf.default.temp_valid_lft = 604800
net.ipv6.conf.default.use_oif_addrs_only = 0
net.ipv6.conf.default.use_optimistic = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.enp0s4.accept_dad = 1
net.ipv6.conf.enp0s4.accept_ra = 2
net.ipv6.conf.enp0s4.accept_ra_defrtr = 1
net.ipv6.conf.enp0s4.accept_ra_from_local = 0
net.ipv6.conf.enp0s4.accept_ra_min_hop_limit = 1
net.ipv6.conf.enp0s4.accept_ra_mtu = 1
net.ipv6.conf.enp0s4.accept_ra_pinfo = 1
net.ipv6.conf.enp0s4.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.enp0s4.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.enp0s4.accept_ra_rtr_pref = 1
net.ipv6.conf.enp0s4.accept_redirects = 1
net.ipv6.conf.enp0s4.accept_source_route = 0
net.ipv6.conf.enp0s4.addr_gen_mode = 1
net.ipv6.conf.enp0s4.autoconf = 1
net.ipv6.conf.enp0s4.dad_transmits = 1
net.ipv6.conf.enp0s4.disable_ipv6 = 0
net.ipv6.conf.enp0s4.disable_policy = 0
net.ipv6.conf.enp0s4.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.enp0s4.drop_unsolicited_na = 0
net.ipv6.conf.enp0s4.enhanced_dad = 1
net.ipv6.conf.enp0s4.force_mld_version = 0
net.ipv6.conf.enp0s4.force_tllao = 0
net.ipv6.conf.enp0s4.forwarding = 0
net.ipv6.conf.enp0s4.hop_limit = 64
net.ipv6.conf.enp0s4.ignore_routes_with_linkdown = 0
net.ipv6.conf.enp0s4.keep_addr_on_down = 0
net.ipv6.conf.enp0s4.max_addresses = 16
net.ipv6.conf.enp0s4.max_desync_factor = 600
net.ipv6.conf.enp0s4.mc_forwarding = 0
net.ipv6.conf.enp0s4.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.enp0s4.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.enp0s4.mtu = 1500
net.ipv6.conf.enp0s4.ndisc_notify = 0
net.ipv6.conf.enp0s4.ndisc_tclass = 0
net.ipv6.conf.enp0s4.optimistic_dad = 0
net.ipv6.conf.enp0s4.proxy_ndp = 0
net.ipv6.conf.enp0s4.regen_max_retry = 3
net.ipv6.conf.enp0s4.router_probe_interval = 60
net.ipv6.conf.enp0s4.router_solicitation_delay = 1
net.ipv6.conf.enp0s4.router_solicitation_interval = 4
net.ipv6.conf.enp0s4.router_solicitation_max_interval = 3600
net.ipv6.conf.enp0s4.router_solicitations = -1
net.ipv6.conf.enp0s4.seg6_enabled = 0
net.ipv6.conf.enp0s4.seg6_require_hmac = 0
net.ipv6.conf.enp0s4.suppress_frag_ndisc = 1
net.ipv6.conf.enp0s4.temp_prefered_lft = 86400
net.ipv6.conf.enp0s4.temp_valid_lft = 604800
net.ipv6.conf.enp0s4.use_oif_addrs_only = 0
net.ipv6.conf.enp0s4.use_optimistic = 0
net.ipv6.conf.enp0s4.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = -1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_from_local = 0
net.ipv6.conf.lo.accept_ra_min_hop_limit = 1
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.lo.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.accept_source_route = 0
net.ipv6.conf.lo.addr_gen_mode = 0
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.disable_policy = 0
net.ipv6.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.lo.drop_unsolicited_na = 0
net.ipv6.conf.lo.enhanced_dad = 1
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.force_tllao = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.ignore_routes_with_linkdown = 0
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.ndisc_notify = 0
net.ipv6.conf.lo.ndisc_tclass = 0
net.ipv6.conf.lo.optimistic_dad = 0
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_retry = 3
net.ipv6.conf.lo.router_probe_interval = 60
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitation_max_interval = 3600
net.ipv6.conf.lo.router_solicitations = -1
net.ipv6.conf.lo.seg6_enabled = 0
net.ipv6.conf.lo.seg6_require_hmac = 0
net.ipv6.conf.lo.suppress_frag_ndisc = 1
net.ipv6.conf.lo.temp_prefered_lft = 86400
net.ipv6.conf.lo.temp_valid_lft = 604800
net.ipv6.conf.lo.use_oif_addrs_only = 0
net.ipv6.conf.lo.use_optimistic = 0
net.ipv6.conf.lo.use_tempaddr = -1
net.ipv6.fib_multipath_hash_policy = 0
net.ipv6.flowlabel_consistency = 1
net.ipv6.flowlabel_reflect = 0
net.ipv6.flowlabel_state_ranges = 0
net.ipv6.fwmark_reflect = 0
net.ipv6.icmp.echo_ignore_all = 0
net.ipv6.icmp.echo_ignore_anycast = 0
net.ipv6.icmp.echo_ignore_multicast = 0
net.ipv6.icmp.ratelimit = 1000
net.ipv6.icmp.ratemask = 0-1,3-127
net.ipv6.idgen_delay = 1
net.ipv6.idgen_retries = 3
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 0
net.ipv6.ip6frag_time = 60
net.ipv6.ip_nonlocal_bind = 0
net.ipv6.max_dst_opts_length = 2147483647
net.ipv6.max_dst_opts_number = 8
net.ipv6.max_hbh_length = 2147483647
net.ipv6.max_hbh_opts_number = 8
net.ipv6.mld_max_msf = 64
net.ipv6.mld_qrv = 2
net.ipv6.neigh.default.anycast_delay = 99
net.ipv6.neigh.default.app_solicit = 0
net.ipv6.neigh.default.base_reachable_time_ms = 30000
net.ipv6.neigh.default.delay_first_probe_time = 5
net.ipv6.neigh.default.gc_interval = 30
net.ipv6.neigh.default.gc_stale_time = 60
net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024
net.ipv6.neigh.default.locktime = 0
net.ipv6.neigh.default.mcast_resolicit = 0
net.ipv6.neigh.default.mcast_solicit = 3
net.ipv6.neigh.default.proxy_delay = 79
net.ipv6.neigh.default.proxy_qlen = 64
net.ipv6.neigh.default.retrans_time_ms = 1000
net.ipv6.neigh.default.ucast_solicit = 3
net.ipv6.neigh.default.unres_qlen = 101
net.ipv6.neigh.default.unres_qlen_bytes = 212992
net.ipv6.neigh.enp0s4.anycast_delay = 99
net.ipv6.neigh.enp0s4.app_solicit = 0
net.ipv6.neigh.enp0s4.base_reachable_time_ms = 30000000
net.ipv6.neigh.enp0s4.delay_first_probe_time = 5
net.ipv6.neigh.enp0s4.gc_stale_time = 60
net.ipv6.neigh.enp0s4.locktime = 0
net.ipv6.neigh.enp0s4.mcast_resolicit = 0
net.ipv6.neigh.enp0s4.mcast_solicit = 3
net.ipv6.neigh.enp0s4.proxy_delay = 79
net.ipv6.neigh.enp0s4.proxy_qlen = 64
net.ipv6.neigh.enp0s4.retrans_time_ms = 1000000
net.ipv6.neigh.enp0s4.ucast_solicit = 3
net.ipv6.neigh.enp0s4.unres_qlen = 101
net.ipv6.neigh.enp0s4.unres_qlen_bytes = 212992
net.ipv6.neigh.lo.anycast_delay = 99
net.ipv6.neigh.lo.app_solicit = 0
net.ipv6.neigh.lo.base_reachable_time_ms = 30000
net.ipv6.neigh.lo.delay_first_probe_time = 5
net.ipv6.neigh.lo.gc_stale_time = 60
net.ipv6.neigh.lo.locktime = 0
net.ipv6.neigh.lo.mcast_resolicit = 0
net.ipv6.neigh.lo.mcast_solicit = 3
net.ipv6.neigh.lo.proxy_delay = 79
net.ipv6.neigh.lo.proxy_qlen = 64
net.ipv6.neigh.lo.retrans_time_ms = 1000
net.ipv6.neigh.lo.ucast_solicit = 3
net.ipv6.neigh.lo.unres_qlen = 101
net.ipv6.neigh.lo.unres_qlen_bytes = 212992
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size = 4096
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.route.skip_notify_on_dev_down = 0
net.ipv6.seg6_flowlabel = 0
net.ipv6.xfrm6_gc_thresh = 32768

Is dhcpcd running, by chance? If it is, does /etc/dhcpcd.conf contain an uncommented slaac private line? Also check whether the dhcpcd service is enabled and running (I believe it'll be systemctl status dhcpcd@enp0s4).

Comment out any slaac private in /etc/dhcpcd.conf, and disable the dhcpcd service for enp0s4, so it doesn't interfere with netctl.

Ah, I forgot to add that line in the initial post. I had disabled the dhcpcd service before tearing down the interface. For good measure I did try to comment out the slaac private line in /etc/dhcpcd.conf and restarted the netctl instance to no avail, unfortunately.

After all the trouble it seems it was the host my Linode was on. I was having some latency issues so the support team migrated my Linode and now with the aforementioned procedure I can now properly use IPv6! Thanks for the help!

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct