IP地址分为公有ip地址和私有ip地址,Public Address是由INIC(internet network information center)负责的,这些IP地址分配给了注册并向INIC提出申请的组织机构。Private Address属于非注册地址,专门为组织内部使用。Private Address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的转发(nat)功能把私有地址转换为公有地址才行。
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。
说明:现在有些网络已经普及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
以上是如何在Ubuntu上启用IP转发的详细内容。更多信息请关注PHP中文网其他相关文章!