Disable IPv6 on Raspberry Pi 4.
The first solution uses runtime kernel parameters, second and third one disables ipv6
module using two equivalent methods.
Take advantage of system parameters
Inspect current IPv4/IPv6 addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 172.16.1.101/16 fe80::14b8:2700:4354:ec24/64 wlan0 DOWN
Alter system parameters to disable IPv6.
$ echo net.ipv6.conf.all.disable_ipv6=1 | sudo tee /etc/sysctl.d/disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6=1
Apply changes.
$ sudo sysctl --system
* Applying /usr/lib/sysctl.d/50-pid-max.conf ... kernel.pid_max = 4194304 * Applying /etc/sysctl.d/98-rpi.conf ... kernel.printk = 3 4 1 3 vm.min_free_kbytes = 16384 net.ipv4.ping_group_range = 0 2147483647 * Applying /etc/sysctl.d/99-sysctl.conf ... * Applying /etc/sysctl.d/disable-ipv6.conf ... net.ipv6.conf.all.disable_ipv6 = 1 * Applying /usr/lib/sysctl.d/protect-links.conf ... fs.protected_fifos = 1 fs.protected_hardlinks = 1 fs.protected_regular = 2 fs.protected_symlinks = 1 * Applying /etc/sysctl.conf ...
Inspect IP addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 172.16.1.101/16 wlan0 DOWN
Take advantage of kernel boot parameters
Inspect current IPv4/IPv6 addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 172.16.1.102/16 fe80::18c2:49dd:2041:4e4b/64 wlan0 DOWN
Inspect kernel boot parameters.
$ cat /boot/cmdline.txt; echo
console=serial0,115200 console=tty1 root=PARTUUID=4c6fc505-02 rootfstype=ext4 fsck.repair=yes rootwait
Alter these parameters to disable IPv6 module.
$ sudo sed -i -e 's/$/ ipv6.disable=1/' /boot/cmdline.txt
$ cat /boot/cmdline.txt; echo
console=serial0,115200 console=tty1 root=PARTUUID=4c6fc505-02 rootfstype=ext4 fsck.repair=yes rootwait ipv6.disable=1
Reboot operating system.
$ sudo reboot
Inspect kernel parameters.
$ cat /proc/cmdline
coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 video=HDMI-A-1:2560x1080M@60 smsc95xx.macaddr=E4:5F:01:42:3A:49 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyS0,115200 console=tty1 root=PARTUUID=4c6fc505-02 rootfstype=ext4 fsck.repair=yes rootwait ipv6.disable=1
Inspect IP addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 eth0 UP 172.16.1.102/16 wlan0 DOWN
Take advantage of modprobe configuration
Inspect current IPv4/IPv6 addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 172.16.1.103/16 fe80::14b8:a330:21a2:24aa/64 wlan0 DOWN
Display module parameters.
$ modinfo ipv6
name: ipv6 filename: (builtin) alias: net-pf-10 license: GPL file: net/ipv6/ipv6 description: IPv6 protocol stack for Linux author: Cast of dozens parm: disable:Disable IPv6 module such that it is non-functional (int) parm: disable_ipv6:Disable IPv6 on all interfaces (int) parm: autoconf:Enable IPv6 address autoconfiguration on all interfaces (int)
Blacklist IPv6 module.
$ echo "options ipv6 disable=1" | sudo tee /etc/modprobe.d/ipv6.conf
options ipv6 disable=1
Reboot operating system.
$ sudo reboot
Inspect IP addresses.
$ ip -br a
lo UNKNOWN 127.0.0.1/8 eth0 UP 172.16.1.103/16 wlan0 DOWN