我在 debian 主机上设置了 kvm win7 guest 虚拟机。它已经启动并运行了一段时间,但我并没有用它做太多事情。我所做的(当然)是下载putty
.
今天我想尝试让 putty 访问主机,所以我必须更新防火墙规则。从那以后,我就再也没有客人的互联网连接了。恢复更改也没有帮助。所以我想知道为什么我无法再从客人那里访问互联网。老实说我不明白为什么。
我在此附加了您最可能感兴趣的以下信息:
当前的 iptable 规则:http://pastebin.com/pTnfs5sr
kvm 来宾 xml:http://pastebin.com/U0GhW0px
运行 guest 的 qemu cmd:http://pastebin.com/htZ4R0FE
如果配置:http://pastebin.com/uGVN29VZ
Ifconfig 显示 2 个虚拟接口:virbr0
这是我所期望的,但vnet0
我不知道它是如何设置的以及为什么。virbr0
每次我运行并重新启动它时,它都会被破坏并重新出现virst net-destroy default
。
预先感谢您的帮助。
编辑:还附加内核路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 <external IP of Host> 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
195.251.61.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
答案1
因此,为了与客人建立互联网连接,我必须添加以下内容
nat
桌子-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE -A POSTROUTING -s 192.168.122.0/24 -o eth0 -j SNAT --to-source <the host's ip>
所以我用来宾子网的 IP 来伪装离开主机的所有传出数据包。
filter
桌子-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
我还允许来自virbr0
互联网的数据包。然后允许将回复转发回virbr0
(已建立、相关)。
filter
再次表:-A INPUT -s 192.168.122.0/24 -i virbr0 -j ACCEPT
最后,允许访客访问主机上运行的服务。
答案2
可以查看默认路由IP地址吗?
> route PRINT -4
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.57.2 172.16.57.210 10
您必须拥有 0.0.0.0 网络的有效网关地址(我的意思是,必须有成功的 ping 响应)