zoukankan      html  css  js  c++  java
  • 【原创】主机不能访问虚拟机CentOS7中的站点

    主机不能访问虚拟机CentOS7中的站点

    ================================

    虚拟机上装好了centos7,并配好了nginx+php+mysql,但是本机就是无法访问。
    具体情况如下
    1.本机能ping通虚拟机
    2.虚拟机也能ping通本机
    3.虚拟机能访问自己的web     通过虚拟机IP也能访问自己的web

    4.本机无法访问虚拟己的web

    ===============================

    考虑是防火墙、端口的问题

    ===============================

    这里注意,centos7与6有不同,CentOS7默认的防火墙不是iptables,而是firewalle.

    是firewalle、、firewalle、、firewalle、、

    所以网上较多的解决办法  /etc/init.d/iptables网上的解法应该都是基于CentOS 6去实践

    ==============================

    原因分析:

    原因:虚拟机开启了防火墙,

    解决办法:防火墙添加80端口,或者关闭虚拟机防火墙。

    ==============================

    Centos 7 firewall 命令:

    查看已经开放的端口:

    firewall-cmd --list-ports

    开启端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent

    命令含义:

    –zone #作用域

    –add-port=80/tcp #添加端口,格式为:端口/通讯协议

    –permanent #永久生效,没有此参数重启后失效

    重启防火墙

    firewall-cmd --reload #重启firewall
    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    ============================================
    只需4步得真知:
    1、
    firewall-cmd --list-ports  #查看已经开放的端口:默认都没开,没有显示数据,命令行换行
    2、
    firewall-cmd --zone=public --add-port=80/tcp --permanent    #开启80端口
    3、
    firewall-cmd --reload #重启firewall
    4、
    firewall-cmd --list-ports  #查看已经开放的端口:   显示  80/tcp   就OK了

    下面本机访问虚拟机网站就可以了。
    ===================================
    下面说一下 centos7以下版本的防火墙设置

    CentOS 7 以下版本 iptables 命令

    如要开放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必须重新设置一下

    1、直接关闭防火墙

    systemctl stop firewalld.service #停止firewall

    systemctl disable firewalld.service #禁止firewall开机启动

    2、设置 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
    复制代码
     
     
    =========================================
    原创,转载请注明出处!
    阿波罗任先生

  • 相关阅读:
    Redis 常用配制参数
    CentOS 7 环境下配制 Redis 服务
    Mysql ERROR 1032 (HY000): Can't find record in TABLE
    Linux下利用Shell使PHP并发采集淘宝产品
    Linux C连接Mysql
    PHP采集淘宝商品
    关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
    mac下svn无法上传.a文件的问题
    armv6, armv7, armv7s的区别
    【转】图片处理:颜色矩阵和坐标变换矩阵
  • 原文地址:https://www.cnblogs.com/apolloren/p/9989752.html
Copyright © 2011-2022 走看看