linux 网络问题 ipv4 forwarding

在虚拟机中安装Docker并启动Nginx容器时遇到IPv4转发被禁用的警告。这由于Linux系统默认禁止数据包转发导致。要启用转发,需设置内核参数net.ipv4.ip_forward为1。临时修改可通过sysctl命令,永久修改需编辑/etc/sysctl.conf或在/etc/sysctl.d/创建配置文件,然后重新加载内核参数。最后验证配置并重启网络服务。
摘要由CSDN通过智能技术生成

ipv4 forwarding

WARNING: IPv4 forwarding is disabled. Networking will not work

出现场景: 虚拟机中安装了docker,docker启动nginx容器时,弹出以上警告内容

分析: docker网桥配置完后,需要开启转发,不然容器启动后,就会没有网络

更进一步:

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

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

解决方案:

  1. 临时修改方式(未验证)
    临时生效的配置方式,在系统重启,或对系统的网络服务进行重启后都会失效。这种方式可用于临时测试、或做实验时使用。
sysctl -w net.ipv4.ip_forward=1

或者

echo 1 > /proc/sys/net/ipv4/ip_forward
  1. 永久修改方式(已验证)
    永久生效的配置方式,在系统重启、或对系统的网络服务进行重启后还会一直保持生效状态。这种方式可用于生产环境的部署搭建。

查看配置文件/etc/sysctl.conf
在这里插入图片描述只有一堆注释,你可以直接添加配置项

 net.ipv4.ip_forward=1 

但是注释说明官方推荐的方式是在 /etc/sysctl.d/ 目录新建一个用户文件,如 my.conf,然后在此配置文件中添加上述配置项。

修改之后,重新加载内核参数设置

sysctl -p

验证一下,配置是否已修改,返回 net.ipv4.ip_forward = 1即成功

sysctl net.ipv4.ip_forward  

重启network服务

systemctl restart network

至此结束!

参考文章 :
Linux 7 中 /etc/sysctl.conf 的位置变化 :https://www.cndba.cn/dave/article/2966

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值