问题背景
一个apache2的web服务运行在docker中,docker跑在vmware虚拟机上面。结果在apache2的docker中无法ping baidu.com,但是在vmware的linux虚拟机可以通。
问题分析
怀疑是linux虚拟机没有开启ipv4数据转发功能。
启用ipv4数据转发
修改/etc/sysctl.conf 配置文件
在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
需要注意的是,修改sysctl.conf文件后需要执行指令sysctl -p 后新的配置才会生效。
如果启用ipv4数据转发以后还不行,尝试关闭linux虚拟机的防火墙。
关闭linux虚拟机防火墙
sudo systemctl stop firewalld 临时关闭
sudo systemctl disable firewalld ,然后reboot 永久关闭
sudo systemctl status firewalld 查看防火墙状态。