了解 MAAS 两种网络配置之间的差异

了解 MAAS 两种网络配置之间的差异

我想了解 MAAS 的两种网络配置之间的差异。我的理解是,它们都实现了相同的任务,第一个网络连接到互联网,第二个网络由 MAAS 管理。然后配置第二个网络以通过公共网络接口转发流量。

尽管取得了相同的结果,但配置看起来却相当不同,这就是我感到困惑的地方。

首次配置

第一个建议的配置来自以下内容Cloudbase 解决方案 Wiki 页面他们提出了一种简单的/etc/network/interfaces方法,eth0连接到外部网络并eth1进入内部网络并获得一个静态地址:

# The primary network interface (external)
auto eth0
iface eth0 inet dhcp

# The secondary NIC (used internal for MAAS)
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

然后将相应的iptables规则保存在 中。据我所知,这与和/etc/rc.local之间的网络流量转发有关。eth1eth0

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

第二种配置

第二种配置来自Ubuntu Openstack 多安装程序指南。它们的/etc/network/interfaces文件具有更多的网络接口,但与以前的配置类似,eth0连接到外部网络并且eth1是内部的:

# The loopback network interface
auto lo
iface lo inet loopback
  dns-nameservers 127.0.0.1
  pre-up iptables-restore < /etc/network/iptables.rules

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet manual

auto br0
iface br0 inet static
  address 172.16.0.1
  netmask 255.255.255.0
  bridge_ports eth1

此时我脑海中浮现的问题是,为什么要有loDNS 名称服务器并iptables应用于它?为什么在这种情况下使用桥接连接?

它们的iptable规则看起来也不同,并且被放置/etc/network/iptables.rules并假设这能够转发流量:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT

概括

有人可以帮忙解释一下他们做了什么不同的事情以及为什么吗?

如果这个问题太大,请告诉我,我可以将其分解为单独的问题,但首先我认为这提供了更多的背景信息。

答案1

两种配置非常相似,但有一些细微差别。

iface lo inet loopback
  dns-nameservers 127.0.0.1
  pre-up iptables-restore < /etc/network/iptables.rules

此配置将保证即使您的 eth0 电缆在启动时关闭,您仍将拥有 DNS 解析器和防火墙规则设置(很难摆脱环回网络设备,对吧?)。当然,此示例假定您将在本地运行 DNS 解析器服务。

我认为设置桥接设备没有任何问题。此配置应该可以正常工作,但我认为您不需要它,除非您计划使用它(例如 KVM 虚拟机)。

在第一种情况下,iptables 规则是为 shell 脚本编写的,因此它们的语法看起来与应该与 iptables-restore 一起使用的 /etc/network/iptables.rules 不同。

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT

这里只有一条规则,它允许伪装 172.16.0.0/24 子网。

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

上述规则允许任何来自 eth1 到 eth0 的子网将被伪装并涉及一些过滤。

就我个人而言,我宁愿采用上述混合配置。

答案2

第一个网络配置非常清楚。/etc/network/interfaces 文件大家都很熟悉,当然使用 MAAS 时需要通过 iptables 进行 IP 转发,以便为受 MAAS 管理的节点提供互联网。

除了 DNS 部分和 br0 部分之外的第二个配置是可以理解的。DNS 部分实际上是让 MAAS 服务器意识到它本身正在托管 DNS 服务。该行可能会转移到包含其他 DNS 配置的 /etc/resolve.conf。如果没有创建此 DNS 条目,您将在 JUJU 引导期间遇到此错误:https://github.com/Ubuntu-Solutions-Engineering/openstack-installer/issues/901

但是,我不太确定网桥 br0。这个网络配置真的有效吗?

相关内容