CentOS 7: How to enable IP Forwarding

How to enable IP Forwarding

“IP forwarding” is a synonym for “routing.” It is called “kernel IP forwarding” because it is a feature of the Linux kernel.

By default any modern Linux distributions will have IP Forwarding disabled.IP forwarding is a process used to determine which path a packet or datagram can be sent. The process uses routing information to make decisions and is designed to send a packet over multiple networks.

This forwarding of network traffic can become dangerous at times, especially with the availability of modern cracking tools that can spoof internal IP addresses and make the remote attacker’s machine act as a node on your LAN.
To prevent this, iptables provides routing and forwarding policies that can be implemented to prevent abnormal usage of network resources.

Check if IP forwarding is enabled:

Using sysctl:

~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

or By Checking value in /proc/sys/net/ipv4/ip_forward

~]# cat /proc/sys/net/ipv4/ip_forward
0

Enable IP Forwarding:-

By default, the IPv4 policy in Red Hat Enterprise Linux kernels disables support for IP forwarding. This prevents machines that run Red Hat Enterprise Linux from functioning as dedicated edge routers. To enable IP forwarding, use the following command as the root user:-

~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

This configuration change is only valid for the current session; the result will not be preserved after rebooting the system.
.To permanently set IP forwarding, add the line in /etc/sysctl.conf file as follows:

~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

To enable the changes made in sysctl.conf you will need to run the command as the root user:

~]# sysctl -p /etc/sysctl.conf net.ipv4.ip_forward = 1 ------ 

Enable IP forwarding

To enable IP packet forwarding please edit /etc/sysctl.conf with your editor of choice and set:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

You can then verify your settings with:

/sbin/sysctl -p

How to Enable IP Forwarding (complete)

By default any modern Linux distributions will have IP Forwarding disabled. This is normally a good idea, as most peoples will not need IP Forwarding, but if we are setting up a Linux router/gateway/firewall or maybe a VPN server (pptp or ipsec) or just a plain dial-in server then we will need to enable forwarding. This can be done in several ways that I will present bellow.

Check if IP Forwarding is enabled

We have to query the sysctl kernel value net.ipv4.ip_forward to see if forwarding is enabled or not: Using sysctl:

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

or just checking out the value in the /proc system:

cat /proc/sys/net/ipv4/ip_forward
0

As we can see in both the above examples this was disabled (as show by the value 0).

Enable IP Forwarding on the fly

As with any sysctl kernel parameters we can change the value of net.ipv4.ip_forward on the fly (without rebooting the system):

sysctl -w net.ipv4.ip_forward=1

or

echo 1 > /proc/sys/net/ipv4/ip_forward

the setting is changed instantly; the result will not be preserved after rebooting the system.

Permanent setting using /etc/sysctl.conf

If we want to make this configuration permanent the best way to do it is using the file /etc/sysctl.conf where we can add a line containing net.ipv4.ip_forward = 1

/etc/sysctl.conf:
net.ipv4.ip_forward = 1

if you already have an entry net.ipv4.ip_forward with the value 0 you can change that 1.

To enable the changes made in sysctl.conf you will need to run the command:

sysctl -p /etc/sysctl.conf

On RedHat based systems this is also enabled when restarting the network service:

service network restart

and on Debian/Ubuntu systems this can be also done restarting the procps service:

/etc/init.d/procps.sh restart
Using distribution specific init scripts

Although the methods presented above should work just fine and you would not need any other method of doing this, I just wanted to note that there are also other methods to enable IP Forwarding specific to some Linux distributions. For example Debian based distributions might use the setting:

/etc/network/options:
ip_forward=no

set it to yes and restart the network service. Also RedHat distributions might set this using:

/etc/sysconfig/network:
FORWARD_IPV4=true

and again restart the network service.

Regardless the method you have used once you have completed this you can check it out using the same method shown above:

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
cat /proc/sys/net/ipv4/ip_forward
1

If the result is 1 then the Linux system will start forwarding IP packets even if they are not destined to any of its own network interfaces.

ps. I was setting up a Firewall server when I wrote this post.

Source: https://docs.mysirena.xyz/centos-7/prefilight-configuration/how-to-enable-ip-forwarding