Netplanでマルチホームする方法-複数のIPを1つのネットワークアダプターにバインドしますか?
この問題を解決するために、複数の人々が2つの異なるアプローチを取っていることがわかります。1つは両方のIPがnicと同じデバイス名で定義され、IPTablesでオプションを制限します。
そして
もう1つのオプションは、VLANを作成し、NICを指すようにすることです。
それが正しい方法であり、それが最初に変更された理由です。/etc/network/interfacesはシンプルで意味があり、明らかにマルチホーミングをサポートしていました。
ネットプランとは関係なく、今日では、インターフェイスエイリアスを使用するのではなく、単一のインターフェイスに複数のアドレスを割り当てることがベストプラクティスです。/etc/network/interfacesでこれを明確にサポートしていないのは、実際にはifupdownの経過時間を示す問題です。
Netplanを使用すると、インターフェイスに複数のアドレスを設定するのは簡単です。 https://netplan.io/examples#multiple-addresses-on-an-interface
Iptablesでこれらのアドレスを処理するには、-iおよび-oオプションを使用して入力または出力インターフェイスを区別する代わりに、-sおよび-dオプションを使用して、一致するソースおよび宛先アドレスを指定できます。ほとんどの場合、これは同等です。 1つの例外は、動的アドレスで構成された同じインターフェース上に複数のエイリアスがあり、各アドレスに送信されるトラフィックに異なるルールを適用する場合です。宛先アドレスがわかるまでファイアウォールルールを設定することはできません。ただし、同じインターフェイスでdhcpを複数回要求するようにnetplanを構成することもできないため、これが必要な場合は、おそらくvlanを使用する必要があります。
次のようなものを使用して、iptablesルール内のアドレスの繰り返しを最小限に抑えることができます。
iptables -N eth0
iptables -N eth0_0
iptables -N eth0_1
iptables -A INPUT -i enp3s0 -d 192.168.1.5 -j eth0
iptables -A INPUT -i enp3s0 -d 192.168.1.6 -j eth0_0
iptables -A INPUT -i enp3s0 -d 192.168.1.7 -j eth0_1
iptables -A INPUT -i enp3s0 -j DROP
iptables -A eth0 [... eth0 rules here]
iptables -A eth0_0 [... eth0:0 rules here]
iptables -A eth0_1 [... eth0:1 rules here]