Linux - firewalld - 开放端口
-
概述
- 年轻人的第一次 firewalld 体验
-
背景
- 第一次安装了 apache
- 正儿八经的
- 本来想在 localhost 用 curl 看看服务器得了
- 结果 80 端口的默认页面, 是一个有头有脸的 html
- 我顿时就像看看页面长啥样
- 可是换了 宿主机浏览器, 结果发现浏览器打不开
- 但是 ping 能通, ssh 也能通
- 于是又回到了老路, 防火墙 和 selinux 的问题
- 本来也时打算 一关解千愁
- 可是想起了上次的事, 决定还是稍微看看有没有别的解决办法
- 上次随便关防火墙, 导致了 docker-cli 和 git 不能同时连接外网的神奇事件...
- 这次只说 防火墙, selinux 我现在也不会...
- 第一次安装了 apache
-
环境
-
虚拟机 OS
- CentOS 7
-
Apache
- 2.4.6-90
-
网络模式
- 桥接
-
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-ports
-
结果
- 果然 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-ports
4. 宿主机验证
-
概述
- 宿主机浏览器验证
-
结果
- 我这边通过了
- 具体我就不细说了
- 我这边通过了
ps
-
ref
-
其他
- firewalld 有空看一看
- firewalld 和 iptables
- 其实他俩, 是一个东西
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出