CentOS 7 自定义端口一键放行脚本

     阅读 45 次    更新时间:2025/8/27    

CentOS 7 自定义端口一键放行脚本

脚本内容(保存为 open_port.sh

#!/bin/bash

# 一键放行自定义端口脚本 for CentOS7

# 检查是否 root
if [[ $EUID -ne 0 ]]; then
   echo "请使用 root 用户运行此脚本"
   exit 1
fi

# 读取端口号
read -p "请输入要放行的端口号(如 12345): " PORT
if ! [[ $PORT =~ ^[0-9]+$ ]]; then
    echo "端口号必须是数字"
    exit 1
fi

# 选择协议
echo "请选择协议类型:"
echo "1) TCP"
echo "2) UDP"
echo "3) TCP+UDP"
read -p "输入数字 (1/2/3): " PROTO_CHOICE

case $PROTO_CHOICE in
    1) PROTO="tcp" ;;
    2) PROTO="udp" ;;
    3) PROTO="both" ;;
    *) echo "无效选择"; exit 1 ;;
esac

# 获取默认接口所在 zone
INTERFACES=$(nmcli device status | awk '$2=="ethernet" && $3=="connected"{print $1}')
if [[ -z "$INTERFACES" ]]; then
    INTERFACES=$(nmcli device status | awk '$2=="bridge" && $3=="connected"{print $1}')
fi

if [[ -z "$INTERFACES" ]]; then
    echo "没有找到已连接的接口,请确认 NetworkManager 已启动"
    exit 1
fi

ZONE=$(firewall-cmd --get-zone-of-interface=$INTERFACES)
if [[ -z "$ZONE" ]]; then
    ZONE="public"
fi

echo "接口: $INTERFACES"
echo "区域: $ZONE"

# 放行端口
if [[ $PROTO == "tcp" || $PROTO == "both" ]]; then
    firewall-cmd --zone=$ZONE --add-port=$PORT/tcp --permanent
    echo "TCP端口 $PORT 已放行"
fi

if [[ $PROTO == "udp" || $PROTO == "both" ]]; then
    firewall-cmd --zone=$ZONE --add-port=$PORT/udp --permanent
    echo "UDP端口 $PORT 已放行"
fi

# 重载防火墙
firewall-cmd --reload
echo "防火墙已重载,端口生效"

# 列出当前端口
firewall-cmd --list-ports

🔹 使用方法

  1. 保存脚本:
vim open_port.sh

粘贴内容后保存。


  1. 赋予可执行权限:
chmod +x open_port.sh
  1. 运行脚本:
./open_port.sh
  • 输入端口号
  • 选择协议(1/2/3)
  • 脚本会自动放行端口并重载 firewalld


 
 

Copyright 2003-2008 All Rights Reserved 自由风工作室 版权没有 [湘ICP备06002185号]
.