
MAAS の 2 つのネットワーク構成の違いを理解しようとしています。私の理解では、どちらも同じタスクを達成し、最初のネットワークはインターネットに接続し、2 番目のネットワークは MAAS によって管理されます。2 番目のネットワークは、パブリック ネットワーク インターフェイス経由でトラフィックを転送するように構成されます。
同じ結果が得られたにもかかわらず、構成がかなり異なっているように見えるため、混乱が生じます。
最初の構成
最初の推奨構成は次のようになります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
。 私の知る限り、これはeth1
との間のネットワーク トラフィックの転送に関係していますeth0
。
/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
2番目の構成
2番目の構成は、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
この段階で頭に浮かぶ疑問は、なぜlo
DNS ネーム サーバーが存在し、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 ルールはシェル スクリプト用に記述されているため、その構文は 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
ここにはルールが 1 つだけあり、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 の使用時には、MAAS によって管理されているノードにインターネットを提供するために、iptables を介した IP 転送が必要になります。
DNS 部分と br0 部分以外の 2 番目の構成は理解できます。DNS 部分は、実際に MAAS サーバーに、それ自体が DNS サービスをホストしていることを認識させるものです。その行は、他の DNS 構成を含む /etc/resolve.conf に移動できます。この DNS エントリが作成されていない場合、JUJU ブートストラップ中に次のエラーが発生します。Ubuntu 16.04 の openstack インストーラーがリリースされました。
しかし、ブリッジ br0 についてはよくわかりません。このネットワーク構成は実際に機能したのでしょうか?