某次虚拟机突然连接不上,docker启动的redis也无法连接,重启容器也不行。删掉容器,重启docker,重建容器时发现如下错误:
IPv4 forwarding is disabled. Networking will not work
发现是ipv4转发没有开启。
查看是否开启IPv4转发:
cat /proc/sys/net/ipv4/ip_forward
ps: 0为关闭,默认选项,1为开启。
开启:方法一
vim /etc/sysctl.conf
# 插入这一行
# net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker
方法二:
sysctl -w net.ipv4.ip_forward=1
方法三:
echo 1 > /proc/sys/net/ipv4/ip_forward
解决。
姿势:IPV4 Forwarding是什么?为什么需要开启这个选项?
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。
要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
参考这篇:作者写的很详细