如何在 LXD 桥上禁用防火墙和 NAT 规则
我们毫无疑问可以在 LXD 网桥上维护防火墙规则。默认情况下,当 LXD 安装在 Ubuntu 或其他 Linux 发行版(如 CentOS)上时,它会创建一个名为 lxdbr0 的新网桥。因此,lxdbr0 网桥是共享主机和容器之间互联网连接的便捷方式。如果没有 lxdbr0,您将无法从 Linux 容器外部或内部访问互联网。但是,我们可以根据需要禁用此默认行为。
教程详细信息 | |
---|---|
难度等级 | 先进的 |
Root 权限 | 是的 |
要求 | 带有 LXD 的 Linux |
预计阅读时间 | 4 分钟 |
如何管理名为 lxdbr0 的 LXD 网桥上的防火墙规则
我们可以列出默认的 iptables NAT 规则如下:
另一个选项如下:
$ sudo /sbin/iptables -t nat -L POSTROUTING
## IPv6 rules ##
$ sudo /sbin/ip6tables -t nat -L POSTROUTING
$ sudo /sbin/ip6tables -t nat -S
$ sudo /sbin/iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N LIBVIRT_PRT
-A POSTROUTING -s 10.83.200.0/24 ! -d 10.83.200.0/24 -m comment --comment "generated for LXD network lxdbr0" -j MASQUERADE
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
“ -A POSTROUTING -s 10.83.200.0/24 ! -d 10.83.200.0/24 -m comment --comment "generated for LXD network lxdbr0" -j MASQUERADE”是自动生成的规则。
查找 lxd 网络设置
让我们看一下 LXD 网络列表:
$ lxc network list
我们在 Linux 上获得以下接口:
+-----------+----------+---------+----------------+---------------------------+-------------+---------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+
| enp0s31f6 | physical | NO | | | | 0 |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+
| lxdbr0 | bridge | YES | 10.83.200.1/24 | fd42:87d0:ec52:7d50::1/64 | | 25 |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+
| virbr0 | bridge | NO | | | | 0 |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+
接下来,我将了解防火墙和 nat 设置,运行:
$ lxc network show lxdbr0
输出:
config: ipv4.address: 10.83.200.1/24 ipv4.nat: "true" ipv6.address: fd42:87d0:ec52:7d50::1/64 ipv6.nat: "true" description: "" name: lxdbr0 type: bridge used_by: - /1.0/instances/alpine - /1.0/instances/arch - /1.0/instances/c1 - /1.0/instances/centos-6 ... .. .... - /1.0/instances/ubuntu-20-4 - /1.0/instances/ubuntunginx-test - /1.0/profiles/default managed: true status: Created locations: - none
另一个选择是查找有关 LXD 桥上的 NAT 和防火墙设置,如下所示:
$ lxc network get lxdbr0 ipv4.nat
$ lxc network get lxdbr0 ipv4.firewall
禁用 LXD 桥上的防火墙和 NAT 规则
以下是我们如何禁用 lxdbr0 桥上的防火墙和 nat 设置。运行:
其中:
$ lxc network set lxdbr0 ipv4.firewall false
$ lxc network set lxdbr0 ipv4.nat false
## IPv6 settings ##
$ lxc network set lxdbr0 ipv6.firewall false
$ lxc network set lxdbr0 ipv6.nat false
- ipv4.firewall:是否为此网络生成过滤防火墙规则。
- ipv4.nat:决定是否进行 NAT(如果未设置则默认为 true 并生成随机 ipv4.address)
- ipv6.firewall:是否为此网络生成过滤防火墙规则
- ipv6.nat:决定是否进行 NAT(如果未设置则默认为 true 并生成随机 ipv6.address)
输入上述命令后,LXD 将删除 NAT 和防火墙规则。现在,您可以在 Linux 上设置自己的 NAT 和防火墙规则来管理 lxdbr0。我们可以使用grep 命令和ping 命令来验证这一点:
$ lxc exec fedora-32 -- ping -c1 8.8.8.8
$ sudo /sbin/iptables -S -t nat | grep LXD
结论
在本快速教程中,我们了解了 LXD 桥接器的默认 NAT 和防火墙选项设置,以及如何在 Linux 系统上禁用这些选项以进行高级自定义。请参阅此在线文档以了解所有 LXD 网络设置。
- 在 Ubuntu 16.04 LTS 上安装 LXD 容器管理程序
- 如何在 Fedora Linux 26 上安装和设置 LXC(Linux 容器)
- 在KVM或Xen虚拟机下设置LXD容器
- 列出 LXD(Linux 容器)中的 VM 映像
- 升级由 Ubuntu/Debian 或 CentOS Linux 驱动的 LXD 容器
- 在 Linux 启动时自动启动 LXD 容器
- 重命名 LXD / LXC 容器的命令
- 在配置启动时在 Linux 容器 (LXD) 实例上运行命令
- 在云实例启动时,使用 shell 脚本中的 LXD(Linux 容器)创建 VM
- 将 LXD VM 移动/迁移到 Linux 上的另一台主机
- Fedora 安装并设置 LXD
- CentOS 7.x 安装并设置 LXD 服务器
- 在 Ubuntu 18.04 LTS 上安装 LXD 纯容器管理程序
- 使用 lxc 命令为 LXD 创建快照
- 在 CentOS/RHEL 8 上设置并安装 LXD
- Ubuntu 20.04 LTS 安装并设置 LXD
- 完整备份和恢复 LXD 容器
- 禁用 LXD 桥上的防火墙和 NAT 规则
- 使用 lxc 删除或移除 LXD 容器
- Linux 文件系统错误:事务失败解决方案
- Ubuntu 22.04 LTS 设置 LXD
- Debian 11 设置 LXD