%20IP%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E7%9B%97%E9%9B%A3%E3%82%92%E9%98%B2%E3%81%90%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
次のような構成を想定します: IP サブネットをアナウンスするルータと、いくつかの Proxmox ベースの KVM ホスト。各 Proxmox ベースの仮想化ホストは、顧客が管理する複数の仮想サーバーを実行し、各仮想サーバーには 1 つまたは複数の IP が割り当てられます。
(誤って設定された、または悪意のある)仮想サーバーが、そのサーバーに属していない IP をアナウンスするのを防ぐにはどうすればよいですか?
私が思いついた最良のアイデアは、iptables
正しい宛先アドレスを持つ着信トラフィックと正しい送信元アドレスを持つ発信トラフィックを除くすべてのトラフィックをブロックする -firewall ルールを使用することです。これでうまくいくはずです (ただし、ブロードキャスト トラフィックもブロックされると思いますが、そのシナリオでは許容できると思います)。ただし、ルーターを変更せずにこれを行うより良い方法はありますか? この問題の一般的な方法は何ですか?
答え1
IPTables は、ファイアウォールの前に IP スタックに結び付けられたパケット フィルターを使用するため、DHCP トラフィックをブロックできません。このリンクCentOS について説明していますが、原理は同じです。
これらのホストの別の顧客である場合は、プロバイダーの NOC に緊急サポート チケットを発行して、ネットワーク上に不正な DHCP サーバーがあることを示すと、プロバイダーは (適切に作業していれば) すぐに対応してくれるはずです。これらの VM が稼働しているハードウェアが自分のものであり、VM ブロードキャストにアクセスできない場合は、ネットワークを無効にして、顧客にコンソール経由で接続してもらい、問題を解決してください。
答え2
iptables
がそれに適していないことがわかった後、その情報に対する Christopher の上記の回答のおかげもあって、について少しebtables
調べたところ、Proxmox にはすでに IP スプーフィングを防止するサポートが組み込まれていることがわかった。
必要なのは、Proxmox の各仮想マシンのファイアウォール設定に次のルールを追加することだけです (/etc/pve/firewall/<VMID>.fw
ファイルを参照)。これは IPv4 と IPv6 で機能します。
[IPSET ipfilter-net0]
1.2.3.4
2f1:2:3:4::1
いずれにせよ、それは公式ドキュメントではすでに隠されていました:セクションを参照IP セット>標準 IP セット ipfilter-net*