tl;dr

  1. firewall-cmd --permanent --zone=public --add-port=2888/tcp
  2. firewall-cmd --reload #重新载入服务

永久配置firewalld开启端口。

之前的一些坑

之前的一篇文章CentOS 7部署Node.js+MongoDB:在VPS上从安装到Hello world中,讲到了CentOS开启端口用这个命令

  1. firewall-cmd --add-port=3000/tcp

这样是没错,开启了端口,但是后面发现这个端口会莫名其妙的被关闭

Google一番后了解到这样添加端口是运行时配置(Runtime configuration),在重载或重启firewalld后,这个配置就失效了。

自动关闭原因

CentOS 7 采用了firewalld作为防火墙服务,在Red Hat官方文档的Security Guide中有介绍firewalld

The dynamic firewall daemon firewalld provides a dynamically managed firewall with support for network “zones” to assign a level of trust to a network and its associated connections and interfaces. It has support for IPv4 and IPv6 firewall settings. It supports Ethernet bridges and has a separation of runtime and permanent configuration options. It also has an interface for services or applications to add firewall rules directly.

动态防火墙守护进程firewalld提供一个动态管理的防火墙,支持网络“区域”(zones),以用来给一个网络以及其关联的链接和接口分配一个信任层级。firewalld支持IPv4跟IPv6的防火墙设置。它还支持以太网桥,并且有运行时配置选项跟永久配置选项(runtime and permanent configuration options),二者相互分离。并且firewalld为服务或应用直接添加防火墙规则提供了接口。

有关Network Zones的概念这边不细讲,参照Security Guide。

firewalld有个图形化配置工具firewall-config,还有个命令行客户端,就是firewall-cmd了。

我们暂时还没用到图形化工具,所以这边就说一下firewall-cmd

Security Guide中关于firewall-cmd的介绍:

A command line client, firewall-cmd, is provided. It can be used to make permanent and non-permanent runtime changes as explained in man firewall-cmd(1). Permanent changes need to be made as explained in the firewalld(1) man page. Note that the firewall-cmd command can be run by the root user and also by an administrative user, in other words, a member of the wheel group. In the latter case the command will be authorized via the polkit mechanism.

具体就不翻译了,大概是说

firewall-cmd可以永久或非永久地改变配置,永久配置需要如man page中解释的那样改变(日了狗了)。

于是又去翻了翻firewalld(1)的man page,里面有两段关于Runtime configuration跟Permanent configuration的解释。

Runtime configuration

Runtime configuration is the actual active configuration and is not permanent. After

reload/restart of the service or a system reboot, runtime settings will be gone if they

haven’t been also in permanent configuration.

Permanent configuration

The permanent configuration is stored in config files and will be loaded and become new

runtime configuration with every machine boot or service reload/restart.

运行时配置

运行时配置是实际上启用了但不是永久的配置。在服务重载/重启或系统重启之后,运行时的设置如果不存在永久配置中,就会失效。

永久配置

永久配置被保存在配置文件中,随着每次机器启动或服务重载/重启,永久配置都会被载入,变成新的运行时配置。

永久开启端口

好了,说了那么多,应该是理清楚端口被自动关闭的原委了,那怎么永久开启端口呢,万能的Security Guide中给出了答案

The rules can be made permanent by adding the –permanent option using the firewall-cmd –permanent –direct command or by modifying /etc/firewalld/direct.xml.

只要添加规则时加上–permanent参数或者修改/etc/firewalld/direct.xml就行了。

所以只需要两条命令

  1. firewall-cmd --permanent --zone=public --add-port=2888/tcp
  2. firewall-cmd --reload #重新载入服务

参考

CentOS 7 防止端口自动关闭的更多相关文章

  1. CentOS 下做端口映射/端口转发

    CentOS 下做端口映射/端口转发==[实现目标]==================[服务器A]有2块网卡,一块接内网,一块接外网,[服务器B]只有一块内网网卡:访问[服务器A]的7890端口跳转 ...

  2. centos添加开放端口

    Centos 开放 80 端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 重启防火墙 firewall-cmd --reload ...

  3. CentOS 7 防火墙端口配置

    CentOS 7 防火墙端口配置查看防火墙是否开启systemctl status firewalld 若没有开启则开启systemctl start firewalld 查看所有开启的端口firew ...

  4. Centos安装nmap端口查看工具

    CentOS安装nmap端口查看工具 一.安装nmap yum install nmap    #输入y安装 二.使用nmap      nmap localhost    #查看主机当前开放的端口  ...

  5. Linux CentOS 7 防火墙/端口设置

    CentOS升级到7之后用firewall代替了iptables来设置Linux端口, 下面是具体的设置方法: []:选填 <>:必填 [<zone>]:作用域(block.d ...

  6. Linux CentOS 7 防火墙/端口设置【转发】

    CentOS升级到7之后用firewall代替了iptables来设置Linux端口, 下面是具体的设置方法: []:选填 <>:必填 [<zone>]:作用域(block.d ...

  7. Centos 7 开启端口

    CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的 CentOS 7 采用了 firewalld 防火墙 如要查询是否开启80端口则: 1 ...

  8. [Linux.NET] CentOS 开启/关闭端口

    最近一直在学习研究mvc网站部署到Linux上,Web服务器用的Jexus,linux版本是阿里云提供的centos.一个服务器又要放多个独立网站,对于学习阶段使用多个端口标识还是挺方便的,本文记录下 ...

  9. Centos 开放80端口

    一.添加规则 #/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #/sbin/iptables -I INPUT -p tcp --dport ...

随机推荐

  1. 写一个js向左滑动删除 交互特效的插件——Html5 touchmove

    需求描述 需要实现类似QQ中对联系人的操作:向左滑动,滑出删除按钮.滑动超过一半时松开则自动滑到底,不到一半时松开则返回原处. 纯js实现 使用了h5的touchmove等事件,以及用js动态改变cs ...

  2. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  3. js中JSON格式数据的转化

    JSON.parse(STRING) => OBJECT JSON.stringify(OBJECT) => STRING

  4. <%@ page trimDirectiveWhitespaces="true" %>

    我们经常会在JSP页面上使用: <%@ page trimDirectiveWhitespaces="true" %> 这个命令可以使jsp输出的html时去除多余的空 ...

  5. ProtocolBuffers-3 For Objective C (2)-进阶

    先介绍几个常用关键字: equired前缀表示该字段为必要字段,既在序列化和反序列化之前该字段必须已经被赋值.与此同时,在Protocol Buffer中还存在另外两个类似的关键字,optional和 ...

  6. js 数组删去重复的加上没有的元素

    为了一个数组的删除操作竟然费了一个多小时,下面分享一下我的代码: 代码功能:判断数组里是否有我要看的元素,如果没有就添加到数组里,如果有就去掉. var selectArr=[]; function ...

  7. 用代码控制鼠标键盘(C#语言)

    前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...

  8. 2016最后一贴,终于调通一个测试示例,并发现一个BUG???

    真的难点在于第一次调通.纠结五天,终于搞出界面. 也发现了一个书上代码,编辑用户时死活不通的情况,我将Links去了,改在data里,我X,,全OK了.. 原来的代码: onAdd: function ...

  9. Chrome Extension 检查视图(无效)处理方法

    最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...

  10. C++ 系列:多线程编程基础知识

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...