次のコマンドを使用してQEMU VMを実行します。
qemu-system-x86_64 -enable-kvm -m 1024 -smp 2 -hda disk.qcow2
デフォルトでは、ゲストオペレーティングシステムはインターネットにアクセスできますが、ホストオペレーティングシステムの開いているポートにもアクセスできます。ゲストOSがホストのポートにアクセスするのを防ぐにはどうすればよいですか(インターネットアクセスは制限されません)。
ベストアンサー1
高度なiptables操作の経験がなく、Linuxがローカルプロセストラフィックをフィルタリングする方法の概要がない場合は、問題になる可能性があります。
あなたのモードでは、qemuはシミュレートされたNATを実行します。ゲストからのNICへのすべての呼び出しは、qemuプロセス自体によってソケット/接続/送信/受信呼び出しに変換されます。これは、接続が127.0.0.1でマシン自体によって確立されることを意味します。この時点で、別のユーザーとしてqemuを実行し、一致を追加してそのユーザーをフィルタリングできますowner
。
iptables -I OUTPUT -o lo -m owner --uid-owner username -m multiport --dports ports -j DROP
username
フィルタするユーザー名はどこにあり、このコンピュータでports
無効にするポートのカンマ区切りリストはどこにありますか。他のユーザーとしてqemuを実行するには、userまたは同様の方法で実行またはsudo
ログインする必要があります。su
login
これがないと自分でフィルタリングされるため、ポートをフィルタリングする一般的な規則を追加すると、そのポートへのアクセスもブロックされます。
別の方法は、qemuのネットワークモードを変更することです。トラフィックをフィルタリングする良い方法は、qemuを仮想イーサネットデバイスにバインドすることです。
パケット転送を有効にします。
をインストールするには、
tunctl
自分が所有する仮想ネットワークインターフェイスを追加してください。
tunctl -u yourname -t qemu
rc.local
(永続的なものと同じコマンドにこのコマンドを追加することを忘れないでください)
- 無料の/ 24サブネットを割り当てるようにqemuインターフェイスを設定します(
ip
または他のオペレーティングシステム提供ツールを使用)。ifconfig
このサブネットはゲストオペレーティングシステムにも設定する必要があります。それから-net tap,ifname=qemu,script=off
。ゲストオペレーティングシステムネットワークを再設定します。
qemu
その後、仮想インターフェイスとして表示されるゲストOSトラフィックを簡単にフィルタリングできます。
iptables -I FORWARD -i qemu -m multiport --dports ports -j DROP
動作する必要があります。
しかし、NATは動作を停止しました。 NATを再び機能させるには、コンピュータから送信されたIPアドレスにパッチを適用するルールを追加する必要があります。eth0
すべてのトラフィックが通過するインターフェイスがある場合は、NATをイネーブルにします。
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE