How to make IPv6 work on Almalinux

Hello. I am working on setting up a home server with almalinux. The server is under a firewall with IPv4 connection as PPPoE and IPv6 as DHCP6 based on IPv4 connection. On a Windows computer, IPv6 has internet and is completely normal to use. On Almalinux the system still receives IPv6 but no internet.

[root@local ~]# 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:f4:33:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.222/24 brd 192.168.254.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 2402:800:63bb:99e4::100b/128 scope global dynamic noprefixroute
       valid_lft 86362sec preferred_lft 86362sec
    inet6 2402:800:63bb:8996:20c:29ff:fef4:330e/64 scope global dynamic noprefixroute
       valid_lft 86397sec preferred_lft 14397sec
    inet6 fe80::20c:29ff:fef4:330e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@local ~]# ping google.com
PING google.com(2404:6800:4003:c04::71 (2404:6800:4003:c04::71)) 56 data bytes
^C
--- google.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3100ms

IPv6 mode in almalinux I’m setting to Automatic. IPv4 is Static. I’m researching and trying some solutions but it doesn’t work.

Thanks @minhvip. Can you please post your config from /etc/sysconfig/network-scripts/ifcfg-ens192 to start? Let’s take a look there first.

Also, what do you get with:
ip -6 ro

The nmcli can show the stored configuration of connection (if NetworkManager.service is in use, which is the default):
nmcli -f ipv6 c s ens192
(That assumes that name of connection is “ens192”. nmcli c s lists connections.)

Furthermore, the current active config can be seen with:
nmcli -f IP6 c s ens192

Disabled IPv6

Due to me being new to this blog I had to modify some text so it doesnt see url’s as links

[root@dns1 ~]# nmtui
[root@dns1 ~]# ping6 google[.]com
connect: Network is unreachable
[root@dns1 ~]# ping6 google[.]com
connect: Network is unreachable

Inline script to ping all ipv6 gateways

[root@dns1 ~]# ips=$(ip -6 r | grep -e “/64” | grep -v ‘fe80’ | cut -d’/’ -f1)
[root@dns1 ~]# for ip in $ips; do ping6 -c5 $ip;done;

Validated no global IPv6

[root@dns1 ~]# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::8f78:711f:7a3d:f23f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Enable IPv6

[root@dns1 ~]# nmtui
[root@dns1 ~]# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2605:a601:91a8::dd50:3539:e9a9:b15f/64 scope global temporary dynamic
valid_lft 604798sec preferred_lft 86193sec
inet6 2605:a601:91a8::cb13:9ecc:75ab:d7e6/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591999sec preferred_lft 604799sec
inet6 fe80::8f78:711f:7a3d:f23f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Capture the IPv6s

[root@dns1 ~]# ips=$(ip -6 r | grep -e “/64” | grep -v ‘fe80’ | cut -d’/’ -f1)

Inline Ping all the IPv6’s

[root@dns1 ~]# for ip in $ips; do ping6 -c5 $ip;done;
PING 2605:a601:91a8:807::(2605:a601:91a8:807::slight_smile: 56 data bytes
64 bytes from 2605:a601:91a8:xxx::: icmp_seq=1 ttl=64 time=1.00 ms
64 bytes from 2605:a601:91a8:xxx::: icmp_seq=2 ttl=64 time=0.388 ms
64 bytes from 2605:a601:91a8:xxx::: icmp_seq=3 ttl=64 time=0.441 ms
64 bytes from 2605:a601:91a8:xxx::: icmp_seq=4 ttl=64 time=0.414 ms
64 bytes from 2605:a601:91a8:xxx::: icmp_seq=5 ttl=64 time=0.386 ms
— 2605:a601:91a8:807:: ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4086ms
rtt min/avg/max/mdev = 0.386/0.526/1.003/0.240 ms

Validate can reach the internet

[root@dns1 ~]# ping6 google[.]com
PING google[.]com(bh-in-f138.1e100[.]net (2607:f8b0:4004:c09::8a)) 56 data bytes
64 bytes from bh-in-f138.1e100[.]net (2607:f8b0:4004:c09::8a): icmp_seq=1 ttl=108 time=8.47 ms
64 bytes from bh-in-f138.1e100[.]net (2607:f8b0:4004:c09::8a): icmp_seq=2 ttl=108 time=9.93 ms
^C
google.com ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 8.468/9.199/9.930/0.731 ms

So the above is how I fixed my issue. My debian servers on my home network, do not have issues. It seems like the ipv6 echos are not being handled correctly. seeing alot of whois when I do the ping6. I might make an RPM scriptlet that handles this after the network up is issued.