Перенаправление портов на виртуальную машину qemu

Недавно я установил виртуальную машину под Ubuntu 11.10. Я предполагаю, что сейчас она использует NAT, а ее внутренний адрес — 192.168.122.88.

Я настроил веб-сервер на своей виртуальной машине и хочу иметь к нему доступ, когда захожу на 192.168.122.88. Однако сейчас время истекло. Когда я вхожу в виртуальную машину и пытаюсь получить доступ к локальному хосту, он работает.

Итак, по какой-то причине мой iptables блокирует трафик с хоста на виртуальную машину (но не наоборот).

Как я могу разрешить поток трафика с моего хоста на мою виртуальную машину, чтобы я мог видеть веб-сервер с хоста?

Я использовал Ubuntu Virtual Machine Manager с KVM и libvirt.

Я пытался сделать что-то вроде этого

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

безрезультатно. По-видимому, он говорит, что нет маршрута к хосту??


person Andre    schedule 26.10.2011    source источник


Ответы (2)


«Нет маршрута к хосту» означает, что хост-компьютер не имеет 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 192.168.0.1
person FarDarkMist    schedule 31.01.2013

Возможно, вам нужно разрешить переадресацию подключений к виртуальным машинам. Попробуй это:

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

Надеюсь это поможет.

person Francesc Guasch    schedule 07.06.2017