Skip to content

防火墙规则

本章主要讲述 MSST-Net 的防火墙规则。

什么是防火墙规则

防火墙规则用于控制哪些设备可以访问本机的哪些端口与服务。

每条规则指定:

  • 主体:谁可以(或不可以)访问
  • 协议与端口:允许或拒绝哪些流量
  • 动作:允许(allow)或拒绝(deny)
  • 方向:入站(inbound)或出站(outbound)

连接跟踪

MSST-Net 防火墙具有有状态连接跟踪能力。

当本机主动向外发出连接时,系统会自动记录该连接状态。对端的回程数据包将被自动放行,无需额外配置规则。

这意味着:

  • 你向外发起的连接,回程数据无需单独规则
  • 规则仅用于控制由对端主动发起的入站连接

规则优先级

当多条规则均能匹配同一数据包时,系统按以下优先级取第一个命中的规则:

  1. 设备级 拒绝(最高优先级)
  2. 设备级 允许
  3. 用户级 拒绝
  4. 用户级 允许
  5. 房间级 拒绝
  6. 房间级 允许(最低优先级)

设备级规则优先级高于用户级规则,用户级规则优先级高于房间级规则。


主体

规则的主体(Principal)指定该规则适用于哪些设备、用户或房间成员。

主体类型

类型说明
设备规则仅适用于指定的设备
用户规则适用于该用户名下的所有设备
房间(space)规则适用于当前与本设备共处同一房间的所有成员

主体标识

主体可以通过以下方式指定:

标识方式示例说明
设备 IDdevice-a7f29b3e精确匹配指定设备
用户 IDuser-1a2b3c4d匹配该用户的所有设备
设备助记符archlinux匹配当前用户下的同名设备
组合助记符archlinux.abjust匹配指定用户下的指定设备
用户助记符abjust匹配指定用户的所有设备
通配符*匹配所有设备或所有用户
房间通配符(space-*space-*匹配当前所有共享房间内的成员

房间级(space)规则无需指定具体 ID,系统在数据包到达时动态匹配当前房间成员。

关于标识符的详细说明,请参考:

《标识符》


协议与端口

规则可以针对特定的协议和端口进行匹配。

协议

支持以下协议:

说明
tcp仅匹配 TCP 流量
udp仅匹配 UDP 流量
tcp+udp同时匹配 TCP 和 UDP(拆分为两条规则存储)

端口

端口可以通过以下方式指定:

格式示例说明
单端口25565仅匹配指定端口
端口范围8000-9000匹配范围内的所有端口
通配符*匹配所有端口(1–65535)

常用服务

MSST-Net 内置了常用服务的协议与端口预设,方便快速配置规则:

游戏

服务名协议 / 端口
Minecraft(Java 版)tcp/25565
Minecraft(基岩版)udp/19132
铁锈战争tcp/5123
MSST 纸牌战tcp/9178
Terrariatcp/7777
Factorioudp/34197

Web 服务

服务名协议 / 端口
HTTPtcp/80
HTTPStcp/443
HTTP/3(QUIC)udp/443

文件服务

服务名协议 / 端口
FTPtcp/21
FTPStcp/990
NFStcp/2049
SMB/CIFStcp/445

数据库

服务名协议 / 端口
MySQLtcp/3306
PostgreSQLtcp/5432
MongoDBtcp/27017
Redistcp/6379
MSSQLtcp/1433
Oracle DBtcp/1521

远程访问

服务名协议 / 端口
SSHtcp/22
RDPtcp/3389
VNCtcp/5900

动作

每条规则的动作为以下之一:

动作说明
allow允许匹配的数据包通过
deny拒绝匹配的数据包

方向

每条规则的方向为以下之一:

方向说明
inbound控制来自对端的入站流量
outbound控制发往对端的出站流量

大多数情况下,只需配置入站规则。


有效期

规则可以设置有效期,到期后自动失效并从列表中删除。

若不设置有效期,规则永久有效。

有效期常用于临时授权场景(如通过交互式授权创建的临时规则)。


规则匹配流程

当入站数据包到达时,系统按以下顺序处理:

  1. 检查是否为已跟踪连接的回程包 → 若是,直接放行
  2. 按优先级遍历所有有效规则,查找第一个匹配项
  3. 若找到匹配规则,按规则动作放行或拒绝
  4. 若无规则匹配,触发交互式授权

详见:

《交互式授权》


相关内容

由 MSST-Net 开发组设计,Claude Code 开发