问题:::

1.宿主机可以ping通虚拟机

2.虚拟机可以ping通宿主机

3.虚拟机可以通过http://localhost来访问web服务器

4.宿主机通过浏览器不能访问到web服务器

首先,我在宿主机的dos窗口下telnet虚拟机的80窗口,失败了,由此可以确定是虚拟机的80窗口有问题,应该是被防火墙堵住了。

原因: 主要是虚拟机linux系统中的防火墙导致

粗暴处理: systemctl stop firewalld ,停止防火墙,ok,问题解决.

一般处理,可以详见下文:

-----------------------------------------------------------------------------------

早期Linux版本处理:

1.修改防火墙设置:在Shell下输入命令 /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

2.保存上面的设置:/etc/rc.d/init.d/iptables saved

3.重启防火墙:/etc/init.d/iptables restart

最直接的 打开iptables  
gedit /etc/sysconfig/iptables  

在里面添加下面的(增加80,8080)

-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

然后重启service iptables restart

-----------------------------------------------------------------------------------

目前使用Centos7-1708,不再支持早期处理,若要类似处理,需要安装iptables-services

且安装iptables-services:

[plain]  view plain  copy
  1. yum install iptables-services  

设置开机启动:

[plain]  view plain  copy
  1. systemctl enable iptables  

[plain]  view plain  copy
  1. systemctl stop iptables  
  2. systemctl start iptables  
  3. systemctl restart iptables  
  4. systemctl reload iptables  

保存设置:

[plain]  view plain  copy
  1. service iptables save  

后期补充,待验证:(仅供参考)

在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理,

如果要添加范围例外端口 如 1000-2000
语法命令如下:启用区域端口和协议组合
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
此举将启用端口和协议的组合。端口可以是一个单独的端口 <port> 或者是一个端口范围 <port>-<port> 。协议可以是 tcp 或 udp。
实际命令如下:

添加

firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent 

重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐