19

Whenever I run a command like ufw allow 22, ufw automatically adds the firewall rules to both ipv4 and ipv6. If I want to only open a port on ipv4, is there a way to do so? Something like ufw allow 22 proto ipv4.

3 Answers 3

28

You just have to use the fuller syntax and specify an address (range).

For example, allow connections to TCP port 22 on all IPv4 addresses:

ufw allow proto tcp to 0.0.0.0/0 port 22
1
  • I don't think this actually is a complete answer. Please see mine below. Thanks
    – james-see
    Feb 13, 2019 at 4:20
23

I would edit the ufw config file itself to turn off IPv6:

sudo nano /etc/default/ufw

Change the line that says: IPV6=yes to IPV6=no then restart the ufw service. You can even run sudo ufw reload if the ufw instance is already enabled.

This worked for me to ensure that all the rules I add are only added to IPv4.

Thanks

12
  • 1
    It works fantastic, and it even causes deletion of all the duplicate IPv6 rules immediately upon reload. Thank you
    – spaceman
    Feb 12, 2020 at 12:35
  • @spaceman no problem, glad it worked out
    – james-see
    Feb 12, 2020 at 19:57
  • 3
    Warning: All IPv6 rules will be deleted and not be restored if setting IPV6=yes again. Sep 24, 2020 at 13:58
  • 1
    @M.Rostami no. It disables IPv6 completely and removes all current IPv6 rules.
    – james-see
    Feb 4, 2021 at 16:00
  • 1
    This will block all the incoming ipv6 traffic, it will prevent ipv6 users from accessing your sites!
    – the_nuts
    Feb 4, 2022 at 10:33
4

Maybe only by subnet:

sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22

More info: https://help.ubuntu.com/lts/serverguide/firewall.html

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .