LINUX.ORG.RU
ФорумAdmin

Как сделать домен и поддомен на разных виртуальных машинах?

 


0

2

Виртуальные машинки:

VM1 (Web-pk)     192.168.122.78
VM2 (nextcloud)  192.168.122.160

Hosts(на KVM Сервере)

127.0.0.1       localhost
192.168.122.78  damain.ru
192.168.122.160 cloud.domain.ru

/etc/network/interfaces

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto br1
iface br1 inet static
        address 192.168.3.3
        netmask 255.255.255.0
        network 192.168.3.0
        gateway 192.168.3.1
dns-search domain cloud  domain.ru cloud.domain.ru  www.domain.ru www.cloud.domain.ru
      dns-nameservers 192.168.3.1
        bridge_ports enp3s0
        bridge_fd 0
        bridge_hello 2
        bridge_maxage o
        bridge_stp off




Сайт уже настроен и работает по hhtps.

Облако работает , если заходишь с виртуалки (VM1 по айпишнику ввожу в браузере http://192.168.122.160/login/).

На VM2 нет графической оболочки, поэтому проверял с VM1.

Запись А поддомена  создал у провайдера.

Когда захожу c внешки http://cloud.domain.ru/
, меня бросает по умолчанию в VM1 в папку /var/www/.

А нужно , чтобы на другую машину бросала VM2  по умолчанию /var/www/nextcloud.


В какую сторону копать?
Что-то с интерфейсами не так?
Заранее спасибо за ответ...






 


Последнее исправление: borbor (всего исправлений: 1)

В какую сторону копать?

Для начала в сторону «а что ты вообще сделал, чтобы пр запросе к host отвечала VM1». Когда перестанешь секретничать и поделишься этой частью, может поможем расширить её и на VM2.

t184256 ★★★★★
()

Запись А поддомена создал у провайдера.

Какую именно? Видимо для domain.ru поскольку тебя закидывает на VM1:

Когда захожу c внешки http://cloud.domain.ru/

Настраивай на VM1 прокси к VM2 для домена третьего уровня. Домен второго уровень будешь обрабатывать на VM1.
Или выставляй VM2 в интернеты и делай вторую запись у провайдера уже и для домена cloud.domain.ru.
В общем маловато информации, чтобы конкретно что-то посоветовать.
А что у тебя там в hosts и локальных dns вписано по барабану.

imul ★★★★★
()
Ответ на: комментарий от t184256

Пробросил порты 80 и 443 до KVM -сервера.

Дальше через hook-скрипт пробрасывал до виртуалки (VM1 (192.168.122.78)).

Сейчас поставил VM2 и на нее нужно тоже порты пробросить.

Щас пока жу скрипт и мап:

#!/bin/bash

hostif="br1"
#Leave blank if you need first IP from interface otherwise enter desired ip address
hostip="virbr0"

if [ -z $hostip ] ; then
 hostip=$(/sbin/ip -4 addr show "$hostif" | awk '/inet/ {split($2, a, "/"); print a[1]; exit}')
fi

# Format: guestname,sourceip,hostpt,guestip,guestpt per string
# leave sourceip field empty for connect from anywhere
datafile="/etc/libvirt/hooks/server_port_map"
iptables='/sbin/iptables'

while IFS=, read -r guestname sourceip hostpt guestip guestpt ; do
if [ -z $sourceip ] ; then
 sourceip="0.0.0.0/0"
fi
if [ $1 = $guestname ] ; then
 if [[ $2 == @(stopped|reconnect) ]] ; then
 
$iptables -w -D FORWARD -i $hostif -o $sourceip -m state --state NEW -m tcp -p tcp -d $guestip --dport $guestpt -j ACCEPT

 fi
 if [[ $2 == @(start|reconnect) ]] ; then

$iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.78 -p tcp -m tcp --dport 80 -j ACCEPT
 $iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.78 -p tcp -m tcp --dport 443 -j ACCEPT

$iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.160 -p tcp -m tcp --dport 80 -j ACCEPT
 $iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.160 -p tcp -m tcp --dport 443 -j ACCEPT

 $iptables -A PREROUTING -t nat -i br1 -p tcp -d 192.168.3.3 --dport 443 -j DNAT --to 192.168.122.78:443
$iptables -A PREROUTING -t nat -i br1 -p tcp -d 192.168.3.3 --dport 443 -j DNAT --to 192.168.122.160:443

 fi
fi
done < $datafile

/etc/libvirt/hooks/server_port_map

VM1,192.168.3.3,80,192.168.122.78,80
VM1,192.168.3.3,443,192.168.122.78,443
VM2,192.168.3.3,80,192.168.122.160,80
VM2,192.168.3.3,443,192.168.122.160,443

/etc/network/interfaces.d/*

auto lo
iface lo inet loopback


auto br1
iface br1 inet static

        address 192.168.3.3
        netmask 255.255.255.0
        network 192.168.3.0
        gateway 192.168.3.1
dns-search domain cloud  domain.ru cloud.domain.ru  www.domain.ru www.cloud.domain.ru
dns-nameservers 192.168.3.1
        bridge_ports enp3s0
        bridge_fd 0
        bridge_hello 2
        bridge_maxage o
        bridge_stp off

hostif=«br1» hostip=«virbr0» на 2х виртаулках разные или одинаковые?

Если разные, то как вывести правильно к какой виртуалке какое соединение соответсвует, получается изменить hook и interfaces файлы надо и все должно заработать?

borbor
() автор топика
Ответ на: комментарий от borbor

brctl show

bridge name	bridge id		STP enabled	interfaces
br1		8000.7824af9cfcc6	no		enp3s0
virbr0		8000.525400621cf5	yes		virbr0-nic
							vnet0
							vnet1

ip r s

default via 192.168.3.1 dev br1 onlink 
192.168.3.0/24 dev br1  proto kernel  scope link  src 192.168.3.3 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

borbor
() автор топика
Ответ на: комментарий от borbor

iptables -L -n -v

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.160      tcp dpt:443
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.160      tcp dpt:80
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:443
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 28 packets, 2251 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   19  6259 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68

borbor
() автор топика
Ответ на: комментарий от borbor

У тебя VM2 не имеет белого IP?
У провайдера A записи для домена и субдомена указывают на белый IP VM1?
Какой веб-сервер используешь?
Для nginx на VM1 можно просто сделать проксирование.
Заводишь cloud.conf и туда пишешь:
server {
listen VM1:80;
server_name cloud.tld;
}
location / {
proxy_pass VM2:80;
}
VM1 и VM2 <-- адреса твоих серверов. VM1 должен быть белый.
Если у тебя и VM2 белый, то просто внеси его в А запись у провайдера. Если есть возможность пробросить с белого IP адреса на VM2, то пробасывай и исправляй А запись у провайдера.

imul ★★★★★
()
Ответ на: комментарий от imul

У меня не VM1 не VM2 не имеет белого айпи.

У меня сначало витая пара подключена к компу с pfsense. НА него белый айпи статический настроен. С pfsense визически витая пара идет к компу c UBuntu server, на котором крутится kvm и 2 виртуалки(VM1 ,VM2 ).

Я настроил через нат , что порты 80 и 443 доходят до kvm-сервера.

На VM1-веб серевер крутится, на VM1 - nextcloud.

Все записи идут на статический pfsense.

Там записи:- А на domain.ru - А на cloud.domain.ru - другие записи еще есть.

borbor
() автор топика
Ответ на: комментарий от borbor

Firewall: NAT: Port Forwardhelp


Port Forward1:1OutboundNPt
 	 	If	Proto	Src. addr	Src. ports	Dest. addr	Dest. ports	NAT IP	NAT Ports	Description	
delete selected rules	add
	change	WAN	TCP	*	*	WAN net	80 (HTTP)	192.168.3.3	80 (HTTP)	 	
move selected rules before this rule	edit rule
delete	add
	change	WAN	TCP/UDP	*	*	WAN net	443 (HTTPS)	192.168.3.3	443 (HTTPS)

borbor
() автор топика
Ответ на: комментарий от borbor

Теперь понятно.
Увы, совсем не знаток pfsense.
У апача вроде есть proxy_module.
Ну был раньше, когда я им ещё пользовался.
Настрой доступ к cloud через этот модуль с VM1.

imul ★★★★★
()
Ответ на: комментарий от imul

Это я попробую, но нужно независимо сделать. Зачем мне из одной VM тянуть в другую. Получается если я одну виртуалку отключу, то 2 тоже не будет порт ловить.

Кстатити пробовал менять apache конфиги , ports.conf, hosts, реакции ноль.

даже так пробовал. [code=java] Listen 81 NameVirtualHost 202.187.1.10:81 <VirtualHost 202.187.1.10:81> ServerName vhost1 ServerAlias vhost1 DocumentRoot «/host/vhost1/www/»

Listen 82 NameVirtualHost 202.187.1.10:82 <VirtualHost 202.187.1.10:82> ServerName vhost2 ServerAlias vhost2 DocumentRoot «/host/vhost2/www/» [/code=java]

borbor
() автор топика
Ответ на: комментарий от borbor

Тогда подними третью виртуалку с nginx (или реверсивным squid) и проксируй VM1 и VM2 из неё. Непонятно, что ты хотел добиться меняя порты. У тебя простая задача. Первый домен перенаправляешь на VM1, второй на VM2. Это не делается на L3 и L4 уровнях OSI.

imul ★★★★★
()
Ответ на: комментарий от imul

Создавать третью виртуалку ради того , чтобы раздать 80 порт на 2 машины?

А на самом kvm-сервере не получится?

может как-то создать еще один бридж на квм и раздать сразу через iptables 80 порт, или порт нельзя сразу на 2 айпи раздать?

borbor
() автор топика
Ответ на: комментарий от borbor

Создавать третью виртуалку ради того , чтобы раздать 80 порт на 2 машины?

Но ты же создал две виртуалки там где можно обойтись одной, да в принципе можно и вообще без виртуалок.

А на самом kvm-сервере не получится?

Получится на чём угодно, где можно пустить веб-сервер в режиме прокси, или реверсивный прокси.

imul ★★★★★
()
Ответ на: комментарий от imul

Короче, установить облако на ту же машину, где веб-сервер стоит -минутное дело, ибо все уже почти настроено.

Будем пытаться разобраться в бриджах и пробросе портов.

Вопрос 1 !!!!!!: А как мне проверить , что на данной машине действительно проброшен порт и до него можно достучаться с внешки? Какую команду нужно ввести?

borbor
() автор топика
Ответ на: комментарий от borbor

Короче заработало, сделал прокси на VM1.

<VirtualHost *:80>
  ServerName cloud.domain.ru
  ServerAlias www.cloud.domain.ru
  ProxyPreserveHost On
  ProxyPass / http://192.168.122.160:80/
  ProxyPassReverse / http://192.168.122.160:80/
</VirtualHost>

Но, пробовал на самом хосте (где kvm установлен) сделать те же самые настройки, облако не заработало.

В итоге , сделал на VM1 облако вместе с веб-сайтом.Так как не хочется , чтобы была зависимость между виртуалками.

Всем спасибо...

borbor
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.