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

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/apolloren/p/9989752.html
Copyright © 2011-2022 走看看