安装 Firewalld 后,假如需要放行 ssh 端口:
firewall-cmd --zone=public --add-port=22/tcp --permanent
但是提示 Firewalld 没有运行:
FirewallD is not running
如果您马上启动 firewalld:
systemctl start firewalld
但是这样就被阻挡在外了,还没来得及放行 ssh 端口呢,咋整?有什么办法在 firewalld 还没运行的时候先放行端口吗?
感谢各位的解答,目前通过3楼的方法解决了。直接修改firewalld的配置文件vi /etc/firewalld/zones/public.xml
先将需要放行的端口写入配置,然后再启动firewalld就没事了。
1
jasonyang9 2018-09-03 17:26:54 +08:00 1
写个脚本
|
2
xiaoz OP @jasonyang9 感谢大佬,这个方法应该可行。写个脚本设定一个时间去放行端口,不过感觉 Firewalld 这样的设计有点不科学啊。iptables 可以不运行的情况下直接修改配置文件,然后再启动。
|
3
WordTian 2018-09-03 17:40:40 +08:00 via Android 1
直接改 firewall 的配置文件吧,通过配置文件添加端口,然后再启动
|
4
zocome 2018-09-03 17:42:02 +08:00 1
firewalld 默认不是放行 22 端口的么?我难道记错了。。
|
5
xiaoz OP @zocome 没有记错,我看了配置默认确实放行了 ssh (这个仅针对 22 常规端口),但如果修改过 ssh 端口,比如设置为 2018,那么这条规则就没用了。
|
7
chinvo 2018-09-03 18:41:03 +08:00 via iPhone
确实尴尬,建议给 CentOS/RHEL 提 issue
|
8
rrfeng 2018-09-03 18:58:06 +08:00 via Android
我竟无言以对。
手动改配置然后启动是正解。 |
9
akillcool 2018-09-03 19:08:31 +08:00 via Android 2
先通过默认 ssh 端口登录,启动 firewalld,默认放行 ssh22 端口,然后修改 ssh 端口,重启 sshd (此时 ssh 连接是不会断开的),firewalld 按照你的规则添加新 ssh 端口放行,最后 firewall-cmd --complete-reload,这时候可以保留当前的 ssh 连接不断开,新开一个 ssh 连接测试新端口是否已经可用
|
10
akillcool 2018-09-03 19:11:13 +08:00 via Android 1
如果原有端口已经不是 22 的话可以考虑先改成 22,再改成其他的
|
11
springmarker 2018-09-03 19:14:29 +08:00 via Android 1
我记得 centos 下的 firewalld 有个 xml 的配置文件啊
|
13
xiaoz OP @springmarker 是的,在 /etc/firewalld 目录下
|
14
DearTanker 2018-09-03 21:03:18 +08:00
反正我想说的是,你改了 ssh 端口不是马上生效的,是重启以后才生效的。所以 firewalld 不会影响你执行放行端口的命令。当然,你 ssh 端口生效以后才想着改 firewalld 的话,那就是你上面的解决方案了。
|
15
yuanmomo 2019-10-10 15:25:30 +08:00 1
谁会想到,还有个 firewall-offline-cmd 命令的🤣,RedHat 真的是太反人类了
|