【解决办法】宿主机中将ip forward打开就好了,这个解决办法是正确的,经过多次验证。
【具体步骤】
代码: 全选
1. 检查宿主机上是否开启数据包转发功能
cat /proc/sys/net/ipv4/ip_forward
2. 临时开启:
echo 1 > /proc/sys/net/ipv4/ip_forward
3. 永久开启,开机自动加载配置:
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
永久开启设置后,重新启动电脑并不能生效。但是执行sysctl -p后,sysctl.conf的内容被读取并生效。
【问题的解决办法】
启用/etc/rc.local脚本,里面写入sysctl -p一句。同时配置systemctl enable rc-local 和 systemctl start rc-local,均成功配置(需要一点额外的工作,不赘述)。
【结果】
重新启动电脑后,cat /proc/sys/net/ipv4/ip_forward的结果还是0,表明转发没有启用成功。正常来说,这里有两次设置转发的时机:①/etc/sysctl.conf的内容 ②rc.local中手动调用sysctl -p。
现在能确认rc.local的内容没有问题并在系统启动后能自动执行,因为手动运行system restart rc-local后,cat /proc/sys/net/ipv4/ip_forward的值马上就修改为1了。并且在/var/log/boot.log或者/var/log/syslog中都有类似下面的日志。
代码: 全选
Jan 1 17:06:10 aug-HP-ZBook-15u-G5 rc.local[8463]: net.ipv4.ip_forward = 1
Jan 1 17:06:10 aug-HP-ZBook-15u-G5 rc.local[8463]: net.ipv6.conf.all.forwarding = 1
===========================
【后续结论】
还是跟启动顺序有关,后续有别的东西再次改动了转发设定。