Networking
QEMU:如何禁止客人訪問公共網際網路但保留他們對本地(samba)網路驅動器的訪問權限?
我正在使用
QEMU/KVM
各種機器的虛擬化。為了在來賓系統和主機系統之間共享文件,我在Samba
主機上執行了一個 -server,它為來賓機器提供了一個網路驅動器。所有客人都通過 QEMU 標準網橋接收他們的網路
virbr0
。我現在的問題是:
如何在不阻止所有訪客訪問
Samba
網路驅動器的情況下禁止所有訪客訪問公共網際網路?
我最近需要阻止對虛擬機的 Internet 訪問(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
此配置允許虛擬機訪問 Internet(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
這實際上應該足以阻止對虛擬機的 Internet 訪問。如果您偏執,您可以直接從路由器阻止 samba 埠(使用路由器介面,或者如果您可以使用命令行防火牆對其進行 shell 訪問)。