いくつかのKVMゲストを実行するubuntu14.04.1ホストでいくつかの特定のIPTablesルールを設定しようとしています。
ボックスには複数のIPアドレスを持つ複数のNICがあり、ゲストは機能に基づいて異なるアドレスを使用します。
私は通常、これを実現するためにiptables-persistentを使用しますが、何らかの理由で、/ etc/iptables /rules.v4の下のルールが起動時にロードされていません。 iptables-persistentは、libvirtがインストールされていない場合に正しく機能します。
'/etc/init.d/iptables-persistent start'を実行すると、ルールが読み込まれ、セットアップは期待どおりになります。しかし、起動時にはそうではありません。これをデバッグするために非常に単純なrules.v4ファイルを作成しようとしましたが、まだロードされていません。
Iptables-persistentのinitシンボリックリンクは/etc/rc2.d/S37iptables-persistentにあります
Ufwが無効になっていることを確認しました。また、/ etc/libvirt/nwfilterからnwfilterルールを削除しましたが、virshnwfilter-listにエントリが表示されません。
他に何がこれらのルールを設定している可能性があり、どのようにカスタマイズするのか考えていますか?
fwステータス出力
# ufw status
Status: inactive
virsh nwfilter-list output
# virsh nwfilter-list
UUID Name
------------------------------------------------------------------
/ etc/iptables/rules.v4のコンテンツ
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:LOG_AND_DROP - [0:0]
-A INPUT -s 192.168.10.0/24 -i br0 -j ACCEPT
-A INPUT -s 192.168.11.0/24 -i br0 -j ACCEPT
-A LOG_AND_DROP -j LOG --log-prefix "iptables deny: " --log-level 7
-A LOG_AND_DROP -j DROP
COMMIT
起動後のiptables -L -nの出力(望ましくない結果)
# iptables -L -n -v
Chain INPUT (policy ACCEPT 12 packets, 912 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
193 17300 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- tunnelbr0 tunnelbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- mgmtbr0 mgmtbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 132 packets, 17456 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
/ etc/init.d/iptablesを実行した後のiptables -L -n -vの出力-永続的な開始(期待される結果)
# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
13 920 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 8 packets, 1104 bytes)
pkts bytes target prot opt in out source destination
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
表示されているすべての「追加」ルールは、仮想マシンゲストの仮想ネットワークをサポート(および保護)するためにlibvirtデーモンによって追加されました。通常、これらのルールについて心配する必要はありません(また、次回の起動時に複製されるため、これらのルールを永続化しようとしないでください)。
また、すべての永続的なファイアウォールルールだったがファイアウォールに追加されたことも明らかです。
ʻiptablesコマンドの重要な-v
スイッチがなければ、これらの事実のいずれかを識別することは困難と不可能の間でした。
/ etc/network/interfacesで「pre-up」ディレクティブをチェックインしましたか?これは次のようになります。
pre-up iptables-restore < /etc/iptables.rules
Ubuntu/Debianでのもう1つの可能性は、スクリプトが/etc/network/if-pre-up.d/ディレクトリにあるため、そのディレクトリの内容をリストする必要があることです。
# ls -al /etc/network/if-pre-up.d/
もう1つの可能性は、NetworkManagerがルールをロードすることです。これは、次のディレクトリでファイアウォール/ iptablesを検索することで確認できます。
/etc/NetworkManager/dispatcher.d/
また、/ etc/initおよび/etc/init.d内のすべてのスクリプトで「iptables」および「iptables-restore」を確認してください。