問題:::
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:
- yum install iptables-services
設置開機啓動:
- systemctl enable iptables
- systemctl stop iptables
- systemctl start iptables
- systemctl restart iptables
- systemctl reload iptables
保存設置:
- 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