我正在设置一台在 qemu/kvm 虚拟化堆栈中运行 Windows 7 客户机的 Debian 机器。由于 Windows 计算机运行的是过时的软件,我决定将其放入无法访问 Internet 的虚拟机中。但是,我需要将文件移入和移出虚拟机。
我听说可以设置仅主机网络并更改防火墙规则以禁止除主机之外的所有访问。然而,主机需要完全访问互联网。
我对Linux下的防火墙配置没有经验。我怎样才能实现上述目标?
答案1
这应该可以做到:
$ qemu-system-x86_64 -net nic -net user,restrict=on,smb=/path/to/shared/folder ...
来自联机帮助页:
-netdev user,id=id[,option][,option][,...] -net user[,option][,option][,...] Use the user mode network stack which requires no administrator privilege to run. Valid options are: ... restrict=on|off If this option is enabled, the guest will be isolated, i.e. it will not be able to contact the host and no guest IP packets will be routed over the host to the outside. This option does not affect any explicitly set forwarding rules. ... smb=dir[,smbserver=addr] When using the user mode network stack, activate a built-in SMB server so that Windows OSes can access to the host files in dir transparently. The IP address of the SMB server can be set to addr. By default the 4th IP in the guest network is used, i.e. x.x.x.4. In the guest Windows OS, the line: 10.0.2.4 smbserver must be added in the file C:\WINDOWS\LMHOSTS (for windows 9x/Me) or C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS (Windows NT/2000). Then dir can be accessed in \\smbserver\qemu. Note that a SAMBA server must be installed on the host OS. QEMU was tested successfully with smbd versions from Red Hat 9, Fedora Core 3 and OpenSUSE 11.x.
为此,samba
必须安装在主机系统上;它不需要配置或运行,只smbd
需要二进制文件,它将以临时配置运行,没有特权。
笔记
在 Windows 7 中,您可以通过计算机 -> 添加网络位置 -> 选择自定义网络位置 -> \\10.0.2.4\qemu 连接到共享文件夹。
如果Windows坚持打开“连接到Internet”向导,则将其关闭即可; “添加网络位置”向导仍在运行,您可以通过单击任务栏图标重新打开其窗口。
答案2
事实证明,我可以使用 virt-manager 创建一个隔离网络,然后启动 samba(smb 服务器)并将其配置为侦听 virbr1(隔离网络)。显然,隔离的网络禁止与外界通信,但允许到达主机,这正是我所寻找的。
编辑更多解释:
- 如需创建隔离网络,请参阅https://wiki.libvirt.org/page/VirtualNetworking#Isolated_mode和https://wiki.libvirt.org/page/VirtualNetworking#Isolated_mode_2
- 在主机上使用
ip addr
(或类似)查找新网桥的主机 IP 地址 - 此外,您可以配置访客的 IP 设置以获得静态 IP
- 然后只需使用主机和访客的 IP 即可进行通信
- 有关设置 samba 的更多信息,请查看官方文档或教程,例如https://tutorials.ubuntu.com/tutorial/install-and-configure-samba#0