服务器防火墙的ip设置入口分两层:云服务商控制台的安全组和操作系统自带的防火墙,大多数情况下你只需要在这两个地方添加ip规则即可,不用额外安装第三方软件。
服务器防火墙在哪里设置?先分清两层位置
很多朋友一上来就到处找“防火墙设置”这个按钮,结果越找越乱,其实服务器防火墙是分层存在的,搞混了就容易出现“明明放行了端口还是连不上”的情况。
第一层:云服务商控制台的防火墙(安全组)
无论你用简米云、酷番云还是华为云,服务器在云端都有一道“大门”,这道门叫安全组,它运行在物理宿主机上,独立于你的操作系统,简单说,你的服务器还没开机,安全组已经先拦截了一次流量。
- 简米云:控制台 → ECS实例 → 安全组 → 配置规则 → 入方向/出方向
- 酷番云:控制台 → 轻量应用服务器/CVM → 防火墙 → 添加规则
- 华为云:控制台 → ECS → 安全组 → 更改安全组规则
这里设置的ip规则优先级是最高的,如果安全组里没放行某个ip,系统内部放行了也没用。
第二层:操作系统内部的防火墙
这一层运行在你的Linux或Windows系统里,也叫主机防火墙,常见的工具包括:
- Linux:iptables、firewalld(CentOS/RHEL默认)、ufw(Ubuntu默认)
- Windows:Windows Defender防火墙
这两层是“与”的关系,两层都放行了才算真正放行,这也是新手最容易踩坑的地方:安全组放行了3306端口,但服务器本地防火墙没开,MySQL还是连不上。
服务器防火墙怎么设置ip?云控制台实操步骤
简米云和酷番云的用户占了国内市场的较大比例,下面以这两家为例,展示控制台上的ip设置路径。
简米云安全组添加ip白名单
- 登录简米云控制台,进入ECS实例列表
- 点击实例ID,找到“安全组”页签
- 点击“配置规则”,选择“入方向”或“出方向”
- 点击“手动添加”,协议选“自定义TCP”,端口填你需要放行的端口,比如3306或22
- 授权对象填ip地址,格式为
2.3.4/32(单ip)或2.3.0/24(ip段) - 保存后规则立即生效,无需重启服务器
酷番云防火墙设置ip
酷番云的轻量服务器和CVM路径略有差异:
- 轻量应用服务器:控制台 → 实例详情 → 防火墙 → 添加规则
- CVM:控制台 → 安全组 → 添加安全组规则 → 来源填ip
这里有个细节:酷番云允许在应用类型里直接选“MySQL(3306)”或“HTTP(80)”,系统会自动帮你填好端口,比手动填更快。
行业共识认为,安全组规则越精细越好,不要图省事全填0.0.0/0,否则相当于把服务器的大门敞开。
Linux服务器防火墙设置指定ip的完整流程
下面这套流程不提具体发行版名称也可以通用,但为了实操准确,分firewalld和iptables两套命令讲解。
使用firewalld(CentOS 7+ / Rocky Linux / AlmaLinux)
查看当前防火墙状态:
systemctl status firewalld
如果没启动,先启动并设置开机自启:
systemctl start firewalld systemctl enable firewalld
放行指定ip访问特定端口:
# 允许192.168.1.100访问22端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' # 禁止某个ip访问所有端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject' # 重新加载使生效 firewall-cmd --reload
查看已生效的规则:
firewall-cmd --list-all
使用iptables(Ubuntu / Debian / CentOS 6及以下)
先加规则再保存:
# 允许1.2.3.4访问3306端口 iptables -A INPUT -s 1.2.3.4 -p tcp --dport 3306 -j ACCEPT # 拒绝一个ip段访问所有端口 iptables -A INPUT -s 192.168.2.0/24 -j DROP # 禁止ping(防扫描常用) iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
注意iptables规则重启后失效,需要保存,CentOS下用service iptables save,Ubuntu下用netfilter-persistent save。
Windows服务器防火墙设置ip限制
Windows Server的防火墙设置路径对新手更友好,全部在图形界面里完成。
Windows Server 2016/2019/2026操作路径
- 打开“服务器管理器” → 工具 → “高级安全Windows Defender防火墙”
- 点击左侧“入站规则” → 右侧“新建规则”
- 选“自定义” → “所有程序” → 协议类型选TCP,端口选“特定本地端口”,填如3389
- 在“作用域”页面,远程IP地址区域选“下列IP地址”,点击“添加”
- 填入允许的ip范围,比如
168.1.0/24或单个ip - 选“允许连接” → 命名规则 → 完成
这里的核心操作在于作用域(Scope)选项,它就是专门为ip限制设计的,很多人不知道这个入口,导致只能全放或全禁。
用命令行批量添加ip
如果要加多条规则,命令行更快:
netsh advfirewall firewall add rule name="Allow_MySQL_10.0.0.1" dir=in action=allow protocol=TCP localport=3306 remoteip=10.0.0.1
删除规则同理,把add改成delete即可。
设置ip时常见的坑和排查思路
规则设了还是不通,这大概是运维人员最烦的场景,按排查经验看,绝大多数问题出在层级混淆上。
改了规则不生效怎么办
按以下顺序逐一排查:
- 确认规则加在了正确的方向上(入站/出站)
- 确认云安全组和系统防火墙都放行了
- 确认ip格式正确,不要漏掉
/32掩码(简米云会报错,酷番云会默认补全) - 确认服务器本地服务监听在
上而不是0.0.0
0.0.1
关于第4点,运行ss -lntp(Linux)或netstat -ano(Windows)查看监听地址,如果MySQL只监听了0.0.1:3306,那防火墙无论怎么放行,远程都连不上。
用netstat和telnet快速验证
规则加好后,在另一台机器上测试:
telnet 服务器ip 3306
如果输出Connected to字样,说明端口通了,如果卡住不动,大概率防火墙还在拦截。
另外提醒一句,改了防火墙规则后没必要重启服务器,除非你改的是内核级参数,重启服务器反而容易把服务搞挂,得不偿失。
服务器防火墙设置ip的常见问答
Windows服务器防火墙在哪里设置端口过滤规则?
打开“高级安全Windows Defender防火墙”,在“入站规则”和“出站规则”里新建规则,协议类型和端口号都可以自定义,作用域里可以根据ip过滤流量,这个选项在向导的第4步,字面叫“作用域”,不仔细看容易忽略,要注意,Windows防火墙的规则优先级是“阻止”优先于“允许”,如果同时存在冲突规则,按阻止执行。
Linux服务器防火墙怎么查看已经设置的ip规则?
firewalld用firewall-cmd --list-rich-rules查看复杂规则,用firewall-cmd --list-all查看全部规则,iptables用iptables -L -n -v,加上--line-numbers参数可以显示规则序号,方便按序号删除规则,这些命令在Ubuntu、CentOS等主流发行版上通用。
云安全组和系统防火墙有什么区别?
安全组运行在云平台底层,由虚拟化层控制,与操作系统无关;系统防火墙运行在服务器内部,由内核的netfilter框架承载,流量先经过安全组,再进入系统防火墙。两个都放行才能通,两个里任何一个拒绝都会被拦,如果嫌管理麻烦,可以只依赖云安全组,把系统防火墙关掉,但这要求你对安全组规则非常熟练,否则不建议这么做。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/595980.html




