共计 1056 个字符,预计需要花费 3 分钟才能阅读完成。
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)
通过 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。
sysctl -p /etc/sysctl.conf
在红帽系列的发行版上可以通过重启网络服务使之生效:
service network restart
而在 Debian/Ubuntu 系列的发行版则用这样的命令:
# 早期版本
/etc/init.d/procps.sh restart
# 最新版本
/etc/init.d/procps restart