Всем привет. После установки VPN на европейском сервере через сервис Aeza (кстати Aeza это Российский хостинг провайдер) и судя по whois довольно молодой поэтому доля глюков в нём есть (об этом позже).
В общем решил я взять у них виртуальный сервер за 782 руб. в месяц который включает в себя 2 ядра, 4 Gb RAM, 60Gb NVME и заявленный канал 1Гбит.
Руководствовался я следующим: У меня есть хостинг с объёмом 60Гб, на котором я сижу с 2015 года и который я оплачиваю 1691,4 руб. в месяц + за Memcache, Redis и бекапы нужно платить отдельно, у меня там крутятся 36 сайтов, а здесь более чем в 2 раза дешевле + возможность установить всё самостоятельно, делать самому бекапы и т.д.
И так, я решил ставить Proxmox с ISO образа и тут меня ждала неудача. Ну помимо того что ISO образ у меня подключился раза с десятого (выходила ошибка) мне всё таки удалось поставить Proxmox, но при установке он не увидел сетевого интерфейса который смотрит в интернет и поставил сетевой интерфейс с IP адресом 192.168.0.100
Ладно подумал я, задам потом параметры сети в ручную
И это как бы логично, но не работает — то есть виртуальные машины таким образом не выходят в интернет. Да, они видят локальную сесть, видят друг друга, но в интернет не выходят. Когда я поднимал Proxmox дома, на своем физическом сервере, то я эту проблему решил проще — пробросив локальные IP адреса виртуальных машин в интернет через роутер. А здесь то роутера нет. Ставить виртуальный роутер типа Mikrotik ? Да, у меня была такая мысль, но это я оставил на самый последний вариант.
Собственно говоря основательно в течении выходного я занимался танцами с бубном курил интернет и основательно его раскурив, я нашел решение проблемы.
Приступаем к делу
И так входные данные виртуального сервера
Имя сетевого интерфейса: ens3
IP адрес: 78.92.87.34
Шлюз: 10.0.0.1
Маска подсети: 255.255.255.255 (это не опечатка, именно такая маска у Aeza)
меняем настройки сетевых интерфейсов командой “nano /etc/network/interfaces” следующим образом:
auto vmbr0 iface vmbr0 inet static address 78.92.87.34/32 gateway 10.0.0.1 bridge-ports ens3 bridge-stp off bridge-fd 1 pointtopoint 10.0.0.1 bridge_hello 2 bridge_maxage 12 auto vmbr100 iface vmbr100 inet static address 192.168.100.1 netmask 255.255.255.0 bridge-ports none bridge-stp off bridge-fd 0 #NAT post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE
После этого наша конфигурация сети примет вот такой вид
Кстати говоря — если вы создаете Linux Bridge через Web интефейс и после нажатия Apply configuration вы получаете ошибку вида “you need ifupdown2 to reload network configuration (500)” то вам необходимо установить следующий пакет.
apt install ifupdown2
net.ipv4.ip_forward=1
Теперь мы можем всем виртуальным машинам присваивать интерфейс vmbr100, сетевые настройки будут следующими:
IP адрес: 192.168.100.NNN
Шлюз: 192.168.100.1
Маска подсети: 255.255.255.0
DNS1: 8.8.8.8
DNS2: 8.8.4.4
Так же можете использовать DNS Яндекса: (77.88.8.8, 77.88.8.88, 77.88.8.7). Я использовал вразнобой и те и другие
Настройка сети в Windows
IP адрес: 192.168.100.NNN
Шлюз: 192.168.100.1
Маска подсети: 255.255.255.0
DNS1: 8.8.8.8
DNS2: 8.8.4.4
Пробросим порт 3389 для доступа по RDP
Ну и так как я хочу подключаться к удаленной Windows системе по RDP, то проброшу порт 3389
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 3389 -i vmbr0 -j DNAT --to-destination 192.168.100.11:3389
Сохраняем маршруты
iptables-save
Настройка сети в CentOS 7
Так как второй виртуальной машиной у меня стоит CentOS, то так же поменяем в ней сетевые настройки. Для этого сначала командой “ip ‑a” мы смотрим сетевые интерфейсы.
TYPE=Ethernet DEVICE=ens18 NAME=ens18 BOOTPROTO=static IPADDR=192.168.100.12 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 DNS1=77.88.8.8 DNS2=8.8.8.8 ONBOOT=yesТо есть здесь мы присваиваем нашему сетевому интерфейсу IP адрес 192.168.100.12, а так же маску, шлюз и DNS как описано выше.
Установка aaPanel
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel
Далее пойдёт процесс установки, по окончании его вы получите URLы для входа (один локальный, второй для доступа из интернета). Выглядят они примерно вот так:
https://78.92.87.34:7800/fjusl375
https://192.168.100.12:7800/fjusl375
И теперь нам нужно пробросить порты для того чтобы иметь доступ к виртуальным машинам.
Проброс портов к виртуальным машинам
И так — нам нужно на Proxmox’е пробросить порт 7800 на виртуальной машине 192.168.100.12 чтобы иметь доступ к нашей хостинг панели из интернета. Делается это командой
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 7800 -i vmbr0 -j DNAT --to-destination 192.168.100.12:7800
Так же нам нужен доступ по SSH, но чтобы к нам постоянно не долбились кулхацкеры по 22 пору, мы 22й порт перенаправим на порт 16384 (просто нравится это число — это начало экранной области ZX Spectrum)
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 16384 -i vmbr0 -j DNAT --to-destination 192.168.100.12:22
Так же нам нужно открыть порты 80 и 443 (http и https сооветственно). Так же выполяем команды
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 80 -i vmbr0 -j DNAT --to-destination 192.168.100.12:80 iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 443 -i vmbr0 -j DNAT --to-destination 192.168.100.12:443
Здесь:
79.137.NNN.NNN — внешний IP адрес;
- dport nnnn — внешний порт по которому будут обращаться для подключения из интернет;
—to-destination 192.168.100.12:nn — внутренний IP виртуальной машины и порт, к которому будет выполняться подключение
Сохраняем маршруты
iptables-save
Пробрасываем порты для электронной почты
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 110 -i vmbr0 -j DNAT --to-destination 192.168.100.12:110
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 995 -i vmbr0 -j DNAT --to-destination 192.168.100.12:995
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 143 -i vmbr0 -j DNAT --to-destination 192.168.100.12:143
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 993 -i vmbr0 -j DNAT --to-destination 192.168.100.12:993
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 25 -i vmbr0 -j DNAT --to-destination 192.168.100.12:25
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 465 -i vmbr0 -j DNAT --to-destination 192.168.100.12:465
iptables -t nat -A PREROUTING -p tcp -d 78.92.87.34 --dport 587 -i vmbr0 -j DNAT --to-destination 192.168.100.12:587
iptables-save