出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,
其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,
该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。
要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;
其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
如何测试自己的容器是否是因为ip_forward导致无法访问的呢?很简单,可以在容器内去ping同一网段的任意ip,由于docker的网桥特性,我们就能知道如果ping不通则说明是该原因。
解决:
临时:
vi /proc/sys/net/ipv4/ip_forward
将0修改为1
永久:
vi /etc/sysctl.conf
加一行 net.ipv4.ip_forward=1
无论临时还是永久,修改后都需要重启网络
systemctl restart network
到此,浏览器已经能正常访问了!