Future-proof your network today! Learn how to configure IPv6 networking on Linux and stay ahead in the world of modern internet infrastructure. Don’t let outdated setups hold you back—master IPv6 before it becomes a requirement. #centlinux #linux #networking
Table of Contents
Problem Statement
Red Hat Enterprise Linux (RHEL) 7 fully supports IPv6 network. It is not much difficult to configure an IPv6 network, if you have some basic understanding of IPv6 addressing scheme.
In this article, we will configure Linux IPv6 Networking between two Red Hat Enterprise Linux (RHEL) 7 machines by setting static IPv6 addresses using nmcli commands.

What is IPv6?
Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet. IPv6 was developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion, and is intended to replace IPv4. In December 1998, IPv6 became a Draft Standard for the IETF, which subsequently ratified it as an Internet Standard on 14 July 2017.
Devices on the Internet are assigned a unique IP address for identification and location definition. With the rapid growth of the Internet after commercialization in the 1990s, it became evident that far more addresses would be needed to connect devices than the IPv4 address space had available. By 1998, the IETF had formalized the successor protocol. IPv6 uses 128-bit addresses, theoretically allowing 2128, or approximately 3.4×1038 total addresses.
The actual number is slightly smaller, as multiple ranges are reserved for special use or completely excluded from use. The two protocols are not designed to be interoperable, and thus direct communication between them is impossible, complicating the move to IPv6. However, several transition mechanisms have been devised to rectify this.
IPv6 provides other technical benefits in addition to a larger addressing space. In particular, it permits hierarchical address allocation methods that facilitate route aggregation across the Internet, and thus limit the expansion of routing tables. The use of multicast addressing is expanded and simplified, and provides additional optimization for the delivery of services. Device mobility, security, and configuration aspects have been considered in the design of the protocol.
IPv6 addresses are represented as eight groups of four hexadecimal digits each, separated by colons. The full representation may be shortened; for example, 2001:0db8:0000:0000:0000:8a2e:0370:7334 becomes 2001:db8::8a2e:370:7334. (Source: Wikipedia)
Recommended Training: Introduction to Computer Networking – Beginner Crash Course from Rick Crisci

Linux Server Specification
We have two RHEL 7 virtual machines. for which, we have allocated the following IPv6 addresses.
Machine | IPv6 Address |
server1.example.com | fddb:fe2a:ab1e::c0a8:94/64 |
desktop1.example.com | fddb:fe2a:ab1e::c0a8:95/64 |
Gateway | fddb:fe2a:ab1e::c0a8:50/64 |
Apple 2025 MacBook Air 13-inch Laptop with M4 chip: Built for Apple Intelligence, 13.6-inch Liquid Retina Display, 16GB Unified Memory, 256GB SSD Storage, 12MP Center Stage Camera, Touch ID; Midnight
$893.90 (as of May 17, 2025 16:12 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Configure Linux IPv6 Networking
Connect to server1.example.com using ssh and configure IPv6 addresses as follows.
nmcli connection modify eno16777728 ipv6.method manual ipv6.addresses "fddb:fe2a:ab1e::c0a8:94/64 fddb:fe2a:ab1e::c0a8:50"
nmcli c down eno16777728 ; nmcli c up eno16777728
Output:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Check IP Address information.
ip addr
Output:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:63:0c:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.116.11/24 brd 192.168.116.255 scope global eno16777728
valid_lft forever preferred_lft forever
inet6 fddb:fe2a:ab1e::c0a8:94/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe63:c9a/64 scope link
valid_lft forever preferred_lft forever
3: eno33554968: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:63:0c:a4 brd ff:ff:ff:ff:ff:ff
Now, connect to desktop1.example.com and configure IPv6 network as follows.
nmcli connection modify eno16777728 ipv6.method manual ipv6.addresses "fddb:fe2a:ab1e::c0a8:95/64 fddb:fe2a:ab1e::c0a8:50"
nmcli c down eno16777728 ; nmcli c up eno16777728
Output:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Check IP Address information.
ip addr
Output:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
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: eno16777728: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:68:ae:66 brd ff:ff:ff:ff:ff:ff
inet 192.168.116.12/24 brd 192.168.116.255 scope global eno16777728
valid_lft forever preferred_lft forever
inet6 fddb:fe2a:ab1e::c0a8:95/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe68:ae66/64 scope link
valid_lft forever preferred_lft forever
3: eno33554968: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:68:ae:70 brd ff:ff:ff:ff:ff:ff
Ping both IPv6 addresses from any machine to confirm the network connectivity.
ping6 fddb:fe2a:ab1e::c0a8:94
Output:
PING fddb:fe2a:ab1e::c0a8:94(fddb:fe2a:ab1e::c0a8:94) 56 data bytes
64 bytes from fddb:fe2a:ab1e::c0a8:94: icmp_seq=4 ttl=64 time=0.268 ms
64 bytes from fddb:fe2a:ab1e::c0a8:94: icmp_seq=5 ttl=64 time=0.257 ms
^C
--- fddb:fe2a:ab1e::c0a8:94 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 4019ms
rtt min/avg/max/mdev = 0.257/0.271/0.299/0.020 ms
Ping to second IPv6 address.
ping6 fddb:fe2a:ab1e::c0a8:95
Output:
PING fddb:fe2a:ab1e::c0a8:95(fddb:fe2a:ab1e::c0a8:95) 56 data bytes
64 bytes from fddb:fe2a:ab1e::c0a8:95: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from fddb:fe2a:ab1e::c0a8:95: icmp_seq=3 ttl=64 time=0.060 ms
^C
--- fddb:fe2a:ab1e::c0a8:95 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.056/0.062/0.071/0.009 ms
We have successfully configured static IPv6 networking between two Red Hat Enterprise Linux (RHEL) 7 by setting IPv6 addresses using nmcli command.
Frequently Asked Questions (FAQs)
What is IPv6, and why is it important?
IPv6 is the latest version of the Internet Protocol, designed to replace IPv4 due to its larger address space. It’s important because IPv4 addresses are running out, and IPv6 improves security, efficiency, and scalability.
How do I check if my Linux system has IPv6 enabled?
You can verify IPv6 support by checking network interfaces or kernel settings. Most modern Linux distributions enable IPv6 by default.
What’s the difference between static and dynamic IPv6 configuration?
Static IPv6 requires manually assigning addresses, while dynamic IPv6 uses protocols like SLAAC or DHCPv6 to automatically assign addresses.
Do I need to disable IPv4 to use IPv6?
No, Linux supports dual-stack networking, allowing both IPv4 and IPv6 to work simultaneously.
How can I test if my IPv6 connection is working?
You can test connectivity using tools like ping6
(for basic reachability) or visit IPv6-enabled websites (e.g., ipv6.google.com
).
Ansible For Linux by Examples: 200+ Automation Examples For Linux System Administrator and DevOps
$9.99 (as of May 17, 2025 16:11 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Final Thoughts
By configuring IPv6 networking on your Linux system, you’ve taken a critical step toward modernizing your infrastructure and ensuring compatibility with the evolving internet landscape. As IPv4 resources become scarcer and more networks transition to IPv6, staying ahead is no longer optional—it’s essential.
You now have the tools to set up IPv6 addresses, routes, and DNS, putting you in control of next-generation connectivity. Don’t fall behind—embrace IPv6 today and lead the shift toward a faster, more scalable future.
Struggling with Linux server management? I offer professional support to ensure your servers are secure, optimized, and always available. Visit my Fiverr profile to learn more!
Thank you for reading, and best of luck with your IPv6 networking setup!
Leave a Reply
You must be logged in to post a comment.