端口转发到虚拟机qemu

时间:2011-10-26 04:24:51

标签: networking virtual-machine iptables

我最近在Ubuntu 11.10下安装了一台虚拟机,我现在假设它正在使用NAT,其内部地址是192.168.122.88。

我已经在我的虚拟机中设置了一个Web服务器,我希望能够在访问192.168.122.88时访问它。但是,现在它超时了。当我登录到虚拟机并尝试访问localhost时,它可以正常工作。

因此,出于某种原因,我的iptables阻止了从主机到虚拟机的流量(但不是相反)。

如何允许流量从我的主机流向我的虚拟机,以便我可以从主机看到网络服务器?

我使用了带有KVM和libvirt的Ubuntu虚拟机管理器。

我尝试过这样的事情

iptables -t nat -A PREROUTING -d 192.168.0.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.122.88:80

无济于事。显然它说没有主机的途径??

2 个答案:

答案 0 :(得分:0)

'没有到主机的路由'意味着主机没有可以匹配您尝试访问的网络的IP地址(您甚至没有默认路由),确保您有两个网络主机。

例如:

$ ip route show  
default via 192.168.1.254 dev p3p1  src 192.168.1.103  
default via 172.16.128.1 dev p3p1  
169.254.0.0/16 dev p3p1  scope link  metric 1003  
172.16.128.0/17 dev p3p1  proto kernel  scope link  src 172.16.128.2  
192.168.1.0/24 dev p3p1  proto kernel  scope link  src 192.168.1.103

在KVM主机上,我将虚拟接口连接到某个网桥。例如:

<interface type='bridge'>     
  <mac address='01:02:03:04:05:06'/>       
  <source bridge='br4'/>    
  <target dev='vnet4'/>    
  <model type='virtio'/>    
  <alias name='net0'/>    
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    
</interface>

然后,我为主机上的网桥分配IP地址,并将其设置为up:

ip address add 192.168.0.1/24 dev br4    
ip link set up dev br4

在我的虚拟机上,我在子网上分配了一些IP地址,如192.168.0.2,然后ping之间应该成功。

ping 192.168.0.1

答案 1 :(得分:0)

也许您需要允许转发到虚拟机的连接。试试这个:

iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

希望这有帮助。