防火墙规则
本章主要讲述 MSST-Net 的防火墙规则。
什么是防火墙规则
防火墙规则用于控制哪些设备可以访问本机的哪些端口与服务。
每条规则指定:
- 主体:谁可以(或不可以)访问
- 协议与端口:允许或拒绝哪些流量
- 动作:允许(allow)或拒绝(deny)
- 方向:入站(inbound)或出站(outbound)
连接跟踪
MSST-Net 防火墙具有有状态连接跟踪能力。
当本机主动向外发出连接时,系统会自动记录该连接状态。对端的回程数据包将被自动放行,无需额外配置规则。
这意味着:
- 你向外发起的连接,回程数据无需单独规则
- 规则仅用于控制由对端主动发起的入站连接
规则优先级
当多条规则均能匹配同一数据包时,系统按以下优先级取第一个命中的规则:
- 设备级 拒绝(最高优先级)
- 设备级 允许
- 用户级 拒绝
- 用户级 允许
- 房间级 拒绝
- 房间级 允许(最低优先级)
设备级规则优先级高于用户级规则,用户级规则优先级高于房间级规则。
主体
规则的主体(Principal)指定该规则适用于哪些设备、用户或房间成员。
主体类型
| 类型 | 说明 |
|---|---|
| 设备 | 规则仅适用于指定的设备 |
| 用户 | 规则适用于该用户名下的所有设备 |
| 房间(space) | 规则适用于当前与本设备共处同一房间的所有成员 |
主体标识
主体可以通过以下方式指定:
| 标识方式 | 示例 | 说明 |
|---|---|---|
| 设备 ID | device-a7f29b3e | 精确匹配指定设备 |
| 用户 ID | user-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 |
| Terraria | tcp/7777 |
| Factorio | udp/34197 |
Web 服务
| 服务名 | 协议 / 端口 |
|---|---|
| HTTP | tcp/80 |
| HTTPS | tcp/443 |
| HTTP/3(QUIC) | udp/443 |
文件服务
| 服务名 | 协议 / 端口 |
|---|---|
| FTP | tcp/21 |
| FTPS | tcp/990 |
| NFS | tcp/2049 |
| SMB/CIFS | tcp/445 |
数据库
| 服务名 | 协议 / 端口 |
|---|---|
| MySQL | tcp/3306 |
| PostgreSQL | tcp/5432 |
| MongoDB | tcp/27017 |
| Redis | tcp/6379 |
| MSSQL | tcp/1433 |
| Oracle DB | tcp/1521 |
远程访问
| 服务名 | 协议 / 端口 |
|---|---|
| SSH | tcp/22 |
| RDP | tcp/3389 |
| VNC | tcp/5900 |
动作
每条规则的动作为以下之一:
| 动作 | 说明 |
|---|---|
allow | 允许匹配的数据包通过 |
deny | 拒绝匹配的数据包 |
方向
每条规则的方向为以下之一:
| 方向 | 说明 |
|---|---|
inbound | 控制来自对端的入站流量 |
outbound | 控制发往对端的出站流量 |
大多数情况下,只需配置入站规则。
有效期
规则可以设置有效期,到期后自动失效并从列表中删除。
若不设置有效期,规则永久有效。
有效期常用于临时授权场景(如通过交互式授权创建的临时规则)。
规则匹配流程
当入站数据包到达时,系统按以下顺序处理:
- 检查是否为已跟踪连接的回程包 → 若是,直接放行
- 按优先级遍历所有有效规则,查找第一个匹配项
- 若找到匹配规则,按规则动作放行或拒绝
- 若无规则匹配,触发交互式授权
详见: