DNS

Для початку оновлюємо репозиторій та встановлюємо утиліти:

sudo apt update
sudo apt install bind9 bind9utils bind9-doc dnsutils -y


Переходимо до директорії в якій знаходиться налаштування утиліти, та відкриваємо файл опцій

cd /etc/bind
sudo nano named.conf.options


В якому додаємо налаштування на щоб вийшло щось на зразок:

options {
directory "/var/cache/bind";
listen-on { any; };
--тут вказується на якомі ІР утиліта буде слухати DNS запити
allow-query { any; }; -- тут вказуємо з яких мереж дозволити запити, наприклад "192.168.0.0/24"
recursion yes;
allow-recursion { any; };
dnssec-validation no;
listen-on-v6 { any; };
forwarders {
192.n.n.n;
8.n.n.n;
--тут вказуємо альтернативні DNS на які буде звертатись, якщо не знайде у себе запис
};
};


Тепер переходимо до редагування наступного файлу та додаємо нашу DNS зону:

sudo nano named.conf.local
zone "nash.domen" {
-- замінюємо "nash.domen" на необхідний нам
type master; file "/etc/bind/db.nash.domen";-- вкузуємо маршрут і замінюємо "nash.domen" на необхідний нам
};


Щоб не вводити все вручну копіюємо вже наявний файл бази адрес з його перейменуванням на ім'я нашої бази, ну і звісно відкриваємо її для редагування

sudo cp db.local db.nash.domen --замінюємо "nash.domen" на необхідний нам
sudo nano db.nash.domen
-- замінюємо "nash.domen" на необхідний нам та редагуємо:

$TTL 604800
@ IN SOA dns.nash.domen. root.nash.domen. (
-- --замінюємо "nash.domen" на необхідний нам
15 ; Serial
цифру потрібно змінювати при кожному редагуванні файлу
14400 ; Refresh
3600 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS dns.nash.domen.
; name servers - A records

mysite1.nash.domen. IN A 192.n.n.n
-- тут замінюємо "mysite1.nash.domen" на бажаний, а 192.n.n.n на відповідну ІР
mysite2.nash.domen. IN A 192.n.n.n


Для перевірки правильності вводу виконуємо команди нижче, якщо все вірно у відповідь не видасть нічого
sudo named-checkconf named.conf
sudo named-chekzone nash.domen /etc/bind/db.nash.domen

Перезапускаємо DNS:
sudo systemctl restart bind9.service

Для передостанньої перевірки набираємо команду:

sudo nslookup mysite1.nash.domen-- якщо видасть необхійдний ІР, то все добре

PS: коли на запит по останній команді видає 127.0.0.1:53 вирішив по методу з хабра, але потім чомусь нічого не зміг скачати і навіть оновити репозиторії, хоча саме після цього запрацювало відмінно. Та команда така:
sudo apt remove systemd-resolved

PS2: перший вхід на сайт потрібно робити з приставкою "http" типу: http://mysite1.nash.domen

PS3: при налаштування ІР адреси потрібно "nameserver" вказати ІР цього DNS PS4: для видалення днс кешу з пк команда: sudo resolvectl flush-caches


Proxy

Для початку встановлюємо Apache2 (з nginx я чомусь не подружився) командою:
sudo apt install apache2 -y

Тепер потрібно вмикнути модулі в апача:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo a2enmod ssl
sudo systemctl restart apache2


Нам необхідно створити тепер для кожного хосту, який буде перенаправлятись окремий файл наприклад для mysite3.nash.domen створюємо та редагуємо одноіменний файл з розширенням ".conf" командою:
sudo nano /etc/apache2/sites-available/mysite3.nash.domen.conf

<VirtualHost *:80>
ServerName mysite3.nash.domen
ServerAlias www.mysite3.nash.domen

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://192.n.n.n:80/
ProxyPassReverse / http://192.n.n.n:80/

ErrorLog ${APACHE_LOG_DIR}/mysite3.nash.domen-error.log
CustomLog ${APACHE_LOG_DIR}/mysite3.nash.domen-access.log combined

</VirtualHost>


Для включення перенаправлення необхідно виконати команди:
sudo a2ensite mysite3.nash.domen
sudo systemctl restart apache2


PS: Не забути прописати посилання в DNS на цей ІР на якому апаче


Сталась ситуація, коли довелось прокинути https:// сервіс. Для цього копіюємо файл дефолтного конфігу в назві якого є "SSL", обзиваємо по типу попереднього налаштування, і редагуємо за прикладом нижче:

<VirtualHost *:443>
ServerName nash.domen
ServerAlias www.nash.domen
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
-- цей пункт просто розкоментується
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key -- цей пункт просто розкоментується
ProxyRequests Off
ProxyPreserveHost On
<Proxy />
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine on
-- цей пункт встановлюється якщо домен має свій сертифікат
SSLProxyVerify none -- цей пункт встановлюється якщо домен має свій сертифікат
SSLProxyCheckPeerCN off -- цей пункт встановлюється якщо домен має свій сертифікат
SSLProxyCheckPeerName off -- цей пункт встановлюється якщо домен має свій сертифікат
RewriteEngine On -- цей пункт для wss (в мому випадку в проксмокс)
RewriteCond %{HTTP:Upgrade} =websocket [NC] -- цей пункт для wss (в мому випадку в проксмокс)
RewriteRule /(.*) wss://192.n.n.n:80/$1 [P,L] -- цей пункт для wss (в мому випадку в проксмокс)
ProxyPass / https://192.n.n.n:80/
ProxyPassReverse / https://192.n.n.n:80/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>