IPv6 Root Server

  • Hello,

    Did anyone configure IPv6 successfully in a Root Server.

    Tried in two different machines, one with AlmaLinux 9 and another with AlmaLinux 8. Both are configured correctly, and the settings applied are correct - gateway is ok, but he doesn't ping when i try.

    He ping to another IP in the same subnetwork, but externally, no.

    Gateway fe80::1 doesn't ping at all—and I think it should.

    Nevertheless, IPv6 doesn't seem to work.

    I'm lost in what to do next. I think the issue is in the gateway not being able to "route" correctly.

    Has anyone successfully configured IPv6 in a root server?

    Thanks! :)

  • Yes, no problem here.

    In order to debug your problem, you should post your configuration files (IP, router and nameserver), the output from "ip -6 a" (or "ifconfig -a"), from "ip -6 r" and from ping and traceroute commands to external IPs and hostnames.

    Gateway fe80::1 doesn't ping at all—and I think it should.

    No, it should not. It is just a dummy for setting the default gateway to link eth0 (or whatever your device is). The IPv6 subnet at Netcup is switched, not routed.

  • No, it should not. It is just a dummy for setting the default gateway to link eth0 (or whatever your device is). The IPv6 subnet at Netcup is switched, not routed.

    Wrong assumption: fe80::1 is a completely valid gateway address. [¹] The IPv6 subnet being switched and not directly routed from the ingress perspective is indeed correct though.

    [¹] https://blogs.infoblox.com/ipv6-coe/fe80-…ateway-address/

    Gateway fe80::1 doesn't ping at all—and I think it should.

    It absolutely should - at least sometimes. Routing & Switching Hardware mostly deprioritizes ICMP packets leading to some "normal" packetloss or high latency responses.

    Here's an example of pinging fe80::1 from a netcup KVM:

    Code
    ~# ping fe80::1%eth0
    PING fe80::1%eth0 (fe80::1%eth0) 56 data bytes
    64 bytes from fe80::1%eth0: icmp_seq=1 ttl=64 time=0.863 ms
    64 bytes from fe80::1%eth0: icmp_seq=2 ttl=64 time=0.714 ms
    64 bytes from fe80::1%eth0: icmp_seq=3 ttl=64 time=4.55 ms
    64 bytes from fe80::1%eth0: icmp_seq=4 ttl=64 time=1.12 ms
    ^C
    --- fe80::1%eth0 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3037ms
    rtt min/avg/max/mdev = 0.714/1.810/4.549/1.587 ms

    Einmal editiert, zuletzt von svenn (25. September 2025 um 11:18)

  • In order to debug your problem, you should post your configuration files (IP, router and nameserver), the output from "ip -6 a" (or "ifconfig -a"), from "ip -6 r" and from ping and traceroute commands to external IPs and hostnames.

    +1 here

    Most interesting part is:

    - Are you using NetworkManager (nmcli | /etc/NetworkManager) ?

    - Are you using netplan (/etc/netplan[...]) ?

    - Are you using ifupdown (/etc/network/interfaces[.d]) ?

    or are you using some different approach?

    For all of them applies:

    Feel free to share us your config so we can help you out further. Keep in mind to replace some characters of your public ipv6 network (starts with "2").

  • In order to debug your problem, you should post your configuration files (IP, router and nameserver), the output from "ip -6 a" (or "ifconfig -a"), from "ip -6 r" and from ping and traceroute commands to external IPs and hostnames.

    Here some:

    [root@omega ~]# ip -6 a

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000

    inet6 ::1/128 scope host

    valid_lft forever preferred_lft forever

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000

    inet6 2XXX:4XXX:5x:4xx::1/128 scope global noprefixroute

    valid_lft forever preferred_lft forever

    inet6 2XXX:4XXX:5x:4xx:4xxx:62ff:fe4b:9f5d/64 scope global noprefixroute

    valid_lft forever preferred_lft forever

    inet6 fe80::44a0:xxxx:xxxx:9f5d/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

    [root@omega ~]# ip -6 r

    ::1 dev lo proto kernel metric 256 pref medium

    2XXX:4XXX:5x:4xx::1 dev eth0 proto kernel metric 100 pref medium

    2XXX:4XXX:5x:4xx::/64 dev eth0 proto kernel metric 100 pref medium

    fe80::/64 dev eth0 proto kernel metric 1024 pref medium

    default via fe80::1 dev eth0 proto static metric 100 pref medium

    [root@omega ~]# ping6 fe80::1%eth0

    PING fe80::1%eth0(fe80::1%eth0) 56 data bytes

    From fe80::44a0:xxxx:xxx:xxxd%eth0 icmp_seq=1 Destination unreachable: Address unreachable

    From fe80::44a0:xxxx:xxx:xxxd%eth0 icmp_seq=2 Destination unreachable: Address unreachable

    From fe80::44a0:xxxx:xxx:xxxd%eth0 icmp_seq=3 Destination unreachable: Address unreachable

    From fe80::44a0:xxxx:xxx:xxxd%eth0 icmp_seq=4 Destination unreachable: Address unreachable

    ^C

    --- fe80::1%eth0 ping statistics ---

    4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 9210ms

    [root@omega ~]# ping6 ipv6.google.com

    PING ipv6.google.com(fra16s50-in-x0e.1e100.net (2a00:1450:4001:810::200e)) 56 data bytes

    From omega.xxxxxxx (2XXX:4XXX:5x:4xx::1) icmp_seq=1 Destination unreachable: Address unreachable

    From omega.xxxxxxx (2XXX:4XXX:5x:4xx::1) icmp_seq=2 Destination unreachable: Address unreachable

    From omega.xxxxxxx (2XXX:4XXX:5x:4xx::1) icmp_seq=3 Destination unreachable: Address unreachable

    ^C

    --- ipv6.google.com ping statistics ---

    5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4084ms

    [root@omega ~]# traceroute6 google.com

    traceroute to google.com (2a00:1450:4001:810::200e), 30 hops max, 80 byte packets

    1 omega.xxxxxxx (2XXX:4XXX:5x:4xx::1) 1444.339 ms !H 1444.302 ms !H 1444.286 ms !H

    And the settings:

    /etc/sysconfig/network-scripts/ifcfg-eth0

    BOOTPROTO=none

    DEFROUTE=yes

    DEVICE=eth0

    GATEWAY=8X.5X.0.1

    HWADDR=xxxxxxxxxxxx

    IPADDR=8x.5x.2.1xx

    IPV6ADDR=2xxx:4xxx:5x:4xx::1/64

    IPV6INIT=yes

    #IPV6_ADDR_GEN_MODE="eui64"

    IPV6_AUTOCONF=no

    IPV6_DEFAULTGW=fe80::1

    #IPV6_DEFAULTGW="fe80::1%eth0"

    IPV6_FORCE_ACCEPT_RA=no

    NETMASK=255.255.252.0

    ONBOOT=yes

    TYPE=Ethernet

    USERCTL=no

    PROXY_METHOD=none

    BROWSER_ONLY=no

    PREFIX=22

    IPV4_FAILURE_FATAL=no

    IPV6_DEFROUTE=yes

    IPV6_FAILURE_FATAL=no

    NAME="System eth0"

    UUID=xxxxxxxxxxxxxxxx


    Thank you all! :D

    3 Mal editiert, zuletzt von DJPRMF (25. September 2025 um 11:48)

  • No, it is not.

    This is in the configuration file:

    IPV6ADDR=2xxx:4xxx:5x:4xx::1/64

    But this is active:

    inet6 2XXX:4XXX:5x:4xx::1/128 scope global noprefixroute

    And: noprefixroute is set, but:

    2XXX:4XXX:5x:4xx::1 dev eth0 proto kernel metric 100 pref medium

    2XXX:4XXX:5x:4xx::/64 dev eth0 proto kernel metric 100 pref medium

    So, please show your active configuration resulting out of your configuration files. Your current active configuration does definitely not match your configuration files. How should we debug your config, when you are showing us a setup, in which you have played around?

  • Yes, you are right: the first tests have been made while i still had an "old" configuration, where what changed was only the /128. (my bad sorry)

    But was that, and that doesn't change anything else...

    With the /64, the result is exactly the same.

    Einmal editiert, zuletzt von DJPRMF (25. September 2025 um 14:39)

  • Then I repeat: There is another configuration mechanism active. There are still addresses and routes, you do not have configured. The subnet routes e.g. are not necessary, not configured and maybe even disturbing (I do not have them). The 2XXX:4XXX:5x:4xx:4xxx:62ff:fe4b:9f5d/64 is not configured, but active.

    For the first tests stick to the default address shown in the SCP. This is the address the Netcup infrastructure is using internally, if they want to access the server. The address has permanently to be configured, at least for receiving packets. Later, you can configure another address for outgoing and incoming traffic.

  • Lets put this straight.

    I reset everything ipv6 related back to "normal", and then i folow by this:
    sudo nmcli connection modify "System eth0" ipv6.method "manual" ipv6.addresses "xxxxx/64" ipv6.gateway "fe80::1"

    sudo nmcli connection modify "System eth0" ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844"

    sudo nmcli connection up "System eth0"

    sudo nmcli connection down "System eth0" && sudo nmcli connection up "System eth0"

    The result:

    ip -6 a

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000

    inet6 ::1/128 scope host

    valid_lft forever preferred_lft forever

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000

    inet6 xxxxx/64 scope global noprefixroute

    valid_lft forever preferred_lft forever

    inet6 fe80::xxxxxxx/64 scope link noprefixroute

    valid_lft forever preferred_lft forever


    ip -6 r

    ::1 dev lo proto kernel metric 256 pref medium

    2xxxxxxxxxxx/64 dev eth0 proto kernel metric 100 pref medium

    fe80::/64 dev eth0 proto kernel metric 1024 pref medium

    default via fe80::1 dev eth0 proto static metric 100 pref medium

    [root@omega ~]#

    ping6 fe80::1%eth0

    PING fe80::1%eth0(fe80::1%eth0) 56 data bytes

    From fe80::xxxxx%eth0 icmp_seq=1 Destination unreachable: Address unreachable

    From fe80::xxxxx%eth0 icmp_seq=2 Destination unreachable: Address unreachable

    From fe80::xxxxx%eth0 icmp_seq=3 Destination unreachable: Address unreachable

    From fe80::xxxxx%eth0 icmp_seq=4 Destination unreachable: Address unreachable

    From fe80::xxxxx%eth0 icmp_seq=5 Destination unreachable: Address unreachable

    ^C

    --- fe80::1%eth0 ping statistics ---

    6 packets transmitted, 0 received, +5 errors, 100% packet loss, time 5100ms


    ping6 ipv6.google.com

    PING ipv6.google.com(prg03s10-in-x0e.1e100.net (2a00:1450:4014:80a::200e)) 56 data bytes

    From omega.xxx (2xxxx::1) icmp_seq=1 Destination unreachable: Address unreachable

    From omega.xxx (2xxxx::1) icmp_seq=2 Destination unreachable: Address unreachable

    From omega.xxx (2xxxx::1) icmp_seq=3 Destination unreachable: Address unreachable

    ^C

    --- ipv6.google.com ping statistics ---

    4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3085ms

    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    BOOTPROTO=none

    DEFROUTE=yes

    DEVICE=eth0

    GATEWAY=8x.xx.0.1

    HWADDR=xxxxxx

    IPADDR=8xxxxxxxxx

    IPV6INIT=yes

    #IPV6_ADDR_GEN_MODE="eui64"

    #IPV6_DEFAULTGW="fe80::1%eth0"

    IPV6_FORCE_ACCEPT_RA=no

    NETMASK=255.255.252.0

    ONBOOT=yes

    TYPE=Ethernet

    USERCTL=no

    PROXY_METHOD=none

    BROWSER_ONLY=no

    PREFIX=22

    IPV4_FAILURE_FATAL=no

    IPV6_DEFROUTE=yes

    IPV6_FAILURE_FATAL=no

    NAME="System eth0"

    UUID=xxxxxxxx

    IPV6_AUTOCONF=no

    IPV6ADDR=2xxxx::1/64

    IPV6_DEFAULTGW=fe80::1

    DNS1=8.8.8.8

    DNS2=8.8.4.4

    DNS3=2001:4860:4860::8888

    DNS4=2001:4860:4860::8844

    better now? :)

    Einmal editiert, zuletzt von DJPRMF (25. September 2025 um 15:24)

  • No. Are you going to type in these commands after every boot? What does it help to try out different manual commands? If there is a configuration error, you will never find out this way. BTW, the resulting configuration of these manual commands is still wrong, there is a subnet route, which should not be there, but most likely this is not the root cause for your problem.

    How looks the active configuration if you reboot your system and touch nothing?

  • Are you going to type in these commands after every boot?

    I don't get it in how is that related with the issue... My issue is that, with the configuration that i am making, the server is not working with IPv6. If i will or not is irrelevant for this...

    What does it help to try out different manual commands?

    Because... that is how you configure a server? Things don't "appear" working if i don't input the correct commands for it.

    Don't understand your point here.

    If there is a configuration error

    And with the information provided, that is everything that is needed, do you see any issue?

    BTW, the resulting configuration of these manual commands is still wrong, there is a subnet route, which should not be there.

    What subnet are you talking?


    How looks the active configuration if you reboot your system and touch nothing?

    I still don't see in how reboot solve the things here. The command that i enter are the normal ones to everyone use (in Almalinux 8)... in every single server.

    This is not a temporary change, those commands are to setup the configurations - as they should. Reboot doesn't do nothing.


    Also aside, i don't know why are you being kinda rude in those exchanges... chill dude. Im just asking for help... if you cannot or you think that i don't need a answer, just don't answer. Is better that provide vague sentences that don't make sense...

  • And it makes sense to see the default config and start from there since the custom config is not working.

    Yes, but the "default" config isn't there anymore - reboot doesn't bring them back.

    What can be made, for what i see, is put everything back to a basic state and start from there.

    In the configuration above, is there anything wrong?

    (Edit: Also, note that IPv6 doesn't work either with the rescue system, just to exclude possible "system errors" that i don't see where are they)

    Einmal editiert, zuletzt von DJPRMF (25. September 2025 um 17:33)

  • My issue is that, with the configuration that i am making, the server is not working with IPv6.

    Unfortunately, we can't see the configuration you are making. We just see some commands you are typing in, without knowledge of other things flying around.

    Because... that is how you configure a server?

    Yes. I create configuration files for the system services, reboot the system and observe, if everything works like expected. This is the only guarantee, that everything works after a reboot of the server like expected. A reboot can always happen, so I can't rely on several manual commands to be typed in before a system starts to work. And be prepared: The network setup is just the first step, firewall and maybe other things will follow.

    And with the information provided, that is everything that is needed, do you see any issue?

    No. But as I said, the shown configuration files are not matching your active configuration. So I have not seen everything. Maybe there is an error you have not shown us. I want to rule out the possibility that something like that exists before we go to the next step.

    Also aside, i don't know why are you being kinda rude in those exchanges... chill dude. Im just asking for help...

    Yes, but if you want help, than please provide the information asked for. I did it three times now and got nothing usable.

  • Unfortunately, we can't see the configuration you are making. We just see some commands you are typing in, without knowledge of other flying around.

    The configuration is there: /etc/sysconfig/network-scripts/ifcfg-eth0

    The commands that "i am making" change the configuration file of the system (/etc/sysconfig/network-scripts/ifcfg-eth0).

    System eth0" ipv6.method "manual" ipv6.addresses "xxxxx/64" ipv6.gateway "fe80::1

    Adds the

    IPV6ADDR=2xxxx::1/64

    IPV6_DEFAULTGW=fe80::1

    etc...

    This is how you config ips in Almalinux....

    But as I said, the shown configuration files are not matching your active configuration

    Where?

    Einmal editiert, zuletzt von DJPRMF (25. September 2025 um 17:39)

  • No. The config does not show it. That is one reason why, I think, there is something else playing around in your network config. But you also told us, that you entered commands manually. This can also be responsible, why the output if "ip r" and "ip a" is not consistent. And therefore I asked to see the configuration directly after a reboot, in order to see, if there is some generic configuration error, or if you made your system weird with your manual commands.

    Be prepared: We will do the same for firewall, for tcpdump traces, and maybe more. And we will go to the next step, when I have seen all I wanted to see.