主机不能访问虚拟机CentOS7中的站点php
================================mysql
虚拟机上装好了centos7,并配好了nginx+php+mysql,可是本机就是没法访问。
具体状况以下
1.本机能ping通虚拟机
2.虚拟机也能ping通本机
3.虚拟机能访问本身的web 经过虚拟机IP也能访问本身的webnginx
4.本机没法访问虚拟己的webweb
===============================sql
考虑是防火墙、端口的问题centos
===============================tcp
这里注意,centos7与6有不一样,CentOS7默认的防火墙不是iptables,而是firewalle.网站
是firewalle、、firewalle、、firewalle、、centos7
因此网上较多的解决办法 /etc/init.d/iptables网上的解法应该都是基于CentOS 6去实践spa
==============================
缘由分析:
缘由:虚拟机开启了防火墙,
解决办法:防火墙添加80端口,或者关闭虚拟机防火墙。
==============================
查看已经开放的端口:
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #做用域
–add-port=80/tcp #添加端口,格式为:端口/通信协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
============================================
只需4步得真知:
一、firewall-cmd --reload #重启firewall systemctl stop firewalld.service #中止firewall systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --list-ports #查看已经开放的端口:默认都没开,没有显示数据,命令行换行
二、
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启80端口
三、
四、firewall-cmd --reload #重启firewall
firewall-cmd --list-ports #查看已经开放的端口: 显示 80/tcp 就OK了
下面本机访问虚拟机网站就能够了。
===================================
下面说一下 centos7如下版本的防火墙设置
如要开放80,22,8080 端口,输入如下命令便可
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
而后保存:
/etc/rc.d/init.d/iptables save
查看打开的端口:
/etc/init.d/iptables status
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
查看防火墙状态: service iptables status
==================================
下面说下CentOS7和6的默认防火墙的区别
CentOS 7默认使用的是firewall做为防火墙,使用iptables必须从新设置一下
一、直接关闭防火墙
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall开机启动
二、设置 iptables service
yum -y install iptables-services
若是要修改防火墙配置,如增长防火墙端口3306
vi /etc/sysconfig/iptables
增长规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效便可。
systemctl start iptables.service #打开防火墙
systemctl stop iptables.service #关闭防火墙
=======================================
下面说一下centos7安装 iptables
CentOS7默认的防火墙不是iptables,而是firewalle.
安装iptable iptable-service
#先检查是否安装了iptables service iptables status #安装iptables yum install -y iptables #升级iptables yum update iptables #安装iptables-services yum install iptables-services
禁用/中止自带的firewalld服务
#中止firewalld服务 systemctl stop firewalld #禁用firewalld服务 systemctl mask firewalld
设置现有规则
#查看iptables现有规则 iptables -L -n #先容许全部,否则有可能会杯具 iptables -P INPUT ACCEPT #清空全部默认规则 iptables -F #清空全部自定义规则 iptables -X #全部计数器归0 iptables -Z #容许来自于lo接口的数据包(本地访问) iptables -A INPUT -i lo -j ACCEPT #开放22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #开放21端口(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT #开放80端口(HTTP) iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放443端口(HTTPS) iptables -A INPUT -p tcp --dport 443 -j ACCEPT #容许ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #容许接受本机请求以后的返回数据 RELATED,是为FTP设置的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #其余入站一概丢弃 iptables -P INPUT DROP #全部出站一概绿灯 iptables -P OUTPUT ACCEPT #全部转发一概丢弃 iptables -P FORWARD DROP
其余规则设定
#若是要添加内网ip信任(接受其全部TCP请求) iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT #过滤全部非以上规则的请求 iptables -P INPUT DROP #要封停一个IP,使用下面这条命令: iptables -I INPUT -s ***.***.***.*** -j DROP #要解封一个IP,使用下面这条命令: iptables -D INPUT -s ***.***.***.*** -j DROP
保存规则设定
#保存上述规则 service iptables save
开启iptables服务
#注册iptables服务 #至关于之前的chkconfig iptables on systemctl enable iptables.service #开启服务 systemctl start iptables.service #查看状态 systemctl status iptables.service
解决vsftpd在iptables开启后,没法使用被动模式的问题
1.首先在/etc/sysconfig/iptables-config中修改或者添加如下内容
#添加如下内容,注意顺序不能调换 IPTABLES_MODULES="ip_conntrack_ftp" IPTABLES_MODULES="ip_nat_ftp"
2.从新设置iptables设置
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
如下为完整设置脚本
#!/bin/sh iptables -P INPUT ACCEPT iptables -F iptables -X iptables -Z iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP service iptables save systemctl restart iptables.service
=========================================原创,转载请注明出处!阿波罗任先生