LXC/Incus 网络 ACL 配置完全指南
什么是网络 ACL
网络 ACL(Access Control List,访问控制列表)是 LXC/Incus 中用于控制网络流量的重要功能。它允许管理员精确控制不同实例之间、以及实例与其他网络之间的通信规则。
网络 ACL 可以应用于以下场景:
- OVN 类型的网络接口
- OVN 网络
- 桥接网络(部分功能受限)
ACL 基础概念
核心组件
- Ingress 规则:控制进入网络接口的流量(入站)
- Egress 规则:控制离开网络接口的流量(出站)
- 规则动作:
allow
:允许流量通过(有状态)allow-stateless
:允许流量通过(无状态)reject
:拒绝流量并发送拒绝通知drop
:静默丢弃流量
规则优先级
系统会自动按照以下顺序处理规则:
drop
规则reject
规则allow
规则- 默认动作(通常为
reject
)
创建和配置 ACL
创建 ACL
incus network acl create my-acl
ACL 名称规范:
- 长度 1-63 字符
- 仅包含字母、数字和连字符
- 不能以数字或连字符开头
- 不能以连字符结尾
添加规则
添加入站规则示例:
incus network acl rule add my-acl ingress action=allow protocol=tcp destination_port=80,443
添加出站规则示例:
incus network acl rule add my-acl egress action=allow protocol=icmp4
规则属性详解
| 属性 | 类型 | 必填 | 说明 | |------|------|------|------| | action
| 字符串 | 是 | 规则动作 | | state
| 字符串 | 否 | 规则状态(enabled/disabled/logged) | | description
| 字符串 | 否 | 规则描述 | | source
| 字符串 | 否 | 源地址/组 | | destination
| 字符串 | 否 | 目标地址/组 | | protocol
| 字符串 | 否 | 协议类型 | | source_port
| 字符串 | 否 | 源端口范围 | | destination_port
| 字符串 | 否 | 目标端口范围 | | icmp_type
| 字符串 | 否 | ICMP 类型 | | icmp_code
| 字符串 | 否 | ICMP 代码 |
高级功能
使用选择器
在 OVN 网络中,可以使用选择器代替具体的 IP 地址:
# 引用 ACL 组
source=my-acl-group
# 引用内部网络
source=@internal
# 引用外部网络
source=@external
# 引用对等网络
source=@ovn-network/peer-name
流量日志记录
创建日志规则:
incus network acl rule add my-acl ingress action=allow protocol=tcp state=logged
查看日志:
incus network acl show-log my-acl
ACL 应用实践
应用到网络
incus network set my-network security.acls="my-acl"
应用到实例 NIC
incus config device set my-instance eth0 security.acls="my-acl"
配置默认动作
修改网络默认动作:
incus network set my-network security.acls.default.ingress.action=allow
修改实例 NIC 默认动作:
incus config device set my-instance eth0 security.acls.default.egress.action=drop
桥接网络特殊说明
使用桥接网络时需注意以下限制:
- 仅能控制桥接网络与宿主机之间的边界流量
- 不支持 ACL 组和网络选择器
- 使用 iptables 时不支持 IP 范围选择
- 使用 nftables 时:
- 可以在实例间应用 ACL
- 入站 reject 规则会自动转为 drop
最佳实践建议
- 最小权限原则:从最严格的规则开始,逐步开放必要权限
- 合理命名:使用描述性名称和注释
- 测试规则:先使用
state=logged
测试规则效果 - 分层设计:网络级 ACL 用于通用规则,实例级 ACL 用于特殊需求
- 定期审计:检查 ACL 规则的有效性和必要性
通过合理配置网络 ACL,可以显著提升 LXC/Incus 环境中的网络安全性,实现精细化的流量控制。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考