I’ve just spent the last hour trying to get IP forwarding to work with UFW nicely on Ubuntu. So in the interests of the common good, and so I can find it next time, I’m posting the answer here.

The problem is simple, when UFW enabled IP forwarding doesn’t work and you get frustrated trying to find a firewall rule that will actually make it work. The fix is pretty simple too, there are two files to update:

sudo vim /etc/default/ufw

# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"

sudo vim /etc/ufw/sysctl.conf

# Uncomment this to allow this host to route packets between interfaces
net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1

Restart UFW (sudo service ufw restart) and you should hopefully have working IP forwarding 🙂