In computing, there are two types of IP addresses, IPv4 and IPv6. By default, IPv6 is enabled on RHEL 7,8 & 9 system.
However, in some situations, you may need to disable IPv6 address support for various reasons, such as application requirements or IPv6 not being needed.
IPv6 can be disabled in two methods, but this article will guide you to disable IPv6 by modifying the sysctl.conf file. It can be disabled for all network interfaces or for a specific interface based on your needs.
This method does not require a system restart, so you can use this method if you want to disable IPv6 on the fly. But you may need to follow additional steps to disable completely.
First check if your system is using IPv6 with ip command. If any 'inet6'
entry is displayed in the below output, IPv6 is enabled on the devices.
ip a | grep -i inet6 inet6 ::1/128 scope host inet6 fe80::b5c2:565a:e972:e572/64 scope link noprefixroute
As I said at the beginning of the article, we will disable IPv6 using ‘sysctl.conf’ file. However, if you don’t want to add parameters to the sysctl.conf file, you can create a separate configuration file for this under ‘/etc/sysctl.d/ipv6.conf’. Both are the same and there is no harm either way.
Add the following two entries to disable IPv6 for all adapter. The value '1'
means that IPv6 is disabled for the device.
echo "net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
Make a Note: If you want to disable IPv6 for a specific network interface, add the following entry, but replace the interface name ‘ens224’ with your own.
echo "net.ipv6.conf.ens224.disable_ipv6 = 1" >> /etc/sysctl.conf
Finally, run the following command to reflect the changes.
sysctl -p
Sometimes, disabling IPv6 using the sysctl method can break SSH Xforwarding. To avoid this, make sure the /etc/ssh/sshd_config file contains the line 'AddressFamily inet'
. To do so, add the line and restart the sshd service.
echo "AddressFamily inet" >> /etc/ssh/sshd_config
Restart sshd for changes to get effect.
systemctl restart sshd
Display the IP settings of the devices by using ip command.
ip a | grep -i inet6
If no 'inet6'
entries are displayed in the above output, IPv6 is disabled on all the devices.
Some of your interfaces may use IPv6 when you disable IPv6 using the sysctl method on a system that uses NetworkManager to manage network interfaces. Run the below command to check if any interface on your system is still using IPv6.
Make a Note: Do not disable IPv6 on ‘localhost’ as it’s important for multiple components, but if you still required then disable it.
sysctl -a | grep -i disable_ipv6
If yes, you can use the nmcli command to disable the IPv6 protocol. If you disable IPv6, NetworkManager automatically sets the corresponding sysctl values in the Kernel.
In my case, IPv6 is enabled on ‘ens224’ interface, but you need to replace actual interface of your own.
nmcli connection modify ens224 ipv6.method "disabled"
Restart the network connection.
nmcli con up id ens224
Hopefully when you check the ip command output again, you won’t find anything. Yes, it doesn’t print anything related to ‘inet6’, which means this system doesn’t have IPv6.
ip a | grep inet6
In this article, we covered how to disable IPv6 in RHEL 7, 8 and RHEL 9 systems using the ‘sysctl.conf’ file.
If you have any questions or feedback, feel free to comment below.
Cron is a command-line job scheduler available on Linux operating systems that allows users to…
A tarball is commonly known as a TAR file, short for tape archive, which is…
A tar archive is a file that stores a collection of directories and files, also…
On Linux, you can quickly find out how LUNs are mapped to the underlying OS…
Keeping your Ubuntu system up-to-date is critical to ensuring a system's stability and security. This…
When you boot a Linux system, it boots into legacy BIOS (Basic Input/Output System) mode…
This website uses cookies.