Переадресация портов на виртуальную машину qemu - PullRequest
2 голосов
/ 26 октября 2011

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

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

Итак, по какой-то причине мой 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

безрезультатно. Видимо там написано что нет маршрута к хосту ??

Ответы [ 2 ]

0 голосов
/ 07 июня 2017

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

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

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

0 голосов
/ 01 февраля 2013

«Нет маршрута к хосту» означает, что у хост-машины нет IP-адреса, который может соответствовать сети, к которой вы пытаетесь добраться (у вас даже нет маршрута по умолчанию), убедитесь, что у вас есть обе сети наhost.

Например:

$ 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-адрес мосту на хосте и настраиваю его:

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
...