IP forwarding is about sending a network packet from one network interface to another, it is a synonym of routing.
If your Linux machine has multiple network interfaces, and if traffic comes in one interface that matches a subnet of another interface, if IP forwarding is enabled, then it forwards that traffic to the other network interface.
On Linux operating systems, the kernel has the variable
ip_forward in the path
'/proc/sys/net/ipv4/ip_forward'. The default value is 0 (disabled), and you can change it to 1 (enabled).
Temporal IP Forwarding
If you want to enable IP forwarding temporarily, you can easily change the value from 0 to 1 of the
$ echo 1 > /proc/sys/net/ipv4/ip_forward
If you want to get the current value of
ip_forward, you can simply use
$ cat /proc/sys/net/ipv4/ip_forward
Indeed, it’s enabled now and you can start forwarding packets. However, once you reboot your system, it goes back to 0 (disabled).
In the next section, we’ll see how to enable IP forwarding permanently.
Permanent IP Forwarding
The IP forwarding configuration file in Debian-based distributions is located in
/etc/sysctl.conf. As a result, we need to add IP forward configuration there, let’s edit that file:
$ nano /etc/sysctl.conf
Then add the following line:
Usually, you’ll see this line exists but commented with the
'#', you can either remove the
'#' or add a whole new line.
Also, if you want to enable IP forwarding on IPv6 instead of IPv4, then add the line:
Similarly, the line is already there, you can either uncomment the line or add it. Finally, save the file and exit.
Now this won’t take effect immediately, you can either reboot your system, or reload the proc file system using the following command:
$ /etc/init.d/procps restart
You’ll immediately see effect in the
/proc/sys/net/ipv4/ip_forward file after the above command.
In this guide, you learned how to enable and disable IP forwarding in Debian-based Linux systems, both temporarily and permanently.
Learn also: How to Get your Public IP Address in Linux.