Firewalld 一个尴尬的问题

2018-09-03 17:15:00 +08:00
 xiaoz

安装 Firewalld 后,假如需要放行 ssh 端口:

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

但是提示 Firewalld 没有运行:

FirewallD is not running

如果您马上启动 firewalld:

systemctl start firewalld

但是这样就被阻挡在外了,还没来得及放行 ssh 端口呢,咋整?有什么办法在 firewalld 还没运行的时候先放行端口吗?

2590 次点击
所在节点    问与答
16 条回复
jasonyang9
2018-09-03 17:26:54 +08:00
写个脚本
xiaoz
2018-09-03 17:37:51 +08:00
@jasonyang9 感谢大佬,这个方法应该可行。写个脚本设定一个时间去放行端口,不过感觉 Firewalld 这样的设计有点不科学啊。iptables 可以不运行的情况下直接修改配置文件,然后再启动。
WordTian
2018-09-03 17:40:40 +08:00
直接改 firewall 的配置文件吧,通过配置文件添加端口,然后再启动
zocome
2018-09-03 17:42:02 +08:00
firewalld 默认不是放行 22 端口的么?我难道记错了。。
xiaoz
2018-09-03 17:45:57 +08:00
@zocome 没有记错,我看了配置默认确实放行了 ssh (这个仅针对 22 常规端口),但如果修改过 ssh 端口,比如设置为 2018,那么这条规则就没用了。
xiaoz
2018-09-03 17:46:17 +08:00
@WordTian 感谢,目前来说这个方案比较可行,我试一下。
chinvo
2018-09-03 18:41:03 +08:00
确实尴尬,建议给 CentOS/RHEL 提 issue
rrfeng
2018-09-03 18:58:06 +08:00
我竟无言以对。

手动改配置然后启动是正解。
akillcool
2018-09-03 19:08:31 +08:00
先通过默认 ssh 端口登录,启动 firewalld,默认放行 ssh22 端口,然后修改 ssh 端口,重启 sshd (此时 ssh 连接是不会断开的),firewalld 按照你的规则添加新 ssh 端口放行,最后 firewall-cmd --complete-reload,这时候可以保留当前的 ssh 连接不断开,新开一个 ssh 连接测试新端口是否已经可用
akillcool
2018-09-03 19:11:13 +08:00
如果原有端口已经不是 22 的话可以考虑先改成 22,再改成其他的
springmarker
2018-09-03 19:14:29 +08:00
我记得 centos 下的 firewalld 有个 xml 的配置文件啊
xiaoz
2018-09-03 20:32:39 +08:00
@akillcool 感谢,不过这样感觉麻烦了,目前来说 3 楼的方法要方便些。
xiaoz
2018-09-03 20:33:01 +08:00
@springmarker 是的,在 /etc/firewalld 目录下
DearTanker
2018-09-03 21:03:18 +08:00
反正我想说的是,你改了 ssh 端口不是马上生效的,是重启以后才生效的。所以 firewalld 不会影响你执行放行端口的命令。当然,你 ssh 端口生效以后才想着改 firewalld 的话,那就是你上面的解决方案了。
yuanmomo
2019-10-10 15:25:30 +08:00
谁会想到,还有个 firewall-offline-cmd 命令的🤣,RedHat 真的是太反人类了
xiaoz
2019-10-10 18:52:19 +08:00
@yuanmomo 我去,多谢老哥指点,在你没出现之前我是直接去修改配置文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/485715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX