2 Ways to Disable IPv6 on Ubuntu Desktop & Server

This tutorial is going to show you how to disable IPv6 on Ubuntu. Why do you want to disable IPv6? Although IPv6 is the future, right now many systems and applications still rely on IPv4 and may not work well with IPv6.

For example, if a software repository supports IPv6, then the APT package manager will connect to that repository via IPv6 regardless of whether or not your ISP supports IPv6, as shown in the screenshot below.

disable ipv6 ubuntu

Method 1: Disable IPv6 on Ubuntu via GRUB Boot Loader

This is the easiest method, but it requires you to reboot your computer.

GRUB is the standard boot loader on Linux distributions. Edit the GRUB configuration file with a command-line text editor like Nano.

sudo nano /etc/default/grub

Find the following line.

GRUB_CMDLINE_LINUX=""

Change it to:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

Disable IPv6 on Ubuntu via GRUB Boot Loader

Save and close the file. (Press Ctrl+O, then press Enter to save a file in Nano text editor. Next, press Ctrl+X to exit.)

Update GRUB boot menu.

sudo update-grub

And reboot your computer.

sudo shutdown -r now

Method 2: Disable IPv6 on Ubuntu via sysctl

You can disable IPv6 on your Ubuntu Linux system by making some changes to Linux kernel parameter.

Edit the 99-sysctl.conf file.

sudo nano /etc/sysctl.d/99-sysctl.conf

Copy and paste the following 3 lines at the bottom of the file.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

If your computer has a wireless card, you also need to add the following line to the file. Replace wlan0 with the name of your own wireless network interface.

net.ipv6.conf.wlan0.disable_ipv6 = 1

Save and close the file. Then execute the following command to load the above changes.

sudo sysctl -p

Now run the following command. You should see 1, which means IPv6 has been successfully disabled.

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

disable ipv6 on ubuntu 16.04

Parameters defined in 99-sysctl.conf file is preserved across reboot, so IPv6 won’t be enabled next time you boot up Ubuntu unless you manually re-enable it.

To re-enable IPv6 on Ubuntu, simply remove those 3 lines in 99-sysctl.conf file and run sudo sysctl -p command to load the changes.

Disable IPv6 in Netplan

If you run an Ubuntu server and your network interface is configured with Netplan, then you also need to disable IPv6 in the Netplan configuration file. For example, I set up my Wi-Fi connection from the command line in the /etc/netplan/10-wifi.yaml file. I need to add link-local: [ ipv4 ] to the file, so Netplan will enable only IPv6 for my wireless interface.

ubuntu disable ipv6 in netplan

Run the following command after making changes to Netplan config files.

sudo netplan apply

Disable IPv6 in NetworkManager

If you use Ubuntu desktop, then when your computer resumes from suspend, NetworkManager will reconnect your computer to the router, and it can give your computer an IPv6 address. So we also need to disable IPv6 in NetworkManager. It’s very simple. Go to your network settings, choose the IPv6 tab and disable IPv6.

disable ipv6 in network manager

Click the Apply button. Then restart Network Manager with the following command.

sudo systemctl restart NetworkManager

Disable IPv6 in APT

Sometimes, you need to disable IPv6 in the APT package manage only and other programs can continue to use IPv6 if needed. To disable IPv6 in APT, run the following command to create a configuration file for APT.

sudo nano /etc/apt/apt.conf.d/99force-ipv4

Copy and paste the following line into the file.

Acquire::ForceIPv4 "true";

Save and close the file. From now on, APT will use IPv4 only.

That’s it! I hope this tutorial helped you disable IPv6 on Ubuntu desktop and server.

Rate this tutorial
[Total: 107 Average: 4.5]

14 Responses to “2 Ways to Disable IPv6 on Ubuntu Desktop & Server

  • Psalm56Eleven
    3 years ago

    Thank you!

  • StygianAgenda
    4 years ago

    Many thanks!

    I’d just recently setup ‘Graylog’ as sort of a light SIEM solution for my lab network, and wanted to eliminate all internal IPv6 chatter. This cleared it right up.

    Also, it worked across Ubuntu 14.04 and Debian 8 (Jessie) and Debian 9 (stretch), aside from Ubuntu 16.04.3.

  • seweryn adam
    3 years ago

    For those who didn’t work suggest use also those command modyfiyng it, according to your interface name, repleace enp0s25 with your interface name:

    sudo ip addr flush enp0s25  
    sudo systemctl restart networking.service
  • Roman Yarovoy
    3 years ago

    That’s working well, thanks!

  • UFOHUNTERORGUK
    3 years ago

    Thanks !

  • Anders J
    3 years ago

    No real need to disable IPv6, really.
    If you don’t have a IPv6 router in the LAN, your computer will not use IPv6.
    If you do have a IPv6 router in the LAN, and it doesn’t work, then fix the problem, not the symptom. Fix the router. And by the way, IPv6 are faster then IPv4.

    • “Fix the router” assumes that you have control over the router, of course, and even if you can, it only fixes the problem for *one* network. It’s much better to fix the problem once and for all by definitely turning off IPv6. Then you know you are protected no matter which network you are connecting to.

  • Presto – no more worrying that connecting to a sketchy airport WiFi might expose you with a public IP address.

  • Test guy
    2 years ago

    Works for me in 19.04.

  • Thanks for the tut, works fine just outofthebox 🙂

  • Yohans Bastian
    1 year ago

    Thanks for the guide. All worked except on my Ubuntu 18.04 LTS the command “sudo sysctl -p” didn’t reload the variables. Instead I used the following command to update the IPV6 related variables:

    sudo service procps reload
  • For ubuntu 20.10 server, DO NOT use sysctl.conf or Netplan methods. when I used sysctl.conf method, it made it worse. After reboot, it added inet6 IPs even it was disabled (value = 1) for cat /proc/sys/net/ipv6/conf/all/disable_ipv6. Go with Grub method.

  • Regarding the netplan option and Ubuntu Server 21.04, if you don’t also use the ‘dhcp4: false’ (picture shows ‘dhcp4: no’) below the link-local line, you might get a 169.254 address. I started with no ‘link-local’ option and no ‘dhcp4:’ option which means ipv6 is enabled. Add the link-local option and 169.254 address shows up. Add the ‘dhcp4: no’ option and nothing changes (i.e. 169.254 address still exists), change to ‘dhcp4: false’ and all is well now. As usual, working harder not smarter in linux.

    • Nope, still have a 169.254 address, just couldn’t see it in ‘ifconfig’. Only showed up in ‘ip a’. Irritating.

Leave a Comment

  • Comments with links are moderated by admin before published.
  • Your email address will not be published.
  • Use <pre> ... </pre> HTML tag to quote the output from your terminal/console.
  • Please use the community (https://community.linuxbabe.com) for questions unrelated to this article.
  • I don't have time to answer every question. Making a donation would incentivize me to spend more time answering questions.

The maximum upload file size: 2 MB. You can upload: image. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded.