QEMU:パブリックインターネットへのゲストアクセスを無効にし、ローカル(Samba)ネットワークドライブへのアクセスを維持する方法は?

QEMU:パブリックインターネットへのゲストアクセスを無効にし、ローカル(Samba)ネットワークドライブへのアクセスを維持する方法は?

QEMU/KVMさまざまなマシンの仮想化に使用しています。ゲストシステムとホストシステム間でファイルを共有するために、Sambaゲストシステムにネットワークドライブを提供するホスト上でサーバーを実行します。

すべてのゲストはQEMU標準ブリッジを介してネットワークを受信しますvirbr0


今私の質問は次のとおりです。

すべてのゲストのパブリックインターネットアクセスを禁止する方法いいえSambaネットワークドライブにアクセスできないようにブロックしますか?

答え1

最近、仮想マシン(kvm-qemu + virt-manager)へのインターネットアクセスをブロックする必要がありました。

仮想マシンを起動すると、ホストで次の iptables ルールを見つけることができます (まだ存在しない場合)。

$ iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT

この構成により、仮想マシンはインターネットにアクセスできます(FORWARDルール)。したがって、FORWARDルールを削除するだけです。

$ iptables -L --list-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
3    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
2    ACCEPT     all  --  192.168.122.0/24     anywhere            
3    ACCEPT     all  --  anywhere             anywhere            
4    REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
5    REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc

$ iptables -D FORWARD 1
$ iptables -D FORWARD 2
$ iptables -D FORWARD 3
$ iptables -P FORWARD DROP

これは実際には仮想マシンへのインターネットアクセスをブロックするのに十分です。妄想がある場合は、ルータから直接サンバポートをブロックできます(ルータインターフェイスを使用するか、コマンドラインファイアウォールを使用してシェルアクセスがある場合)。

関連情報