- 概述
- 年轻人的第一次 firewalld 体验
- 背景
- 第一次安装了 apache
- 正儿八经的
- 本来想用 curl 看看服务器得了
- 结果 80 端口的默认页面, 是一个有头有脸的 html
- 我顿时就像看看页面长啥样
- 结果发现浏览器打不开
- 但是 ping 能通, ssh 也能通
- 于是又回到了老路, 防火墙 和 selinux 的问题
- 本来也时打算 一关解千愁
- 可是想起了上次的事, 决定还是稍微看看有没有别的解决办法
- 上次随便关防火墙, 导致了 docker-cli 和 git 总有一端连不上网...
- 第一次安装了 apache
- 环境
- 虚拟机 OS
- CentOS 7
- Apache
- 2.4.6-90
- 网络模式
- 桥接
- 虚拟机 OS
1. 问题
- 问题
- 虚拟机内的 http 服务器, 无法被 宿主机 访问
- 验证
- 虚拟机
- httpd 正常启动
curl localhost
可以有正确结果- 验证 firewalld 是否打开
- 我这是打开了的
- 假如没有打开, 我真不知道怎么办了...
- 宿主机
- ping 通虚拟机
- 浏览器无法访问
- 虚拟机
- 想法
- 嗯, 端口出了问题
2. 智障解法: 关闭防火墙
- 概述
- 最无脑的解法
- 要不是上次 docker 给我搞那么惨, 我就信了
操作
# 1. 验证 防火墙 是否打开 > systemctl status firewalld # 2. 关闭 防火墙 > systemctl stop firewalld # 3. 验证 防火墙 是否打开 > systemctl status firewalld
- 结果
- 防火墙关闭成功
- 宿主机 访问 虚拟机 80 端口成功
3. 常规解法: 让 firewalld 开放 80端口
- 概述
- 正常的解法
步骤
1. 确认 firewalld 是否打开
- 概述
- 一定要确保打开
2. 查看 firewalld 的 开放端口列表
- 概述
- 查看开放端口
命令
> firewall-cmd --list-posts
- 结果
- 果然 80/tcp 并没有在其中
3. 将 80/tcp 添加到 开放端口列表中
- 概述
- 添加开放端口
命令
# 1. 添加端口 # 参数意思, 我并不是很懂 # 但是稍微有点基础的同学, 肯定能猜个 7788 # 我打算等以后正式学习 firewalld 时, 再 详细说明 > firewall-cmd --zone=public --add-port=80/tcp --permanent # 2. 重启 firewalld # 这步必须有 > firewall-cmd --reload # 3. 查看是否生效 # 80/tcp 加入了列表 > firewall-cmd --list-posts
4. 宿主机验证
- 概述
- 宿主机浏览器验证
- 结果
- 我这边通过了
- 具体我就不细说了
- 我这边通过了
ps
- ref
- 其他
- firewalld 有空看一看
- wirewalld 和 iptables
- 其实他俩, 是一个东西