기본 QEMU/KVM 가상 네트워크 NAT 어댑터를 사용하는 VM이 있습니다. 호스트 컴퓨터는 Ubuntu Desktop 20.04를 실행합니다. 게스트가 Windows 10을 실행 중입니다. 게스트가 LAN을 볼 수 없도록 LAN에 대한 액세스를 차단하기 위해 간단한 libvirt 필터를 설정했습니다.
cat > no-localnet <<EOF
<filter name='no-localnet' chain='ipv4' priority='-700'>
<uuid>f49bd8c5-80ed-4f20-9132-27d3391bf3dc</uuid>
<rule action='drop' direction='out' priority='500'>
<all dstipaddr='192.168.0.0' dstipmask='16' comment='reject localnet out'/>
</rule>
<rule action='drop' direction='in' priority='500'>
<all srcipaddr='192.168.0.0' srcipmask='16' comment='reject localnet in'/>
</rule>
</filter>
EOF
virsh nwfilter-define no-localnet
VM NIC xml 설정에도 추가되었습니다.
<interface type="network">
...
<filterref filter="no-localnet"/>
...
</interface>
필터는 처음 추가했을 때 작동했지만 호스트를 다시 시작한 후에는 무엇을 변경해도 더 이상 작동하지 않았습니다.
답변1
IPTables를 사용하여 솔루션을 찾았습니다.
sudo iptables -I INPUT -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I INPUT -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
sudo iptables -I OUTPUT -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I OUTPUT -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
여기서 192.168.100.0/24는 LAN에 대한 액세스를 차단하려는 IP 범위이며, 이 경우 VM에 할당된 IP 범위입니다. 참고: 재부팅 후에도 저장되지 않으므로 유지해야 합니다.