V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaoz
V2EX  ›  问与答

Firewalld 一个尴尬的问题

  •  
  •   xiaoz · 2018-09-03 17:15:00 +08:00 · 2416 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    但是提示 Firewalld 没有运行:

    FirewallD is not running
    

    如果您马上启动 firewalld:

    systemctl start firewalld
    

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

    第 1 条附言  ·  2018-09-03 20:31:53 +08:00

    感谢各位的解答,目前通过3楼的方法解决了。直接修改firewalld的配置文件vi /etc/firewalld/zones/public.xml 先将需要放行的端口写入配置,然后再启动firewalld就没事了。

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

    手动改配置然后启动是正解。
    akillcool
        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 连接测试新端口是否已经可用
    akillcool
        10
    akillcool  
       2018-09-03 19:11:13 +08:00 via Android   ❤️ 1
    如果原有端口已经不是 22 的话可以考虑先改成 22,再改成其他的
    springmarker
        11
    springmarker  
       2018-09-03 19:14:29 +08:00 via Android   ❤️ 1
    我记得 centos 下的 firewalld 有个 xml 的配置文件啊
    xiaoz
        12
    xiaoz  
    OP
       2018-09-03 20:32:39 +08:00
    @akillcool 感谢,不过这样感觉麻烦了,目前来说 3 楼的方法要方便些。
    xiaoz
        13
    xiaoz  
    OP
       2018-09-03 20:33:01 +08:00
    @springmarker 是的,在 /etc/firewalld 目录下
    DearTanker
        14
    DearTanker  
       2018-09-03 21:03:18 +08:00
    反正我想说的是,你改了 ssh 端口不是马上生效的,是重启以后才生效的。所以 firewalld 不会影响你执行放行端口的命令。当然,你 ssh 端口生效以后才想着改 firewalld 的话,那就是你上面的解决方案了。
    yuanmomo
        15
    yuanmomo  
       2019-10-10 15:25:30 +08:00   ❤️ 1
    谁会想到,还有个 firewall-offline-cmd 命令的🤣,RedHat 真的是太反人类了
    xiaoz
        16
    xiaoz  
    OP
       2019-10-10 18:52:19 +08:00
    @yuanmomo 我去,多谢老哥指点,在你没出现之前我是直接去修改配置文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2821 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:04 · PVG 20:04 · LAX 05:04 · JFK 08:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.