Linux - firewalld - 开放端口

  1. 概述

    1. 年轻人的第一次 firewalld 体验
  2. 背景

    1. 第一次安装了 apache
      1. 正儿八经的
    2. 本来想在 localhost 用 curl 看看服务器得了
    3. 结果 80 端口的默认页面, 是一个有头有脸的 html
      1. 我顿时就像看看页面长啥样
      2. 可是换了 宿主机浏览器, 结果发现浏览器打不开
    4. 但是 ping 能通, ssh 也能通
    5. 于是又回到了老路, 防火墙 和 selinux 的问题
      1. 本来也时打算 一关解千愁
      2. 可是想起了上次的事, 决定还是稍微看看有没有别的解决办法
      3. 上次随便关防火墙, 导致了 docker-cli 和 git 不能同时连接外网的神奇事件...
      4. 这次只说 防火墙, selinux 我现在也不会...
  3. 环境

    1. 虚拟机 OS

      1. CentOS 7
    2. Apache

      1. 2.4.6-90
    3. 网络模式

      1. 桥接

1. 问题

  1. 问题

    1. 虚拟机内的 http 服务器, 无法被 宿主机 访问
  2. 验证

    1. 虚拟机

      1. httpd 正常启动
      2. curl localhost 可以有正确结果
      3. 验证 firewalld 是否打开
        1. 我这是打开了的
        2. 假如没有打开, 我真不知道怎么办了...
    2. 宿主机

      1. ping 通虚拟机
      2. 浏览器无法访问
  3. 想法

    1. 嗯, 端口出了问题

2. 智障解法: 关闭防火墙

  1. 概述

    1. 最无脑的解法
    2. 要不是上次 docker 给我搞那么惨, 我就信了
  2. 操作

    # 1. 验证 防火墙 是否打开
    > systemctl status firewalld
    # 2. 关闭 防火墙
    > systemctl stop firewalld
    # 3. 验证 防火墙 是否打开
    > systemctl status firewalld
    
  3. 结果

    1. 防火墙关闭成功
    2. 宿主机 访问 虚拟机 80 端口成功

3. 常规解法: 让 firewalld 开放 80端口

  1. 概述

    1. 正常的解法
  2. 步骤

1. 确认 firewalld 是否打开

  1. 概述
    1. 一定要确保打开

2. 查看 firewalld 的 开放端口列表

  1. 概述

    1. 查看开放端口
  2. 命令

    > firewall-cmd --list-ports
    
  3. 结果

    1. 果然 80/tcp 并没有在其中

3. 将 80/tcp 添加到 开放端口列表中

  1. 概述

    1. 添加开放端口
  2. 命令

    # 1. 添加端口
    # 参数意思, 我并不是很懂
    # 但是稍微有点基础的同学, 肯定能猜个 7788
    # 我打算等以后正式学习 firewalld 时, 再 详细说明
    > firewall-cmd --zone=public --add-port=80/tcp --permanent
    
    # 2. 重启 firewalld
    # 这步必须有
    > firewall-cmd --reload
    
    # 3. 查看是否生效
    # 80/tcp 加入了列表
    > firewall-cmd --list-ports
    

4. 宿主机验证

  1. 概述

    1. 宿主机浏览器验证
  2. 结果

    1. 我这边通过了
      1. 具体我就不细说了

ps

  1. ref

    1. linux:centos7开启80端口,开放外网访问
  2. 其他

    1. firewalld 有空看一看
    2. firewalld 和 iptables
      1. 其实他俩, 是一个东西
posted @ 2020-03-04 16:43  轩辕拾銉  阅读(6552)  评论(2编辑  收藏  举报