QEMU: 공용 인터넷에 대한 게스트 액세스를 비활성화하고 로컬(삼바) 네트워크 드라이브에 대한 액세스를 유지하는 방법은 무엇입니까?

QEMU: 공용 인터넷에 대한 게스트 액세스를 비활성화하고 로컬(삼바) 네트워크 드라이브에 대한 액세스를 유지하는 방법은 무엇입니까?

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

이는 실제로 가상 머신에 대한 인터넷 액세스를 차단하기에 충분합니다. 편집증이 있는 경우 라우터에서 직접 삼바 포트를 차단할 수 있습니다(라우터 인터페이스를 사용하거나 명령줄 방화벽을 사용하여 셸 액세스가 있는 경우).

관련 정보