IP地址分为公有ip地址和私有ip地址,Public Address是由INIC(internet network information center)负责的,这些IP地址分配给了注册并向INIC提出申请的组织机构。Private Address属于非注册地址,专门为组织内部使用。Private Address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的转发(nat)功能把私有地址转换为公有地址才行。

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

1、通过访问sysctl的内核ipv4.ip_forward来判断转发是否开启。

说明:现在有些网络已经普及ipv6的,所以下面的命令可以从ipv4改为ipv6即可

使用sysctl:

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

或者检查/proc下的文件:

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

ipv4转发没有开启 (值为 0)

2、启动IP转发

通过sysctl可以开启ipv4的转发功能 (无需重启):

sysctl -w net.ipv4.ip_forward=1

或者

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

这种设置只是暂时的,它的效果会随着计算机的重启而失效。

通过在/etc/sysctl.conf设置参数:

如果想使IP转发永久生效,就请修改/etc/sysctl.conf ,在这里可以增加一条net.ipv4.ip_forward = 1

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

如果ipv4转发项已被设为0那么你只需要将它改为1。

3、要想是更改生效,你需要执行以下指令:

sysctl -p /etc/sysctl.conf

红帽系列的发行版上可以通过重启网络服务使之生效:

service network restart

而在Debian/Ubuntu系列的发行版则用这样的命令:

#早期版本

/etc/init.d/procps.sh restart

#最新版本

/etc/init.d/procps restart

原文来自:http://www.linuxidc.com/Linux/2017-09/147186.htm

本文地址:http://www.linuxprobe.com/ubuntu-ip-forward.html编辑:清蒸github,审核员:逄增宝