Виртуальная машина KVM может получать доступ к сети интернет с помощью технологии NAT. В этом случае, доступ к виртуальной машине из интернет, например, доступ к web-серверу можно реализовать с помощью настройки iptables.
Виртуальный сетевой интерфейс виртуальной машины настроен по умолчанию в режим NAT (Network Address Translation). NAT настроен с помощью Iptables с использованием IP маскировки.
В режиме NAT на хост системе KVM создается виртуальный сетевой коммутатор с DNS и DHCP сервером (dnsmasq), а сетевой интерфейс виртуальной машины получает настройки автоматически. Dnsmasq и NAT автоматически конфигурируется и запускается Libvirt.
Настройки сетевых интерфейсов KVM хоста:
ifconfig eth1 Link encap:Ethernet HWaddr 60:a4:4c:38:d1:0a inet addr:87.245.185.150 Bcast:87.245.185.151 Mask:255.255.255.248 inet6 addr: fe80::62a4:4cff:fe38:d10a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7960443 errors:0 dropped:13584 overruns:0 frame:0 TX packets:9254976 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2389039348 (2.3 GB) TX bytes:8098112598 (8.0 GB) virbr0 Link encap:Ethernet HWaddr fe:54:00:49:1f:df inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8275 errors:0 dropped:0 overruns:0 frame:0 TX packets:11635 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:518853 (518.8 KB) TX bytes:15236987 (15.2 MB)
Настройки сетевого интерфейса виртуальной машины KVM:
ifconfig eth1 Link encap:Ethernet HWaddr 52:54:00:49:1F:DF inet addr:192.168.122.178 Bcast:192.168.122.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fe49:1fdf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25442 errors:0 dropped:0 overruns:0 frame:0 TX packets:3366 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5788869 (5.5 MiB) TX bytes:267004 (260.7 KiB)
Из выше приведенных листингов мы видим что сетевой интерфейс хоста eth1 подключен к сети интернет с выделенным IP 87.245.185.150. В хост системе создан виртуальный коммутатор virbr0 с IP адресом в виртуальной сети 192.168.122.1. Виртуальный сетевой интерфейс виртуальной машины подключен в виртуальную сеть и получил IP адрес 192.168.122.178.
На виртуальной машине установлен web-сервер и нам необходимо получить к нему доступ из сети интернет по протоколу http (порт 80).
Поставленная задача решается двумя командами, выполненными в терминале хоста:
sudo iptables -t nat -A PREROUTING --dst 87.245.185.150 -p tcp --dport 80 -j DNAT --to-destination 192.168.122.178 sudo iptables -I FORWARD 1 -i eth1 -o virbr0 -d 192.168.122.178 -p tcp -m tcp --dport 80 -j ACCEPT
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Просто делюсь интересными на мой взгляд событиями и статьями.