CentOS7 防火墙快速开放端口/删除端口的方法

CentOS6使用iptables控制Linuxs的端口,这里不做介绍,自行百度。CentOS7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口:(这里以端口9090为例)

查询有哪些端口是开启的

firewall-cmd --list-port

查询9090端口是否开启:

firewall-cmd --query-port=9090/tcp

开启9090端口

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

重启防火墙生效

firewall-cmd --reload

命令含义:
–zone #作用域
–add-port=9090/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

删除9090端口

firewall-cmd --zone=public --remove-port=9090/tcp --permanent

重启防火墙生效

firewall-cmd --reload

关闭并禁用

systemctl stop firewalld
systemctl disable firewalld

最后附赠一自动化脚本 port-operator.sh,添加删除查看端口可方便了

在这里插入图片描述

#/bin/bash

:<<!
【脚本说明】
1、此脚本用于操作防火墙端口;
2、主要功能可以查看防火墙端口开发列表,查看状态、添加、删除端口;
!

# 进程名称
operate=$1
ports=$2

# 提示信息
msg='Please input params 【list|<sta|add|del> <port1,port2,...>】'

# 定制化shell输出
function custom_print(){
    echo -e "\033[5;34m ***** \033[0m"
    echo -e "\033[32m $@ ! \033[0m"
    echo -e "\033[5;34m ***** \033[0m"
}

# 用指定分隔符切分字符串,第一个参数为分隔符,第二个为被切分的字符串
function split(){
    OLD_IFS="$IFS"
    IFS="$1"
    str="$2"
    arr=($str)
    IFS="$OLD_IFS"
    echo ${arr[@]}
}

# 执行shell命令,同时指定是否输出执行结果,默认不输出
function execmd(){
    cmd="$1"
    prt="$2"
    if [[ $prt = "t" || $prt = "true" ]]; then
        $cmd
    elif [[ $prt = "r" || $prt = "return" ]]; then
        echo $($cmd)
    else
        $cmd > /dev/null
    fi
}

# 判断输入参数
if [[ -z $operate || $operate = "help" ]]; then
    custom_print $msg
else
    # 判断输入参数
    if [[ $operate = "list" ]]; then
        cmd="firewall-cmd --list-port"
        execmd "$cmd" 't'
    elif [[ -z $ports ]]; then
        custom_print $msg
    else
        arr_port=$(split , $ports)
        if [[ $operate = "sta" ]]; then
            for port in $arr_port; do
                cmd="firewall-cmd --query-port=$port/tcp"
                echo -e "$port=$(execmd "$cmd" 'r')\r"
            done
        elif [[ $operate = "add" ]]; then
            for port in $arr_port; do
                cmd="firewall-cmd --zone=public --add-port=$port/tcp --permanent"
                execmd "$cmd"
            done
            cmd="firewall-cmd --reload"
            execmd "$cmd"
        elif [[ $operate = "del" ]]; then
            for port in $arr_port; do
                cmd="firewall-cmd --zone=public --remove-port=$port/tcp --permanent"
                execmd "$cmd"
            done
            cmd="firewall-cmd --reload"
            execmd "$cmd"
        else
            custom_print $msg
        fi
    fi
fi
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WaiSaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值