问题描述
一台物理服务器a,虚拟化了机器b和c,a、b、c全部安装了centos7.6系统,关闭所有防火墙;宿主机a上安装了docker-ce 18.09,然后run了一个应用app1,映射端口80=>80; 然后在尝试在b、c中用curl模拟浏览器访问a中的容器应用app1的url,没有反应,过很长时间后就超时了。
换了一台物理机再次尝试一样:重新找了一台物理机m,虚拟化了机器n,m和n全部安装了centos7.6系统,关闭所有防火墙;宿主机m上安装了docker-ce 18.09,然后run了一个应用app1,映射端口80=>80; 然后在尝试在n中用curl访问m中的容器应用app1的url,没有反应,过很长时间后就超时了。
但是,神奇的是,交叉访问是可以,b和c可以访问m中的app1;n可以访问a中app1;另外,a可以访问a和m中app1,m可以访问a、m中的app1
补充一句:物理服务器都是双网卡,网卡1给自己用,网卡2做成网桥给虚拟机网络用,虚拟机使用kvm。
问题出现的平台版本及自己尝试过哪些方法
操作系统全部是centos7.6;所有的网络防护措施全部关闭,已经确认过;iptables中所有链的默认规则都是ACCEPT。
尝试过程升级、重装补丁、重启docker、应用,清空iptables,都无效。
用tcpdump在a中抓包,抓不到发往a 80端口的包。
你的猜测和怀疑
我连续折腾了好几天,基本判断如下:
1)一定是网络防火墙方面默认设置规则的问题
2)是iptables中docker和kvm虚拟机默认规则限制了这种访问
3)通过调整iptables 规则应该可以解决这个问题
但是,我对网络不懂,对iptables规则也不太熟悉,请哪位懂网络安全的大侠或解决过类似问题的朋友,帮忙解答一下这种情况的处理,多谢多谢!
/proc/sys/net/ipv4/ip_forward
这个开了吗?ping
吧