+
This commit is contained in:
129
Certificates_config.md
Normal file
129
Certificates_config.md
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
## Подключаемся к инфраструктуре
|
||||||
|
```sh
|
||||||
|
wsl
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /mnt/o/MyDocuments/projects/_Doc/Certificates &&
|
||||||
|
ls
|
||||||
|
```
|
||||||
|
|
||||||
|
# Создадим корневой ключ и сертификат:
|
||||||
|
Create root certificate
|
||||||
|
```sh
|
||||||
|
openssl genrsa -out rootCA.key 4096 &&
|
||||||
|
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt
|
||||||
|
```
|
||||||
|
|
||||||
|
Add root certificate to trusted
|
||||||
|
```sh
|
||||||
|
cd /mnt/o/MyDocuments/projects/_Doc/Certificates &&
|
||||||
|
sudo cp rootCA.crt /usr/local/share/ca-certificates/ &&
|
||||||
|
sudo update-ca-certificates
|
||||||
|
```
|
||||||
|
|
||||||
|
## Отдельные сертификаты для каждого домена
|
||||||
|
|
||||||
|
Отдельно для домена "ccalm.test" можно создать сертификат так:
|
||||||
|
```sh
|
||||||
|
openssl genrsa -out ccalm.test.key 2048
|
||||||
|
openssl req -new -key ccalm.test.key -out ccalm.test.csr -subj "/CN=ccalm.test"
|
||||||
|
```
|
||||||
|
|
||||||
|
Подписать сертификат корневым CA
|
||||||
|
```sh
|
||||||
|
openssl x509 -req -in ccalm.test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out ccalm.test.crt -days 365 -sha256
|
||||||
|
```
|
||||||
|
|
||||||
|
## Если домены связаны то можно создать один wildcard-сертификат (*.test)
|
||||||
|
|
||||||
|
Так как это все мои домены для тестированя системы то мне легче создать единый сертификат
|
||||||
|
***Внимание: для поддоменов не работает!***
|
||||||
|
|
||||||
|
Создать ключ и CSR для *.test
|
||||||
|
|
||||||
|
```sh
|
||||||
|
openssl version &&
|
||||||
|
openssl genrsa -out ccalm.test.key 2048 &&
|
||||||
|
openssl req -new -key ccalm.test.key -out ccalm.test.csr -subj "/CN=ccalm.test" -addext "subjectAltName=DNS:ccalm.test" &&
|
||||||
|
openssl x509 -req -in ccalm.test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out ccalm.test.crt -days 365 -sha256 -copy_extensions copy
|
||||||
|
openssl x509 -in ccalm.test.crt -text -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
openssl version &&
|
||||||
|
openssl genrsa -out wildcard.test.key 2048 &&
|
||||||
|
openssl req -new -key wildcard.test.key -out wildcard.test.csr -subj "/CN=*.test" -addext "subjectAltName=DNS:*.test" &&
|
||||||
|
openssl x509 -req -in wildcard.test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out wildcard.test.crt -days 365 -sha256 -copy_extensions copy
|
||||||
|
openssl x509 -in wildcard.test.crt -text -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
## Создаём ключ и сертификат для *.local потом подписываем корневым
|
||||||
|
|
||||||
|
Создаю:
|
||||||
|
```sh
|
||||||
|
openssl version &&
|
||||||
|
openssl genrsa -out wildcard.local.key 2048 &&
|
||||||
|
openssl req -new -key wildcard.local.key -out wildcard.local.csr -subj "/CN=*.local" -addext "subjectAltName=DNS:*.local" &&
|
||||||
|
openssl x509 -req -in wildcard.local.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out wildcard.local.crt -days 365 -sha256 -copy_extensions copy
|
||||||
|
openssl x509 -in wildcard.local.crt -text -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём и подписываем одной группой команд:
|
||||||
|
```sh
|
||||||
|
openssl version &&
|
||||||
|
openssl genrsa -out powerdns.local.key 2048 &&
|
||||||
|
openssl req -new -key powerdns.local.key -out powerdns.local.csr -subj "/CN=powerdns.local" -addext "subjectAltName=DNS:powerdns.local" &&
|
||||||
|
openssl x509 -req -in powerdns.local.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out powerdns.local.crt -days 365 -sha256 -copy_extensions copy
|
||||||
|
openssl x509 -in powerdns.local.crt -text -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Подписать корневым CA:
|
||||||
|
```sh
|
||||||
|
openssl x509 -req -in wildcard.local.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out wildcard.local.crt -days 365 -sha256
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
openssl x509 -req -in powerdns.local.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out powerdns.local.crt -days 365 -sha256
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Один сертификат с SAN (Subject Alternative Names)
|
||||||
|
|
||||||
|
Написать san.cnf
|
||||||
|
```conf
|
||||||
|
[req]
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
req_extensions = v3_req
|
||||||
|
[req_distinguished_name]
|
||||||
|
[v3_req]
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = ccalm.test
|
||||||
|
DNS.2 = git.test
|
||||||
|
DNS.3 = geoserver.ccalm.test
|
||||||
|
DNS.4 = another.domain
|
||||||
|
```
|
||||||
|
Генерировать CSR и подписать:
|
||||||
|
```sh
|
||||||
|
openssl req -new -key multi.test.key -out multi.test.csr -config san.cnf
|
||||||
|
openssl x509 -req -in multi.test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out multi.test.crt -days 365 -sha256 -extfile san.cnf -extensions v3_req
|
||||||
|
```
|
||||||
|
|
||||||
|
Как использовать:
|
||||||
|
Подходит, если у вас несколько несвязанных доменов.
|
||||||
|
Можно защитить корневой домен и поддомены (example.com + www.example.com).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Проверка
|
||||||
|
|
||||||
|
```sh
|
||||||
|
openssl x509 -in rootCA.crt -text -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
openssl x509 -in powerdns.local.crt -text -noout
|
||||||
|
```
|
||||||
11
ChatGPT_install.md
Normal file
11
ChatGPT_install.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Не стал устанавливать буду использовать WEB версию
|
||||||
|
|
||||||
|
Устанавливаем недостающие пакеты:
|
||||||
|
```sh
|
||||||
|
apt search libwebkit2gtk
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install libwebkit2gtk-4.1-dev -y
|
||||||
|
```
|
||||||
@ -22,7 +22,7 @@ ssh igor@192.168.200.84 -p 22
|
|||||||
Создаём файл конфигурации
|
Создаём файл конфигурации
|
||||||
```sh
|
```sh
|
||||||
cd /opt/dashy/data &&
|
cd /opt/dashy/data &&
|
||||||
tee conf.yml > /dev/null <<EOF
|
tee conf.yml > /dev/null <<'EOF'
|
||||||
pageInfo:
|
pageInfo:
|
||||||
title: Home Lab
|
title: Home Lab
|
||||||
sections: # An array of sections
|
sections: # An array of sections
|
||||||
@ -74,7 +74,7 @@ sudo chmod 666 /opt/dashy/data/conf.yml
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /opt/dashy &&
|
cd /opt/dashy &&
|
||||||
cat > docker-compose.yml <<EOF
|
cat > docker-compose.yml <<'EOF'
|
||||||
services:
|
services:
|
||||||
dashy:
|
dashy:
|
||||||
image: lissy93/dashy:latest
|
image: lissy93/dashy:latest
|
||||||
@ -87,7 +87,6 @@ services:
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## 4. Запуск контейнера
|
## 4. Запуск контейнера
|
||||||
```sh
|
```sh
|
||||||
cd /opt/dashy &&
|
cd /opt/dashy &&
|
||||||
@ -98,11 +97,12 @@ EOF
|
|||||||
sudo docker-compose down
|
sudo docker-compose down
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
exit
|
exit
|
||||||
```
|
```
|
||||||
```sh
|
```sh
|
||||||
start http://192.168.200.84:3002
|
start http://192.168.200.84:3002
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
38
Docker_install.md
Normal file
38
Docker_install.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Добавьте официальный репозиторий Docker:
|
||||||
|
```sh
|
||||||
|
sudo apt-get update &&
|
||||||
|
sudo apt-get install ca-certificates curl &&
|
||||||
|
sudo install -m 0755 -d /etc/apt/keyrings &&
|
||||||
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc &&
|
||||||
|
sudo chmod a+r /etc/apt/keyrings/docker.asc &&
|
||||||
|
echo \
|
||||||
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
||||||
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null &&
|
||||||
|
sudo apt-get update
|
||||||
|
```
|
||||||
|
Раз у тебя Linux Mint то нужно будет поменять:
|
||||||
|
```conf
|
||||||
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu xia stable
|
||||||
|
```
|
||||||
|
на
|
||||||
|
```conf
|
||||||
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
```
|
||||||
|
|
||||||
|
Если Docker не установлен, установим его:
|
||||||
|
```sh
|
||||||
|
sudo apt update && sudo apt upgrade -y &&
|
||||||
|
sudo apt install -y docker.io docker-compose-plugin &&
|
||||||
|
sudo systemctl enable --now docker
|
||||||
|
```
|
||||||
|
Проверим версию:
|
||||||
|
```sh
|
||||||
|
docker --version &&
|
||||||
|
docker compose version
|
||||||
|
```
|
||||||
@ -6,7 +6,12 @@ Connect to the required server:
|
|||||||
```sh
|
```sh
|
||||||
ssh administrator@10.101.1.3 -p 22
|
ssh administrator@10.101.1.3 -p 22
|
||||||
```
|
```
|
||||||
|
Connect to CCALM Turkish infrastructure:
|
||||||
|
```sh
|
||||||
|
ssh igor@156.244.31.209 -p 2200
|
||||||
|
```
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
## Install haproxy
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update && sudo apt-get install haproxy -y
|
sudo apt-get update && sudo apt-get install haproxy -y
|
||||||
````
|
````
|
||||||
@ -19,7 +24,7 @@ sudo cp /etc/haproxy/haproxy.cfg{,.bak}
|
|||||||
mcedit /etc/haproxy/haproxy.cfg
|
mcedit /etc/haproxy/haproxy.cfg
|
||||||
```
|
```
|
||||||
В конец файла добавляем пока только для перенаправления (для балансироки больше IP адресов):
|
В конец файла добавляем пока только для перенаправления (для балансироки больше IP адресов):
|
||||||
|
```conf
|
||||||
frontend frontend-http
|
frontend frontend-http
|
||||||
bind *:80
|
bind *:80
|
||||||
mode http
|
mode http
|
||||||
@ -81,7 +86,7 @@ default_backend b-RabbitMQ
|
|||||||
backend b-RabbitMQ
|
backend b-RabbitMQ
|
||||||
mode tcp
|
mode tcp
|
||||||
server srv1 10.10.16.21:20000
|
server srv1 10.10.16.21:20000
|
||||||
|
```
|
||||||
Для перенаправления незащищённого HTTP трафика можно: xxxxxxxxxxxxxxx
|
Для перенаправления незащищённого HTTP трафика можно: xxxxxxxxxxxxxxx
|
||||||
|
|
||||||
Для использования SSL и перенаправляние по обычному сокету для начала нужно настроить pem файл объеденив crt и key (и незабыть изменить порт Apache с 433)
|
Для использования SSL и перенаправляние по обычному сокету для начала нужно настроить pem файл объеденив crt и key (и незабыть изменить порт Apache с 433)
|
||||||
|
|||||||
@ -138,7 +138,7 @@ ui = true
|
|||||||
|
|
||||||
4. Создайте systemd-сервис для Vault:
|
4. Создайте systemd-сервис для Vault:
|
||||||
```sh
|
```sh
|
||||||
sudo tee /etc/systemd/system/vault.service > /dev/null <<EOF
|
sudo tee /etc/systemd/system/vault.service > /dev/null <<'EOF'
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=HashiCorp Vault
|
Description=HashiCorp Vault
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
@ -266,7 +266,7 @@ server.ssl.key-store-password M4yh4
|
|||||||
Создаю файл политик
|
Создаю файл политик
|
||||||
```sh
|
```sh
|
||||||
cd ~ &&
|
cd ~ &&
|
||||||
sudo tee jwt-policy.hcl > /dev/null <<EOF
|
sudo tee jwt-policy.hcl > /dev/null <<'EOF'
|
||||||
path "org-ccalm/data/jwt" {
|
path "org-ccalm/data/jwt" {
|
||||||
capabilities = ["create", "read", "update", "delete", "list"]
|
capabilities = ["create", "read", "update", "delete", "list"]
|
||||||
}
|
}
|
||||||
|
|||||||
412
POSTFIX_DOVECOT_install.md
Normal file
412
POSTFIX_DOVECOT_install.md
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
Подключаемся к нужному серверу:
|
||||||
|
```sh
|
||||||
|
ssh root@bigfoottrade.kz -p 2222
|
||||||
|
```
|
||||||
|
|
||||||
|
Настройка почты на POSTFIX(агент передачи почты) И DOVECOT на основе https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ и https://www.youtube.com/watch?v=_pbH7GsVTrw&t=649s и https://www.youtube.com/watch?v=VptKRBVeCMo
|
||||||
|
****************************************************************************************************
|
||||||
|
## Устанавливаю Postfixadmin
|
||||||
|
Для начала создаю базу в PostgreSQL с базой mail и пользователем mailreader и паролем major!reader1
|
||||||
|
```sh
|
||||||
|
cd /var/www/html &&
|
||||||
|
sudo wget https://yer.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz &&
|
||||||
|
sudo tar xzvf "PostfixAdmin 3.3.8.tar.gz"
|
||||||
|
```
|
||||||
|
Создаю временный каталог в /var/www/html/PostfixAdmin/templates_c
|
||||||
|
правлю способ подключения к базе:
|
||||||
|
```sh
|
||||||
|
sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
||||||
|
```
|
||||||
|
На это:
|
||||||
|
```conf
|
||||||
|
$CONF['configured'] = true;
|
||||||
|
|
||||||
|
$CONF['database_type'] = 'pgsql';
|
||||||
|
$CONF['database_host'] = 'localhost';
|
||||||
|
$CONF['database_user'] = 'mailreader';
|
||||||
|
$CONF['database_password'] = 'major!reader1';
|
||||||
|
$CONF['database_name'] = 'mail';
|
||||||
|
|
||||||
|
$CONF['emailcheck_resolve_domain'] = 'NO';
|
||||||
|
```
|
||||||
|
Также нужно поднастроить апачи добавив следующтй код в: sudo mcedit /etc/apache2/apache2.conf ниже того что указывает на <Directory /var/www/>
|
||||||
|
Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/"
|
||||||
|
<Directory "/var/www/html/PostfixAdmin/public/">
|
||||||
|
Options FollowSymLinks
|
||||||
|
AllowOverride None
|
||||||
|
Allow from all
|
||||||
|
Order allow,deny
|
||||||
|
</Directory>
|
||||||
|
Перезагружаю:
|
||||||
|
```sh
|
||||||
|
systemctl restart apache2.service
|
||||||
|
```
|
||||||
|
На последок:
|
||||||
|
```sh
|
||||||
|
sudo chown www-data:www-data -R /var/www/ &&
|
||||||
|
sudo chown www-data:www-data -R /opt/app_api_mobile_v2/mobile_v2
|
||||||
|
```
|
||||||
|
Теперь можно открывать сайт по IP:
|
||||||
|
```sh
|
||||||
|
start http://77.240.38.108/PostfixAdmin/setup.php
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
start https://77.240.38.108/PostfixAdmin/login.php
|
||||||
|
```
|
||||||
|
|
||||||
|
Просит задать пароль, задал такой: 11qazxsw22
|
||||||
|
Результат генерации: $CONF['setup_password'] = '$2y$10$ySo40K0pOn0Q5jLcBoK1yua5JaGXI.NIzTmUVBn1dreTaP2RkZ2My';
|
||||||
|
И добавляем эту стору в: sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
||||||
|
Потом обновляем страницу.
|
||||||
|
Добавляем администратора введя пароль 11qazxsw22 емайл в качестве логина irigm@mail.ru и пароль: 33edcvfr44
|
||||||
|
Можно взглянуть базу там должны создаться таблицы
|
||||||
|
|
||||||
|
Теперь осталось пойти на Postfixadmin, завести сначала почтовый домен, потом ящик и протестировать нашу почтовую систему, например, с помощью Thunderbird. Отправляем письма себе, другому пользователю в нашей системе. Потом пробуем послать себе письма с Gmail, Yandex, Mail.ru и наблюдаем за поведением системы, изучая логи. Основная настройка почты завершена. Теперь необходимо настроить DKIM, SPF, чтобы другие почтовые системы воспринимали нас как доверенных отправителей. Но об этом я расскажу в другом посте.
|
||||||
|
|
||||||
|
******************************************************************************************
|
||||||
|
## Устанавливаю Postfix популярный почтовый агент (MTA) с открытым исходным кодом, который можно использовать для маршрутизации и доставки почты в системе Linux.
|
||||||
|
```sh
|
||||||
|
sudo apt-get update &&
|
||||||
|
sudo apt install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql mailutils postgresql
|
||||||
|
```
|
||||||
|
Ссохраняю оригинальный конфигурационный файл:
|
||||||
|
```sh
|
||||||
|
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
|
||||||
|
```
|
||||||
|
Конфигурирую:
|
||||||
|
```sh
|
||||||
|
sudo dpkg-reconfigure postfix
|
||||||
|
```
|
||||||
|
Настраиваю так:
|
||||||
|
```conf
|
||||||
|
General type of mail configuration?: Internet Site
|
||||||
|
System mail name: example.com (не mail.example.com)
|
||||||
|
Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах sammy)
|
||||||
|
Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
|
||||||
|
Force synchronous updates on mail queue?: No
|
||||||
|
Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||||
|
Mailbox size limit: 0
|
||||||
|
Local address extension character: +
|
||||||
|
Internet protocols to use: all
|
||||||
|
```
|
||||||
|
Можно взглянуть на настройки так: sudo mcedit /etc/postfix/main.cf
|
||||||
|
|
||||||
|
Через pgAdmin создаю нового пользователя mailreader с паролем major!reader1
|
||||||
|
CREATE DATABASE mail WITH OWNER mailreader;
|
||||||
|
Добавляю: sudo mc edit /etc/postgresql/12/main/pg_hba.conf:
|
||||||
|
local postfix postfix md5
|
||||||
|
Перезагружаю базу данных:
|
||||||
|
service postgresql reload
|
||||||
|
|
||||||
|
Создаём файл для обращения к базе с алиасами: sudo mcedit /etc/postfix/pgsql_virtual_alias_maps.cf https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/
|
||||||
|
```conf
|
||||||
|
user = mailreader
|
||||||
|
password = major!reader1
|
||||||
|
hosts = localhost
|
||||||
|
dbname = mail
|
||||||
|
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
|
||||||
|
```
|
||||||
|
Создаём файл для получения информации по виртуальным доменам: sudo mcedit /etc/postfix/pgsql_virtual_domains_maps.cf
|
||||||
|
```conf
|
||||||
|
user = mailreader
|
||||||
|
password = major!reader1
|
||||||
|
hosts = localhost
|
||||||
|
dbname = mail
|
||||||
|
query = SELECT domain FROM domain WHERE domain='%u'
|
||||||
|
```
|
||||||
|
Создаём файл для получения информации о почтовых ящиках: sudo mcedit /etc/postfix/pgsql_virtual_mailbox_maps.cf
|
||||||
|
```conf
|
||||||
|
user = mailreader
|
||||||
|
password = major!reader1
|
||||||
|
hosts = localhost
|
||||||
|
dbname = mail
|
||||||
|
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
|
||||||
|
```
|
||||||
|
Прописываем ранее созданные файлы в: sudo mcedit /etc/postfix/main.cf добавив строчки:
|
||||||
|
```conf
|
||||||
|
virtual_mailbox_base = /home/mail
|
||||||
|
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
|
||||||
|
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
|
||||||
|
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
|
||||||
|
virtual_minimum_uid = 1024
|
||||||
|
virtual_uid_maps = static:1024
|
||||||
|
virtual_gid_maps = static:1024
|
||||||
|
virtual_transport = dovecot
|
||||||
|
dovecot_destination_recipient_limit = 1
|
||||||
|
```
|
||||||
|
Настройки безопасного соединения (также просто вставил в конец файла):
|
||||||
|
```conf
|
||||||
|
smtpd_sasl_auth_enable = yes
|
||||||
|
smtpd_sasl_exceptions_networks = $mynetworks
|
||||||
|
smtpd_sasl_security_options = noanonymous
|
||||||
|
broken_sasl_auth_clients = yes
|
||||||
|
smtpd_sasl_type = dovecot
|
||||||
|
smtpd_sasl_path = private/auth
|
||||||
|
smtpd_tls_cert_file = /etc/ssl/certs/bigfoottrade_kz.crt
|
||||||
|
smtpd_tls_key_file = /etc/ssl/private/bigfoottrade_kz.key
|
||||||
|
|
||||||
|
smtpd_tls_security_level = encrypt
|
||||||
|
```
|
||||||
|
Похоже опции что ниже устарели:
|
||||||
|
```conf
|
||||||
|
smtpd_use_tls = yes
|
||||||
|
smtp_use_tls = yes
|
||||||
|
smtp_tls_security_level = encrypt
|
||||||
|
smtp_enforce_tls=yes
|
||||||
|
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
|
|
||||||
|
tls_preempt_cipherlist = yes
|
||||||
|
smtpd_tls_mandatory_ciphers = high
|
||||||
|
tls_high_cipherlist = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256
|
||||||
|
|
||||||
|
smtpd_tls_auth_only = yes
|
||||||
|
smtpd_helo_required = yes
|
||||||
|
smtp_tls_security_level = may
|
||||||
|
smtp_tls_ciphers = export
|
||||||
|
smtp_tls_loglevel = 1
|
||||||
|
smtp_tls_CApath = /etc/ssl/certs
|
||||||
|
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
||||||
|
```
|
||||||
|
Снимаем комментарии со следующих строк, или дописываем их при необходимости: sudo mcedit /etc/postfix/master.cf (просто добавил в конец файла)
|
||||||
|
```conf
|
||||||
|
submission inet n - n - - smtpd
|
||||||
|
-o syslog_name=postfix/submission
|
||||||
|
-o smtpd_tls_security_level=may
|
||||||
|
-o smtpd_sasl_auth_enable=yes
|
||||||
|
-o smtpd_sasl_type=dovecot
|
||||||
|
-o smtpd_sasl_path=/var/spool/postfix/private/auth
|
||||||
|
-o smtpd_sasl_security_options=noanonymous
|
||||||
|
-o smtpd_sasl_local_domain=$myhostname
|
||||||
|
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
||||||
|
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
|
||||||
|
-o milter_macro_daemon_name=ORIGINATING
|
||||||
|
|
||||||
|
smtps inet n - n - - smtpd
|
||||||
|
-o syslog_name=postfix/smtps
|
||||||
|
-o smtpd_tls_wrappermode=yes
|
||||||
|
-o smtpd_sasl_auth_enable=yes
|
||||||
|
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
||||||
|
|
||||||
|
dovecot unix - n n - - pipe
|
||||||
|
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
|
||||||
|
```
|
||||||
|
Проверяю на наличие ошибок:
|
||||||
|
```sh
|
||||||
|
sudo postfix check
|
||||||
|
```
|
||||||
|
В конфигурационном файле прописывается список дорменов которых обслуживает данный агент доставки.
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/postfix/main.cf
|
||||||
|
```
|
||||||
|
Примерно таокое:
|
||||||
|
mydestination = $myhostname, your_domain, localhost.com, , localhost
|
||||||
|
|
||||||
|
Перезапускаем:
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart postfix
|
||||||
|
```
|
||||||
|
******************************************************************************************
|
||||||
|
## Настройка dovecot the Secure IMAP server
|
||||||
|
Теперь устанавливаю и настраиваю Dovecot:
|
||||||
|
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd
|
||||||
|
Создаю пользователя и каталог
|
||||||
|
sudo adduser --system --no-create-home --uid 1024 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
|
||||||
|
mkdir /home/mail
|
||||||
|
chown vmail:vmail /home/mail
|
||||||
|
chmod 700 /home/mail
|
||||||
|
Смотрим что мы создали:
|
||||||
|
groups vmail
|
||||||
|
|
||||||
|
Настраиваем способ хранения сообщений: sudo mcedit /etc/dovecot/conf.d/10-mail.conf
|
||||||
|
mail_location = maildir:/home/mail/%d/%u/
|
||||||
|
|
||||||
|
|
||||||
|
Настраиваем слушателя аутентификации: sudo mcedit /etc/dovecot/conf.d/10-master.conf
|
||||||
|
service auth {
|
||||||
|
unix_listener auth-userdb {
|
||||||
|
mode = 0600
|
||||||
|
user = vmail
|
||||||
|
group = vmail
|
||||||
|
}
|
||||||
|
unix_listener /var/spool/postfix/private/auth {
|
||||||
|
mode = 0666
|
||||||
|
user = postfix
|
||||||
|
group = postfix
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Настраиваем аутентификацию в Dovecot: sudo mcedit /etc/dovecot/conf.d/10-auth.conf
|
||||||
|
Комментируем одну строку, снимаем комментарий с другой.
|
||||||
|
#!include auth-system.conf.ext
|
||||||
|
!include auth-sql.conf.ext
|
||||||
|
|
||||||
|
Настраиваем шифрование Dovecot: sudo mcedit /etc/dovecot/conf.d/10-ssl.conf
|
||||||
|
ssl = required
|
||||||
|
ssl_cert = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
||||||
|
ssl_key = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
||||||
|
|
||||||
|
|
||||||
|
Указываем Dovecot автоматически создавать каталоги при первом подключении клиента: sudo mcedit /etc/dovecot/conf.d/15-lda.conf
|
||||||
|
lda_mailbox_autocreate = yes
|
||||||
|
|
||||||
|
Теперь настройка подключения к базе данных. Открываем файл: sudo mcedit /etc/dovecot/conf.d/auth-sql.conf.ext
|
||||||
|
|
||||||
|
passdb {
|
||||||
|
driver = sql
|
||||||
|
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||||
|
}
|
||||||
|
userdb {
|
||||||
|
driver = sql
|
||||||
|
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Создаём файл с настройками для работы с PostgreSQL: sudo mcedit /etc/dovecot/dovecot-sql.conf.ext
|
||||||
|
driver = pgsql
|
||||||
|
connect = host=localhost dbname=mail user=mailreader password=major!reader1
|
||||||
|
default_pass_scheme = MD5-CRYPT
|
||||||
|
password_query = SELECT password FROM mailbox WHERE username = '%u'
|
||||||
|
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
||||||
|
user_query = SELECT CONCAT('/home/mail/',LOWER(domain),'/',LOWER(maildir)),1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
||||||
|
|
||||||
|
Наконец, указываем интерфейсы, на которых будет слушать наш Dovecot: sudo mcedit /etc/dovecot/dovecot.conf
|
||||||
|
listen = *
|
||||||
|
|
||||||
|
Также добавить в этот файл следующую настройку:
|
||||||
|
service stats {
|
||||||
|
unix_listener stats-reader {
|
||||||
|
user = vmail
|
||||||
|
group = vmail
|
||||||
|
mode = 0660
|
||||||
|
}
|
||||||
|
|
||||||
|
unix_listener stats-writer {
|
||||||
|
user = vmail
|
||||||
|
group = vmail
|
||||||
|
mode = 0660
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Настройка Dovecot завершена. Осталось сгенерировать сертификаты или получить их с помощью Let's Encrypt. Для тестовых целей сгенерируем самоподписанные сертификаты. Мы их положим в /etc/postfix:
|
||||||
|
openssl req -new -x509 -days 730 -nodes -out /etc/postfix/public.pem -keyout /etc/postfix/private.pem -subj "/C=RU/ST=Msk/L=Msk/O=Local/OU=Mail/CN=fedor.bigfoottrade.kz"
|
||||||
|
|
||||||
|
Добавляем пользователю "dovecot" группу "mail":
|
||||||
|
usermod -a -G dovecot mail
|
||||||
|
usermod -a -G vmail mail
|
||||||
|
|
||||||
|
sudo systemctl enable dovecot
|
||||||
|
sudo systemctl start dovecot
|
||||||
|
|
||||||
|
Теперь можно тестировать:
|
||||||
|
Сначала необходимо убедиться в том, что почта доходит до нового ящика. Сделать это можно с помощью тестового письма:
|
||||||
|
echo "Test mail" | mail -s "Test mail" admin@mqtt.kz
|
||||||
|
Сообщение должно появиться в папке /home/mail/mqtt.kz/admin/new/. Если письма нет, проверьте лог Postfix:
|
||||||
|
tail -f /var/log/mail.log
|
||||||
|
|
||||||
|
В настройках DNS настроил А запись на только что настроенный сервер:
|
||||||
|
mail.mqtt.kz
|
||||||
|
Также нужно настроить dkim чтобы почта не попадала в спам, записав открытый ключ шифрования в TXT запсь
|
||||||
|
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
## Настройка dkim для проверки что письмо действительно было отправлено с заявленного домена
|
||||||
|
Созданно по этой инструкции:
|
||||||
|
```sh
|
||||||
|
start https://fornex.com/ru/help/dkim-postfix/
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo apt-get install opendkim opendkim-tools
|
||||||
|
```
|
||||||
|
mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim
|
||||||
|
opendkim-genkey -D /etc/postfix/dkim/ -d mqtt.kz -s mail
|
||||||
|
opendkim-genkey -D /etc/postfix/dkim/ -d geovizor.com -s mail
|
||||||
|
|
||||||
|
mv mail.private mail.mqtt.kz.private
|
||||||
|
mv mail.private mail.geovizor.com.private
|
||||||
|
|
||||||
|
mv mail.txt mail.mqtt.kz.txt
|
||||||
|
mv mail.txt mail.geovizor.com.txt
|
||||||
|
|
||||||
|
Создаём файл mcedit keytable и записываем в него ключи
|
||||||
|
#имя_ключа домен:селектор:/путь/до/ключа
|
||||||
|
mail._domainkey.mqtt.kz mqtt.kz:mail:/etc/postfix/dkim/mail.mqtt.kz.private
|
||||||
|
mail._domainkey.geovizor.com geovizor.com:mail:/etc/postfix/dkim/mail.geovizor.com.private
|
||||||
|
Создаём файл mcedit signingtable и записывает что чем подписывать
|
||||||
|
#домен имя ключа
|
||||||
|
*@mqtt.kz mail._domainkey.mqtt.kz
|
||||||
|
*@geovizor.com mail._domainkey.geovizor.com
|
||||||
|
Задаю права доступа:
|
||||||
|
chown root:opendkim *
|
||||||
|
chmod u=rw,g=r,o= *
|
||||||
|
chmod g+r /etc/postfix/dkim/
|
||||||
|
Смотрим содержимое TXT файла для записи в домен
|
||||||
|
cat /etc/postfix/dkim/mail.mqtt.kz.txt
|
||||||
|
cat /etc/postfix/dkim/mail.geovizor.com.txt
|
||||||
|
И добавляю в DNS на хостинг:
|
||||||
|
Name: mail._domainkey.mqtt.kz
|
||||||
|
Text: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrObJxHaUBVtR4XzNuFzoa449K3l1z6+Mi4e83rFbBYmBZRYjiJn5h2PeiK1i2IpSaEKn32AlPy5gB7Ej41Fhg6LXswwRhhfvz8vClhRbUKT4I8oPBj9WZr7+4aohG1Vcks1q9cgmwdcGN+6qhKq/DJ+AC1TirNrEpSvR6JAqd4G70aJazI9su0bY5cbIv0pZGezvt+2pwJw6xpb501KudTFE8FTHxB51aLkgYS257MkovSu+qlVzPjoOsZcOY7hQtF8WB/Czod0QN05Ob/N3Qc/k2E4tpvxgokLXdYl/8KBMLMX9cRfIVbv+atuo59VFKHYIGD8Kom6akORkFeIlQIDAQAB
|
||||||
|
|
||||||
|
Заменяем все настройки на то что ниже: sudo mcedit /etc/opendkim.conf
|
||||||
|
AutoRestart Yes
|
||||||
|
AutoRestartRate 10/1h
|
||||||
|
PidFile /var/run/opendkim/opendkim.pid
|
||||||
|
Mode sv
|
||||||
|
Syslog yes
|
||||||
|
SyslogSuccess yes
|
||||||
|
LogWhy yes
|
||||||
|
UserID opendkim:opendkim
|
||||||
|
Socket inet:8891@localhost
|
||||||
|
Umask 022
|
||||||
|
Canonicalization relaxed/relaxed
|
||||||
|
Selector default
|
||||||
|
MinimumKeyBits 1024
|
||||||
|
KeyFile /etc/postfix/dkim/${MAIL_DOMAIN}.private
|
||||||
|
KeyTable /etc/postfix/dkim/keytable
|
||||||
|
SigningTable refile:/etc/postfix/dkim/signingtable
|
||||||
|
|
||||||
|
|
||||||
|
Добавляем в конец: sudo mcedit /etc/postfix/main.cf
|
||||||
|
milter_default_action = accept
|
||||||
|
milter_protocol = 2
|
||||||
|
smtpd_milters = inet:localhost:8891
|
||||||
|
non_smtpd_milters = inet:localhost:8891
|
||||||
|
|
||||||
|
sudo systemctl start opendkim
|
||||||
|
sudo systemctl enable opendkim
|
||||||
|
service opendkim restart
|
||||||
|
service postfix restart
|
||||||
|
|
||||||
|
********** Настройка SPF **********
|
||||||
|
Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail).
|
||||||
|
Содержимое TXT файла для записи в домен
|
||||||
|
Имя домена пустое:
|
||||||
|
Содержимое: v=spf1 +a +mx -all
|
||||||
|
|
||||||
|
|
||||||
|
********** Настройка DMARC https://www.unisender.com/ru/glossary/dmarc/**********
|
||||||
|
Содержимое TXT файла для записи в домен
|
||||||
|
Имя домена: _dmarc
|
||||||
|
Содержимое: v=DMARC1; p=none;
|
||||||
|
|
||||||
|
!!! Для тестирования сервера на прохождение спам фильтра пишем письмо на https://www.mail-tester.com/ или https://spamtest.smtp.bz !!!
|
||||||
|
********** web интерфейс для postfix — Roundcube **********
|
||||||
|
cd /var/www/html
|
||||||
|
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
|
||||||
|
tar xzvf roundcubemail-1.6.5-complete.tar.gz
|
||||||
|
chown -R www-data:www-data /var/www/html/Roundcube
|
||||||
|
sudo apt-get install aspell aspell-en dbconfig-common fonts-glyphicons-halflings javascript-common libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-codemirror libjs-jquery libjs-jquery-minicolors libjs-jquery-ui libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php7.4-pspell
|
||||||
|
https://bigfoottrade.kz/Roundcube/installer/
|
||||||
|
language — ru_RU
|
||||||
|
Предварительно создать базу:
|
||||||
|
```sh
|
||||||
|
start https://bigfoottrade.kz/Roundcube
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
start http://77.240.38.108/Roundcube
|
||||||
|
```
|
||||||
@ -32,7 +32,7 @@ cd /opt/postgres-exporter
|
|||||||
Создаю файл с настройками
|
Создаю файл с настройками
|
||||||
```sh
|
```sh
|
||||||
cd /opt/postgres-exporter/ &&
|
cd /opt/postgres-exporter/ &&
|
||||||
cat > docker-compose.yml <<EOF
|
cat > docker-compose.yml <<'EOF'
|
||||||
services:
|
services:
|
||||||
postgres-exporter:
|
postgres-exporter:
|
||||||
image: quay.io/prometheuscommunity/postgres-exporter
|
image: quay.io/prometheuscommunity/postgres-exporter
|
||||||
@ -52,7 +52,7 @@ EOF
|
|||||||
Создаём файл с настройками
|
Создаём файл с настройками
|
||||||
```sh
|
```sh
|
||||||
cd /opt/postgres-exporter/ &&
|
cd /opt/postgres-exporter/ &&
|
||||||
cat > postgres_exporter.yml <<EOF
|
cat > postgres_exporter.yml <<'EOF'
|
||||||
collectors:
|
collectors:
|
||||||
- database
|
- database
|
||||||
- index
|
- index
|
||||||
|
|||||||
@ -272,7 +272,50 @@ sudo apt-get install phppgadmin
|
|||||||
|
|
||||||
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
|
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
|
||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
Установка pgAdmin4 в Linux Mint 20.04 (inxi -S) Проверить версию линукса: cat /etc/os-release у меня выдало: NAME="Linux Mint" VERSION="20.3 (Una)"
|
Установка pgAdmin4 через докер контейнер
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /opt/pgAdmin4 &&
|
||||||
|
sudo chmod -R 777 /opt/pgAdmin4 &&
|
||||||
|
sudo chown -R $USER:$USER /opt/pgAdmin4
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/pgAdmin4 &&
|
||||||
|
cat > docker-compose.yml <<'EOF'
|
||||||
|
services:
|
||||||
|
pgadmin:
|
||||||
|
image: dpage/pgadmin4
|
||||||
|
container_name: pgadmin4
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "5050:80"
|
||||||
|
environment:
|
||||||
|
PGADMIN_DEFAULT_EMAIL: irigm@mail.ru
|
||||||
|
PGADMIN_DEFAULT_PASSWORD: 123456
|
||||||
|
volumes:
|
||||||
|
- pgadmin_data:/var/lib/pgadmin
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pgadmin_data:
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Запуск контейнера
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/pgAdmin4 &&
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/pgAdmin4 &&
|
||||||
|
sudo docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
|
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
|
||||||
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
||||||
|
|||||||
@ -4,6 +4,10 @@
|
|||||||
```sh
|
```sh
|
||||||
ssh igor@192.168.200.85 -p 22
|
ssh igor@192.168.200.85 -p 22
|
||||||
```
|
```
|
||||||
|
Connect to CCALM Turkish infrastructure:
|
||||||
|
```sh
|
||||||
|
ssh igor@156.244.31.209 -p 2200
|
||||||
|
```
|
||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
DynDNS на PowerDNS авторитативный сервер тот кто отвечает на те домены которые в его базе (рекурсивный присылает авторитативному запросы)
|
DynDNS на PowerDNS авторитативный сервер тот кто отвечает на те домены которые в его базе (рекурсивный присылает авторитативному запросы)
|
||||||
|
|
||||||
@ -15,189 +19,48 @@ DNS на Ubuntu 24.04 согласно инстркции https://phoenixnap.com
|
|||||||
sudo apt-get update &&
|
sudo apt-get update &&
|
||||||
sudo apt-get upgrade -y
|
sudo apt-get upgrade -y
|
||||||
```
|
```
|
||||||
|
Install PowerDNS server
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get install pdns-server -y &&
|
sudo apt-get install pdns-server -y
|
||||||
sudo apt-get install pdns-backend-pgsql -y &&
|
|
||||||
sudo apt-get install pdns-backend-sqlite
|
|
||||||
```
|
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
Для использования SQLIte копируем схему из https://doc.powerdns.com/authoritative/backends/generic-sqlite3.html
|
|
||||||
```sh
|
|
||||||
sudo apt-get install pdns-backend-sqlite3 -y
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo apt install sqlite3 -y
|
|
||||||
```
|
|
||||||
|
|
||||||
Create database:
|
|
||||||
```sh
|
|
||||||
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 ".databases" &&
|
|
||||||
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
|
|
||||||
```
|
|
||||||
Create database structure
|
|
||||||
```sql
|
|
||||||
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 <<EOF
|
|
||||||
|
|
||||||
PRAGMA foreign_keys = 1;
|
|
||||||
|
|
||||||
CREATE TABLE domains (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
name VARCHAR(255) NOT NULL COLLATE NOCASE,
|
|
||||||
master VARCHAR(128) DEFAULT NULL,
|
|
||||||
last_check INTEGER DEFAULT NULL,
|
|
||||||
type VARCHAR(8) NOT NULL,
|
|
||||||
notified_serial INTEGER DEFAULT NULL,
|
|
||||||
account VARCHAR(40) DEFAULT NULL,
|
|
||||||
options VARCHAR(65535) DEFAULT NULL,
|
|
||||||
catalog VARCHAR(255) DEFAULT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX name_index ON domains(name);
|
|
||||||
CREATE INDEX catalog_idx ON domains(catalog);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE records (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
domain_id INTEGER DEFAULT NULL,
|
|
||||||
name VARCHAR(255) DEFAULT NULL,
|
|
||||||
type VARCHAR(10) DEFAULT NULL,
|
|
||||||
content VARCHAR(65535) DEFAULT NULL,
|
|
||||||
ttl INTEGER DEFAULT NULL,
|
|
||||||
prio INTEGER DEFAULT NULL,
|
|
||||||
disabled BOOLEAN DEFAULT 0,
|
|
||||||
ordername VARCHAR(255),
|
|
||||||
auth BOOL DEFAULT 1,
|
|
||||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE INDEX records_lookup_idx ON records(name, type);
|
|
||||||
CREATE INDEX records_lookup_id_idx ON records(domain_id, name, type);
|
|
||||||
CREATE INDEX records_order_idx ON records(domain_id, ordername);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE supermasters (
|
|
||||||
ip VARCHAR(64) NOT NULL,
|
|
||||||
nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
|
|
||||||
account VARCHAR(40) NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE comments (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
domain_id INTEGER NOT NULL,
|
|
||||||
name VARCHAR(255) NOT NULL,
|
|
||||||
type VARCHAR(10) NOT NULL,
|
|
||||||
modified_at INT NOT NULL,
|
|
||||||
account VARCHAR(40) DEFAULT NULL,
|
|
||||||
comment VARCHAR(65535) NOT NULL,
|
|
||||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE INDEX comments_idx ON comments(domain_id, name, type);
|
|
||||||
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE domainmetadata (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
domain_id INT NOT NULL,
|
|
||||||
kind VARCHAR(32) COLLATE NOCASE,
|
|
||||||
content TEXT,
|
|
||||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE cryptokeys (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
domain_id INT NOT NULL,
|
|
||||||
flags INT NOT NULL,
|
|
||||||
active BOOL,
|
|
||||||
published BOOL DEFAULT 1,
|
|
||||||
content TEXT,
|
|
||||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE tsigkeys (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
name VARCHAR(255) COLLATE NOCASE,
|
|
||||||
algorithm VARCHAR(50) COLLATE NOCASE,
|
|
||||||
secret VARCHAR(255)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
|
||||||
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
Configure database connection from PowerDNS to SQLIte
|
|
||||||
```sh
|
|
||||||
sudo tee /etc/powerdns/pdns.d/pdns.local.sqlite.conf <<EOF
|
|
||||||
launch=gsqlite3
|
|
||||||
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
Set access level to file
|
|
||||||
```sh
|
|
||||||
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.sqlite.conf &&
|
|
||||||
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.sqlite.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
In PowerDNS configured to auto read config from dir /etc/powerdns/pdns.d/
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
|
|
||||||
Настраиваю соединение с базой данных в:
|
|
||||||
```sh
|
|
||||||
sudo tee /etc/powerdns/pdns.d/pdns.local.gpgsql.conf <<EOF
|
|
||||||
launch+=gpgsql
|
|
||||||
# gmysql parameters
|
|
||||||
gpgsql-host=127.0.0.1
|
|
||||||
gpgsql-port=5432
|
|
||||||
gpgsql-dbname=powerdns
|
|
||||||
gpgsql-user=powerdns
|
|
||||||
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
|
|
||||||
gpgsql-dnssec=no
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
Set access level to file:
|
|
||||||
```sh
|
|
||||||
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf &&
|
|
||||||
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
|
||||||
```
|
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
На всякий случай делаю резервные копии исходных файлов настрое:
|
На всякий случай делаю резервные копии исходных файлов настрое:
|
||||||
```sh
|
```sh
|
||||||
cd /etc/powerdns &&
|
cd /etc/powerdns &&
|
||||||
sudo cp named.conf named.conf.bak &&
|
sudo cp named.conf named.conf.bak &&
|
||||||
sudo cp pdns.conf pdns.conf.bak
|
sudo cp pdns.conf pdns.conf.bak
|
||||||
```
|
```
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Как настроить MariaDB базу для использования в PowerDNS смотри:
|
||||||
|
[Установка PowerDNS с MariaDB](./PowerDNS_install_MarinaDB.md)
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Как настроить SQLite3 базу для использования в PowerDNS смотри:
|
||||||
|
[Установка PowerDNS с MariaDB](./PowerDNS_install_SQIite3.md)
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Как настроить PostgreSQL базу для использования в PowerDNS смотри:
|
||||||
|
[Установка PowerDNS с MariaDB](./PowerDNS_install_PostgreSQL.md)
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
|
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo mcedit /etc/powerdns/pdns.conf
|
sudo mcedit /etc/powerdns/pdns.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Write new settings rr
|
Write new settings rr
|
||||||
```sh
|
```sh
|
||||||
cd /etc/powerdns/ &&
|
cd /etc/powerdns/ &&
|
||||||
sudo tee pdns.conf > /dev/null <<EOF
|
sudo tee pdns.conf > /dev/null <<'EOF'
|
||||||
|
|
||||||
allow-axfr-ips=127.0.0.1 #slave server ip
|
allow-axfr-ips=127.0.0.1
|
||||||
also-notify=127.0.0.1 #slave server ip
|
also-notify=127.0.0.1
|
||||||
|
|
||||||
include-dir=/etc/powerdns/pdns.d
|
include-dir=/etc/powerdns/pdns.d
|
||||||
launch=
|
launch=
|
||||||
|
|
||||||
local-address=192.168.200.85,127.0.0.1
|
local-address=156.244.31.209,127.0.0.1
|
||||||
local-port=5300
|
local-port=53
|
||||||
|
|
||||||
log-dns-details=on
|
log-dns-details=on
|
||||||
log-dns-queries=yes
|
log-dns-queries=yes
|
||||||
@ -205,7 +68,7 @@ log-timestamp=yes
|
|||||||
loglevel=4
|
loglevel=4
|
||||||
|
|
||||||
webserver=yes
|
webserver=yes
|
||||||
webserver-address=192.168.200.85
|
webserver-address=156.244.31.209
|
||||||
webserver-allow-from=::/0, 0.0.0.0/0
|
webserver-allow-from=::/0, 0.0.0.0/0
|
||||||
webserver-port=8081
|
webserver-port=8081
|
||||||
|
|
||||||
@ -240,7 +103,7 @@ start http://192.168.200.85:8081
|
|||||||
Если что-то не получается то проверяем кто слушает на порту 53
|
Если что-то не получается то проверяем кто слушает на порту 53
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get install net-tools -y &&
|
sudo apt-get install net-tools -y &&
|
||||||
sudo netstat -tulnp | grep :5300
|
sudo netstat -tulnp | grep :53
|
||||||
```
|
```
|
||||||
|
|
||||||
Создаём зону и добавляем запись
|
Создаём зону и добавляем запись
|
||||||
@ -248,15 +111,69 @@ start http://192.168.200.85:8081
|
|||||||
sudo pdnsutil create-zone test ns1.test &&
|
sudo pdnsutil create-zone test ns1.test &&
|
||||||
sudo pdnsutil add-record test ccalm A 192.168.200.184
|
sudo pdnsutil add-record test ccalm A 192.168.200.184
|
||||||
```
|
```
|
||||||
|
Добавляем зону и две записи
|
||||||
|
```sh
|
||||||
|
sudo pdnsutil create-zone geovizor.top ns1.geovizor.top &&
|
||||||
|
sudo pdnsutil replace-rrset geovizor.top @ SOA "ns1.geovizor.top admin.geovizor.top $(date +%Y%m%d)01 10800 3600 604800 3600" &&
|
||||||
|
sudo pdnsutil add-record geovizor.top ns1 A 156.244.31.209 &&
|
||||||
|
sudo pdnsutil add-record geovizor.top @ A 156.244.31.209 &&
|
||||||
|
sudo pdnsutil add-record geovizor.top * A 156.244.31.209
|
||||||
|
```
|
||||||
|
Выше задал такие настройки как
|
||||||
|
```conf
|
||||||
|
Refresh = 10800 (3 часа)
|
||||||
|
Retry = 3600 (1 час)
|
||||||
|
Expire = 604800 (1 неделя)
|
||||||
|
Minimum = 3600 (1 час)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Проверим список зон
|
Проверим список зон
|
||||||
```sh
|
```sh
|
||||||
sudo pdnsutil list-all-zones &&
|
sudo pdnsutil list-all-zones &&
|
||||||
sudo pdnsutil list-zone test
|
sudo pdnsutil list-zone geovizor.top
|
||||||
```
|
```
|
||||||
Проверяем отвечалет ли:
|
Проверяем отвечалет ли:
|
||||||
```sh
|
```sh
|
||||||
dig @127.0.0.1 -p 5300 ccalm.test A
|
dig @127.0.0.1 -p 5300 ccalm.test A
|
||||||
```
|
```
|
||||||
|
```sh
|
||||||
|
dig @127.0.0.1 -p 53 geovizor.top A
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
dig @156.244.31.209 -p 53 geovizor.top A
|
||||||
|
```
|
||||||
|
|
||||||
|
### Теперь можно настроить HTTPS для взаимодействия через API с сервером для динамического задания IP адресов
|
||||||
|
|
||||||
|
```sh
|
||||||
|
API_KEY="40c89f2a-e2f3-4ff8-a245-3547111f6677"
|
||||||
|
SERVER="156.244.31.209"
|
||||||
|
ZONE="geovizor.top"
|
||||||
|
|
||||||
|
curl -X PATCH \
|
||||||
|
-H "X-API-Key: $API_KEY" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
"http://$SERVER:8081/api/v1/servers/localhost/zones/$ZONE" \
|
||||||
|
-d '{
|
||||||
|
"rrsets": [
|
||||||
|
{
|
||||||
|
"name": "*.geovizor.top.",
|
||||||
|
"type": "A",
|
||||||
|
"ttl": 3600,
|
||||||
|
"changetype": "REPLACE",
|
||||||
|
"records": [
|
||||||
|
{
|
||||||
|
"content": "5.251.54.197",
|
||||||
|
"disabled": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## ********** Настройка рекурсивного DNS от PowerDNS Recursor 4.9.3 порту 53 будет обрабатывать запросы с локальной машины **********
|
## ********** Настройка рекурсивного DNS от PowerDNS Recursor 4.9.3 порту 53 будет обрабатывать запросы с локальной машины **********
|
||||||
Документация: https://doc.powerdns.com/recursor/index.html
|
Документация: https://doc.powerdns.com/recursor/index.html
|
||||||
@ -613,7 +530,7 @@ exit
|
|||||||
```
|
```
|
||||||
Создаю файл службы:
|
Создаю файл службы:
|
||||||
```sh
|
```sh
|
||||||
sudo tee /etc/systemd/system/powerdns-admin.service > /dev/null <<EOF
|
sudo tee /etc/systemd/system/powerdns-admin.service > /dev/null <<'EOF'
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=PowerDNS-Admin Service
|
Description=PowerDNS-Admin Service
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|||||||
145
PowerDNS_install_MarinaDB.md
Normal file
145
PowerDNS_install_MarinaDB.md
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-backend-mysql -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database to MarinaDB
|
||||||
|
```sh
|
||||||
|
sudo mysql -u root -p
|
||||||
|
```
|
||||||
|
Create new user into MarinaDB
|
||||||
|
```sh
|
||||||
|
CREATE USER 'poweruser'@'%' IDENTIFIED BY 'uFqqXQEQwErjkQga6rcz';
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'poweruser'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
REVOKE ALL PRIVILEGES ON *.* FROM 'powerdns'@'%';
|
||||||
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON poweruser.* TO 'poweruser'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
SELECT User, Host FROM mysql.user WHERE User = 'poweruser';
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database
|
||||||
|
```sh
|
||||||
|
CREATE DATABASE powerdns;
|
||||||
|
GRANT ALL PRIVILEGES ON powerdns.* TO 'poweruser'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
```
|
||||||
|
|
||||||
|
Create file with SQL to create database, text from https://doc.powerdns.com/authoritative/backends/generic-mysql.html
|
||||||
|
```sql
|
||||||
|
sudo mysql -u poweruser -p powerdns <<'EOF'
|
||||||
|
|
||||||
|
CREATE TABLE domains (
|
||||||
|
id INT AUTO_INCREMENT,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
master VARCHAR(128) DEFAULT NULL,
|
||||||
|
last_check INT DEFAULT NULL,
|
||||||
|
type VARCHAR(8) NOT NULL,
|
||||||
|
notified_serial INT UNSIGNED DEFAULT NULL,
|
||||||
|
account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
|
||||||
|
options VARCHAR(64000) DEFAULT NULL,
|
||||||
|
catalog VARCHAR(255) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX name_index ON domains(name);
|
||||||
|
CREATE INDEX catalog_idx ON domains(catalog);
|
||||||
|
|
||||||
|
CREATE TABLE records (
|
||||||
|
id BIGINT AUTO_INCREMENT,
|
||||||
|
domain_id INT DEFAULT NULL,
|
||||||
|
name VARCHAR(255) DEFAULT NULL,
|
||||||
|
type VARCHAR(10) DEFAULT NULL,
|
||||||
|
content VARCHAR(64000) DEFAULT NULL,
|
||||||
|
ttl INT DEFAULT NULL,
|
||||||
|
prio INT DEFAULT NULL,
|
||||||
|
disabled TINYINT(1) DEFAULT 0,
|
||||||
|
ordername VARCHAR(255) BINARY DEFAULT NULL,
|
||||||
|
auth TINYINT(1) DEFAULT 1,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE INDEX nametype_index ON records(name,type);
|
||||||
|
CREATE INDEX domain_id ON records(domain_id);
|
||||||
|
CREATE INDEX ordername ON records (ordername);
|
||||||
|
|
||||||
|
CREATE TABLE supermasters (
|
||||||
|
ip VARCHAR(64) NOT NULL,
|
||||||
|
nameserver VARCHAR(255) NOT NULL,
|
||||||
|
account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
|
||||||
|
PRIMARY KEY (ip, nameserver)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE TABLE comments (
|
||||||
|
id INT AUTO_INCREMENT,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
type VARCHAR(10) NOT NULL,
|
||||||
|
modified_at INT NOT NULL,
|
||||||
|
account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
|
||||||
|
comment TEXT CHARACTER SET 'utf8' NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE INDEX comments_name_type_idx ON comments (name, type);
|
||||||
|
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||||
|
|
||||||
|
CREATE TABLE domainmetadata (
|
||||||
|
id INT AUTO_INCREMENT,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
kind VARCHAR(32),
|
||||||
|
content TEXT,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
|
||||||
|
|
||||||
|
CREATE TABLE cryptokeys (
|
||||||
|
id INT AUTO_INCREMENT,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
flags INT NOT NULL,
|
||||||
|
active BOOL,
|
||||||
|
published BOOL DEFAULT 1,
|
||||||
|
content TEXT,
|
||||||
|
PRIMARY KEY(id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||||
|
|
||||||
|
CREATE TABLE tsigkeys (
|
||||||
|
id INT AUTO_INCREMENT,
|
||||||
|
name VARCHAR(255),
|
||||||
|
algorithm VARCHAR(50),
|
||||||
|
secret VARCHAR(255),
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) Engine=InnoDB CHARACTER SET 'latin1';
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Проверяем создалась ли таблицы в базе
|
||||||
|
```sh
|
||||||
|
mysql -u poweruser -p -e "SHOW TABLES FROM powerdns;"
|
||||||
|
```
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Configure database connection from PowerDNS to SQLIte
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/powerdns/pdns.d/pdns.local.mysql.conf <<'EOF'
|
||||||
|
launch=gmysql
|
||||||
|
gmysql-host=127.0.0.1
|
||||||
|
gmysql-port=3306
|
||||||
|
gmysql-user=poweruser
|
||||||
|
gmysql-password=uFqqXQEQwErjkQga6rcz
|
||||||
|
gmysql-dbname=powerdns
|
||||||
|
gmysql-dnssec=yes
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Set access level to file
|
||||||
|
```sh
|
||||||
|
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.mysql.conf &&
|
||||||
|
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.mysql.conf
|
||||||
|
```
|
||||||
25
PowerDNS_install_PostgreSQL.md
Normal file
25
PowerDNS_install_PostgreSQL.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-backend-pgsql -y
|
||||||
|
```
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
|
||||||
|
Настраиваю соединение с базой данных в:
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/powerdns/pdns.d/pdns.local.gpgsql.conf <<'EOF'
|
||||||
|
launch+=gpgsql
|
||||||
|
# gmysql parameters
|
||||||
|
gpgsql-host=127.0.0.1
|
||||||
|
gpgsql-port=5432
|
||||||
|
gpgsql-dbname=powerdns
|
||||||
|
gpgsql-user=powerdns
|
||||||
|
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
|
||||||
|
gpgsql-dnssec=no
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Set access level to file:
|
||||||
|
```sh
|
||||||
|
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf &&
|
||||||
|
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
||||||
|
```
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
133
PowerDNS_install_SQIite3.md
Normal file
133
PowerDNS_install_SQIite3.md
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-backend-sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Для использования SQLIte копируем схему из https://doc.powerdns.com/authoritative/backends/generic-sqlite3.html
|
||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-backend-sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database:
|
||||||
|
```sh
|
||||||
|
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 ".databases" &&
|
||||||
|
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
|
||||||
|
```
|
||||||
|
Create database structure
|
||||||
|
```sql
|
||||||
|
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 <<'EOF'
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = 1;
|
||||||
|
|
||||||
|
CREATE TABLE domains (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
master VARCHAR(128) DEFAULT NULL,
|
||||||
|
last_check INTEGER DEFAULT NULL,
|
||||||
|
type VARCHAR(8) NOT NULL,
|
||||||
|
notified_serial INTEGER DEFAULT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
options VARCHAR(65535) DEFAULT NULL,
|
||||||
|
catalog VARCHAR(255) DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX name_index ON domains(name);
|
||||||
|
CREATE INDEX catalog_idx ON domains(catalog);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE records (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER DEFAULT NULL,
|
||||||
|
name VARCHAR(255) DEFAULT NULL,
|
||||||
|
type VARCHAR(10) DEFAULT NULL,
|
||||||
|
content VARCHAR(65535) DEFAULT NULL,
|
||||||
|
ttl INTEGER DEFAULT NULL,
|
||||||
|
prio INTEGER DEFAULT NULL,
|
||||||
|
disabled BOOLEAN DEFAULT 0,
|
||||||
|
ordername VARCHAR(255),
|
||||||
|
auth BOOL DEFAULT 1,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX records_lookup_idx ON records(name, type);
|
||||||
|
CREATE INDEX records_lookup_id_idx ON records(domain_id, name, type);
|
||||||
|
CREATE INDEX records_order_idx ON records(domain_id, ordername);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE supermasters (
|
||||||
|
ip VARCHAR(64) NOT NULL,
|
||||||
|
nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
account VARCHAR(40) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE comments (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
type VARCHAR(10) NOT NULL,
|
||||||
|
modified_at INT NOT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
comment VARCHAR(65535) NOT NULL,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX comments_idx ON comments(domain_id, name, type);
|
||||||
|
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE domainmetadata (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
kind VARCHAR(32) COLLATE NOCASE,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE cryptokeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
flags INT NOT NULL,
|
||||||
|
active BOOL,
|
||||||
|
published BOOL DEFAULT 1,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE tsigkeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) COLLATE NOCASE,
|
||||||
|
algorithm VARCHAR(50) COLLATE NOCASE,
|
||||||
|
secret VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure database connection from PowerDNS to SQLIte
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/powerdns/pdns.d/pdns.local.sqlite.conf <<'EOF'
|
||||||
|
launch=gsqlite3
|
||||||
|
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Set access level to file
|
||||||
|
```sh
|
||||||
|
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.sqlite.conf &&
|
||||||
|
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.sqlite.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
In PowerDNS configured to auto read config from dir /etc/powerdns/pdns.d/
|
||||||
@ -1,7 +1,14 @@
|
|||||||
Устанавливаем PowerDNS через Docker Compose в директорию /opt/powerdnsa
|
# Устанавливаем авторитативный PowerDNS через Docker Compose в директорию /opt/powerdnsa
|
||||||
|
|
||||||
Эту версию пробовал: https://hub.docker.com/r/powerdns/pdns-auth-48
|
Эту версию пробовал: https://hub.docker.com/r/powerdns/pdns-auth-48
|
||||||
PowerDNS Authoritative
|
PowerDNS Authoritative
|
||||||
|
|
||||||
|
Connect to CCALM Turkish infrastructure:
|
||||||
|
```sh
|
||||||
|
ssh igor@156.244.31.209 -p 2200
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ssh-keygen -R 192.168.200.85
|
ssh-keygen -R 192.168.200.85
|
||||||
```
|
```
|
||||||
@ -22,6 +29,94 @@ ssh igor@192.168.200.85 -p 22
|
|||||||
cd /opt/powerdnsa/data
|
cd /opt/powerdnsa/data
|
||||||
```
|
```
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Как настроить MariaDB базу для использования в PowerDNS смотри:
|
||||||
|
[Установка PowerDNS с MariaDB](./PowerDNS_install_MarinaDB.md)
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Похоже что environment не работаею и нужно конфигурить через
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa
|
||||||
|
sudo tee docker-compose.yml > /dev/null <<'EOF'
|
||||||
|
services:
|
||||||
|
powerdns:
|
||||||
|
image: powerdns/pdns-auth-48
|
||||||
|
container_name: powerdns
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: "host"
|
||||||
|
environment:
|
||||||
|
- PDNS_LOCAL_ADDRESS=127.0.0.1,156.244.31.209
|
||||||
|
- PDNS_LAUNCH=gmysql
|
||||||
|
- PDNS_API=yes
|
||||||
|
- PDNS_API_KEY=0aa08433-52a9-4611-9eed-5c5a08a508f0
|
||||||
|
- PDNS_MASTER=yes
|
||||||
|
- PDNS_ALLOW_AXFR_IPS=127.0.0.1
|
||||||
|
- PDNS_WEBSERVER=yes
|
||||||
|
- PDNS_WEBSERVER_ADDRESS=127.0.0.1,156.244.31.209
|
||||||
|
- PDNS_WEBSERVER_PORT=8081
|
||||||
|
# MariaDB connection settings
|
||||||
|
- PDNS_GMYSQL_HOST=127.0.0.1 # MariaDB на localhost хоста
|
||||||
|
- PDNS_GMYSQL_PORT=3306
|
||||||
|
- PDNS_GMYSQL_USER=poweruser
|
||||||
|
- PDNS_GMYSQL_PASSWORD=uFqqXQEQwErjkQga6rcz
|
||||||
|
- PDNS_GMYSQL_DBNAME=powerdns
|
||||||
|
- PDNS_GMYSQL_DNSSEC=yes
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa &&
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa &&
|
||||||
|
sudo docker-compose down
|
||||||
|
```
|
||||||
|
Проверяем какие порты открыты:
|
||||||
|
```sh
|
||||||
|
sudo netstat -tuln
|
||||||
|
```
|
||||||
|
Проверяем что страница работает
|
||||||
|
```sh
|
||||||
|
curl -v http://localhost:8081
|
||||||
|
```
|
||||||
|
|
||||||
|
Смотрим что в логе
|
||||||
|
```sh
|
||||||
|
sudo docker logs powerdns
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
curl -H "X-API-Key: 0aa08433-52a9-4611-9eed-5c5a08a508f0" http://localhost:8081/api/v1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
пробуем добавить тестовую зону по ключу
|
||||||
|
```sh
|
||||||
|
curl -X POST -H "X-API-Key: 0aa08433-52a9-4611-9eed-5c5a08a508f0" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"name": "localhost.", "kind": "Master", "dnssec": false, "soa_edit": "", "soa_edit_api": "DEFAULT"}' \
|
||||||
|
http://localhost:8081/api/v1/servers/localhost/zones
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Инициализируем базу данных так как сам контейнер её не создаёт
|
Инициализируем базу данных так как сам контейнер её не создаёт
|
||||||
```sh
|
```sh
|
||||||
sudo apt install sqlite3 -y
|
sudo apt install sqlite3 -y
|
||||||
@ -34,7 +129,7 @@ sudo sqlite3 /opt/powerdnsa/data/pdns.sqlite3 ".databases"
|
|||||||
|
|
||||||
Create database structure
|
Create database structure
|
||||||
```sql
|
```sql
|
||||||
sudo sqlite3 /opt/powerdnsa/data/pdns.sqlite3 <<EOF
|
sudo sqlite3 /opt/powerdnsa/data/pdns.sqlite3 <<'EOF'
|
||||||
|
|
||||||
PRAGMA foreign_keys = 1;
|
PRAGMA foreign_keys = 1;
|
||||||
|
|
||||||
@ -147,7 +242,7 @@ sudo chmod -R 777 /opt/powerdnsa/data
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /opt/powerdnsa
|
cd /opt/powerdnsa
|
||||||
sudo tee docker-compose.yml > /dev/null <<EOF
|
sudo tee docker-compose.yml > /dev/null <<'EOF'
|
||||||
services:
|
services:
|
||||||
powerdns:
|
powerdns:
|
||||||
image: powerdns/pdns-auth-48
|
image: powerdns/pdns-auth-48
|
||||||
357
Traefik_install.md
Normal file
357
Traefik_install.md
Normal file
@ -0,0 +1,357 @@
|
|||||||
|
Открываю нужный сервер
|
||||||
|
```sh
|
||||||
|
wsl
|
||||||
|
```
|
||||||
|
Или такой:
|
||||||
|
```sh
|
||||||
|
ssh igor@192.168.200.85 -p 22
|
||||||
|
```
|
||||||
|
|
||||||
|
# Установка Traefik на Linux Mint / Ubuntu
|
||||||
|
|
||||||
|
## 📥 Шаг 1. Установка зависимостей
|
||||||
|
Убедитесь, что установлены `wget` и `systemd`:
|
||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install wget
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Шаг 2. Скачать последнюю версию Traefik
|
||||||
|
Проверь актуальную версию на: [Traefik Releases](https://github.com/traefik/traefik/releases)
|
||||||
|
|
||||||
|
Пример для версии `v3.0.0`:
|
||||||
|
```bash
|
||||||
|
cd ~ &&
|
||||||
|
wget https://github.com/traefik/traefik/releases/download/v3.3.4/traefik_v3.3.4_linux_amd64.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Шаг 3. Распаковка и установка
|
||||||
|
```bash
|
||||||
|
cd ~ &&
|
||||||
|
tar -xvzf traefik_v3.3.4_linux_amd64.tar.gz &&
|
||||||
|
sudo mv traefik /usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверь версию:
|
||||||
|
```bash
|
||||||
|
traefik version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Шаг 4. Создание директории и базового конфига
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /etc/traefik &&
|
||||||
|
cd /etc/traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример `traefik.yml`
|
||||||
|
```sh
|
||||||
|
cd /etc/traefik &&
|
||||||
|
sudo tee /etc/traefik/traefik.yml > /dev/null <<'EOF'
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
http:
|
||||||
|
redirections:
|
||||||
|
entryPoint:
|
||||||
|
to: websecure
|
||||||
|
scheme: https
|
||||||
|
permanent: true
|
||||||
|
websecure:
|
||||||
|
address: ":443"
|
||||||
|
traefik:
|
||||||
|
address: ":8080"
|
||||||
|
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
insecure: true
|
||||||
|
|
||||||
|
providers:
|
||||||
|
file:
|
||||||
|
filename: "/etc/traefik/dynamic.yml"
|
||||||
|
|
||||||
|
# Настройка сертификатов (пример с Let's Encrypt)
|
||||||
|
certificatesResolvers:
|
||||||
|
myresolver:
|
||||||
|
acme:
|
||||||
|
email: "your-email@example.com"
|
||||||
|
storage: "/etc/traefik/acme.json"
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: web
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: DEBUG
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример `dynamic.yml`
|
||||||
|
```sh
|
||||||
|
cd /etc/traefik &&
|
||||||
|
sudo tee /etc/traefik/dynamic.yml > /dev/null <<'EOF'
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
dashboard:
|
||||||
|
entryPoints:
|
||||||
|
- traefik
|
||||||
|
rule: "Host(`localhost`)"
|
||||||
|
service: api@internal
|
||||||
|
|
||||||
|
ccalm-api-auth:
|
||||||
|
rule: "Host(`ccalm.test`) && PathPrefix(`/api/authorization/v02/`)"
|
||||||
|
service: org_ccalm_api_authorization_v02
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
middlewares:
|
||||||
|
- strip-auth-prefix
|
||||||
|
|
||||||
|
ccalm-dbms:
|
||||||
|
rule: "Host(`ccalm.test`) && PathPrefix(`/api/dbms/v09/`)"
|
||||||
|
service: org_ccalm_dbms_v09
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
middlewares:
|
||||||
|
- strip-dbms-prefix
|
||||||
|
|
||||||
|
ccalm-login:
|
||||||
|
rule: "Host(`ccalm.test`) && PathPrefix(`/login/`)"
|
||||||
|
service: org_ccalm_login_v01
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
|
||||||
|
ccalm-default:
|
||||||
|
rule: "Host(`ccalm.test`)"
|
||||||
|
service: org_ccalm
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
|
||||||
|
powerdns:
|
||||||
|
rule: "Host(`powerdns.local`)"
|
||||||
|
service: local_powerdns
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls: {}
|
||||||
|
|
||||||
|
middlewares:
|
||||||
|
strip-auth-prefix:
|
||||||
|
stripPrefix:
|
||||||
|
prefixes:
|
||||||
|
- "/api/authorization/v02"
|
||||||
|
strip-dbms-prefix:
|
||||||
|
stripPrefix:
|
||||||
|
prefixes:
|
||||||
|
- "/api/dbms/v09"
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
# Бэкенд для local_powerdns
|
||||||
|
local_powerdns:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://192.168.200.85:9191"
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Бэкенд для org_ccalm_api_authorization_v02 (HTTPS с отключенной проверкой SSL)
|
||||||
|
org_ccalm_api_authorization_v02:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "https://192.168.200.184:8082"
|
||||||
|
serversTransport: insecureTransport # Ссылка на транспорт с отключенной проверкой
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Бэкенд для org_ccalm_dbms_v09 (HTTPS с отключенной проверкой SSL)
|
||||||
|
org_ccalm_dbms_v09:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "https://192.168.200.184:8084"
|
||||||
|
serversTransport: insecureTransport
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Бэкенд для org_ccalm_login_v01 (HTTP, без SSL)
|
||||||
|
org_ccalm_login_v01:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://192.168.200.184:3000"
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Бэкенд по умолчанию org_ccalm (HTTPS с отключенной проверкой SSL)
|
||||||
|
org_ccalm:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "https://192.168.200.184:8083"
|
||||||
|
serversTransport: insecureTransport
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Определяем транспорт для отключения проверки SSL
|
||||||
|
serversTransports:
|
||||||
|
insecureTransport:
|
||||||
|
insecureSkipVerify: true
|
||||||
|
|
||||||
|
# Добавляем сертификаты
|
||||||
|
tls:
|
||||||
|
certificates:
|
||||||
|
- certFile: "/etc/traefik/certs/ccalm.test.crt"
|
||||||
|
keyFile: "/etc/traefik/certs/ccalm.test.key"
|
||||||
|
- certFile: "/etc/traefik/certs/powerdns.local.crt"
|
||||||
|
keyFile: "/etc/traefik/certs/powerdns.local.key"
|
||||||
|
- certFile: "/etc/traefik/certs/wildcard.local.crt"
|
||||||
|
keyFile: "/etc/traefik/certs/wildcard.local.key"
|
||||||
|
- certFile: "/etc/traefik/certs/wildcard.test.crt"
|
||||||
|
keyFile: "/etc/traefik/certs/wildcard.test.key"
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Для хранения сертификатов файл:
|
||||||
|
```sh
|
||||||
|
sudo touch /etc/traefik/acme.json &&
|
||||||
|
sudo chmod 600 /etc/traefik/acme.json
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
## ⚙️ Шаг 5. Настройка systemd для автозапуска
|
||||||
|
Создайте файл сервиса:
|
||||||
|
```sh
|
||||||
|
cd /etc/systemd/system &&
|
||||||
|
sudo tee /etc/systemd/system/traefik.service > /dev/null <<'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Traefik
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.yml
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Примените:
|
||||||
|
```sh
|
||||||
|
sudo systemctl daemon-reload &&
|
||||||
|
sudo systemctl enable traefik &&
|
||||||
|
sudo systemctl start traefik &&
|
||||||
|
sudo systemctl status traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔎 Шаг 6. Проверка работы
|
||||||
|
Откройте в браузере:
|
||||||
|
```sh
|
||||||
|
open http://localhost:8080/dashboard/
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ Доступ к дашборду открыт только с localhost. Для удалённого доступа настройте правила.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Готово!
|
||||||
|
Traefik установлен, запущен как сервис и готов к работе.
|
||||||
|
|
||||||
|
Проверяем какие порты слушает:
|
||||||
|
```sh
|
||||||
|
sudo lsof -i -P -n | grep traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo journalctl -u traefik -f
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🐳 Как вариант можно установить через Docker
|
||||||
|
|
||||||
|
|
||||||
|
Если Docker не установлен, установим его:
|
||||||
|
```sh
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
sudo apt install -y docker.io docker-compose
|
||||||
|
sudo systemctl enable --now docker
|
||||||
|
```
|
||||||
|
Проверим версию:
|
||||||
|
```sh
|
||||||
|
docker --version
|
||||||
|
docker-compose --version
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /opt/traefik
|
||||||
|
cd /opt/traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo tee docker-compose.yml > /dev/null <<'EOF'
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:latest
|
||||||
|
container_name: traefik
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "80:80" # HTTP
|
||||||
|
- "443:443" # HTTPS
|
||||||
|
- "8080:8080" # Dashboard
|
||||||
|
volumes:
|
||||||
|
- /etc/traefik:/etc/traefik
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
command:
|
||||||
|
- "--configFile=/etc/traefik/traefik.yml"
|
||||||
|
networks:
|
||||||
|
- traefik-net
|
||||||
|
networks:
|
||||||
|
traefik-net:
|
||||||
|
driver: bridge
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск контейнера
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
Откройте в браузере:
|
||||||
|
```sh
|
||||||
|
open http://192.168.200.85:8080/dashboard/
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo docker logs traefik
|
||||||
|
```
|
||||||
285
Traefik_install_CCALM.md
Normal file
285
Traefik_install_CCALM.md
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
# Устанавливаю Traefik на туречский сервер
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh igor@156.244.31.209 -p 2200
|
||||||
|
```
|
||||||
|
|
||||||
|
# Установка Traefik на Linux Mint / Ubuntu
|
||||||
|
|
||||||
|
## 📥 Шаг 1. Установка зависимостей
|
||||||
|
Убедитесь, что установлены `wget` и `systemd`:
|
||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install wget
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Шаг 2. Скачать последнюю версию Traefik
|
||||||
|
Проверь актуальную версию на: [Traefik Releases](https://github.com/traefik/traefik/releases)
|
||||||
|
|
||||||
|
Пример для версии `v3.0.0`:sudo mc
|
||||||
|
```sh
|
||||||
|
cd ~ &&
|
||||||
|
wget https://github.com/traefik/traefik/releases/download/v3.3.4/traefik_v3.3.4_linux_amd64.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Шаг 3. Распаковка и установка
|
||||||
|
```sh
|
||||||
|
cd ~ &&
|
||||||
|
tar -xvzf traefik_v3.3.4_linux_amd64.tar.gz &&
|
||||||
|
sudo mv traefik /usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверь версию:
|
||||||
|
```sh
|
||||||
|
traefik version
|
||||||
|
```
|
||||||
|
|
||||||
|
```conf
|
||||||
|
Version: 3.3.4
|
||||||
|
Codename: saintnectaire
|
||||||
|
Go version: go1.23.6
|
||||||
|
Built: 2025-02-25T10:11:01Z
|
||||||
|
OS/Arch: linux/amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Шаг 4. Создание директории и базового конфига
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /etc/traefik &&
|
||||||
|
cd /etc/traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример `traefik.yml`
|
||||||
|
```sh
|
||||||
|
cd /etc/traefik &&
|
||||||
|
sudo tee /etc/traefik/traefik.yml > /dev/null <<'EOF'
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
http:
|
||||||
|
redirections:
|
||||||
|
entryPoint:
|
||||||
|
to: websecure
|
||||||
|
scheme: https
|
||||||
|
permanent: true
|
||||||
|
websecure:
|
||||||
|
address: ":443"
|
||||||
|
traefik:
|
||||||
|
address: ":8080"
|
||||||
|
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
insecure: true
|
||||||
|
|
||||||
|
providers:
|
||||||
|
file:
|
||||||
|
filename: "/etc/traefik/dynamic.yml"
|
||||||
|
|
||||||
|
# Настройка сертификатов (пример с Let's Encrypt)
|
||||||
|
certificatesResolvers:
|
||||||
|
myresolver:
|
||||||
|
acme:
|
||||||
|
email: "irigm@mail.ru"
|
||||||
|
storage: "/etc/traefik/acme.json"
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: web
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: DEBUG
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пример `dynamic.yml`
|
||||||
|
```sh
|
||||||
|
cd /etc/traefik &&
|
||||||
|
sudo tee /etc/traefik/dynamic.yml > /dev/null <<'EOF'
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
dashboard:
|
||||||
|
entryPoints:
|
||||||
|
- traefik
|
||||||
|
rule: "Host(`localhost`)"
|
||||||
|
service: api@internal
|
||||||
|
|
||||||
|
geovizor-api-zones:
|
||||||
|
rule: "Host(`geovizor.top`) && PathPrefix(`/api/v1/servers/localhost/zones/`)"
|
||||||
|
service: top_geovizor_api_zones_v01
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
|
||||||
|
geovizor-default:
|
||||||
|
rule: "Host(`geovizor.top`)"
|
||||||
|
service: top_geovizor_default
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certresolver: myresolver
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
top_geovizor_api_zones_v01:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://156.244.31.209:8081"
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Бэкенд по умолчанию top_geovizor
|
||||||
|
top_geovizor_default:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://127.0.0.1:8082"
|
||||||
|
healthCheck:
|
||||||
|
path: "/"
|
||||||
|
interval: "5s"
|
||||||
|
|
||||||
|
# Определяем транспорт для отключения проверки SSL
|
||||||
|
serversTransports:
|
||||||
|
insecureTransport:
|
||||||
|
insecureSkipVerify: true
|
||||||
|
|
||||||
|
# Добавляем сертификаты
|
||||||
|
tls:
|
||||||
|
certificates:
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Для хранения сертификатов файл:
|
||||||
|
```sh
|
||||||
|
sudo touch /etc/traefik/acme.json &&
|
||||||
|
sudo chmod 600 /etc/traefik/acme.json
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
## ⚙️ Шаг 5. Настройка systemd для автозапуска
|
||||||
|
Создайте файл сервиса:
|
||||||
|
```sh
|
||||||
|
cd /etc/systemd/system &&
|
||||||
|
sudo tee /etc/systemd/system/traefik.service > /dev/null <<'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Traefik
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.yml
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Примените:
|
||||||
|
```sh
|
||||||
|
sudo systemctl daemon-reload &&
|
||||||
|
sudo systemctl enable traefik &&
|
||||||
|
sudo systemctl start traefik &&
|
||||||
|
sudo systemctl status traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔎 Шаг 6. Проверка работы
|
||||||
|
Откройте в браузере:
|
||||||
|
```sh
|
||||||
|
open http://localhost:8080/dashboard/
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ Доступ к дашборду открыт только с localhost. Для удалённого доступа настройте правила.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Готово!
|
||||||
|
Traefik установлен, запущен как сервис и готов к работе.
|
||||||
|
|
||||||
|
Проверяем какие порты слушает:
|
||||||
|
```sh
|
||||||
|
sudo lsof -i -P -n | grep traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo journalctl -u traefik -f
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🐳 Как вариант можно установить через Docker
|
||||||
|
|
||||||
|
|
||||||
|
Если Docker не установлен, установим его:
|
||||||
|
```sh
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
sudo apt install -y docker.io docker-compose
|
||||||
|
sudo systemctl enable --now docker
|
||||||
|
```
|
||||||
|
Проверим версию:
|
||||||
|
```sh
|
||||||
|
docker --version
|
||||||
|
docker-compose --version
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /opt/traefik
|
||||||
|
cd /opt/traefik
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo tee docker-compose.yml > /dev/null <<'EOF'
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:latest
|
||||||
|
container_name: traefik
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "80:80" # HTTP
|
||||||
|
- "443:443" # HTTPS
|
||||||
|
- "8080:8080" # Dashboard
|
||||||
|
volumes:
|
||||||
|
- /etc/traefik:/etc/traefik
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
command:
|
||||||
|
- "--configFile=/etc/traefik/traefik.yml"
|
||||||
|
networks:
|
||||||
|
- traefik-net
|
||||||
|
networks:
|
||||||
|
traefik-net:
|
||||||
|
driver: bridge
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск контейнера
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
cd /opt/traefik &&
|
||||||
|
sudo docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
Откройте в браузере:
|
||||||
|
```sh
|
||||||
|
open http://192.168.200.85:8080/dashboard/
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo docker logs traefik
|
||||||
|
```
|
||||||
359
Ubuntu.md
359
Ubuntu.md
@ -46,7 +46,7 @@ sudo usermod -aG vboxsf $USER
|
|||||||
Для добавления ярлыка в меню пуск создав файл *.desktop
|
Для добавления ярлыка в меню пуск создав файл *.desktop
|
||||||
```sh
|
```sh
|
||||||
cd /usr/share/applications
|
cd /usr/share/applications
|
||||||
sudo tee IDEA_JEE.desktop > /dev/null <<EOF
|
sudo tee IDEA_JEE.desktop > /dev/null <<'EOF'
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Encoding=UTF-8
|
Encoding=UTF-8
|
||||||
Name=IDEA_JEE
|
Name=IDEA_JEE
|
||||||
@ -1090,363 +1090,6 @@ https://pro-gram.ru/bridge-utils-ubuntu-server-18-04.html
|
|||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
Отключить IP v6: http://www.linuxrussia.com/2013/05/disable-ipv6-ubuntu.html
|
Отключить IP v6: http://www.linuxrussia.com/2013/05/disable-ipv6-ubuntu.html
|
||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
Настройка почты на POSTFIX(агент передачи почты) И DOVECOT на основе https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ и https://www.youtube.com/watch?v=_pbH7GsVTrw&t=649s и https://www.youtube.com/watch?v=VptKRBVeCMo
|
|
||||||
********** Устанавливаю Postfixadmin **********
|
|
||||||
Для начала создаю базу в PostgreSQL с базой mail и пользователем mailreader и паролем major!reader1
|
|
||||||
cd /var/www/html
|
|
||||||
sudo wget https://yer.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz
|
|
||||||
sudo tar xzvf "PostfixAdmin 3.3.8.tar.gz"
|
|
||||||
Создаю временный каталог в /var/www/html/PostfixAdmin/templates_c
|
|
||||||
правлю способ подключения к базе:
|
|
||||||
sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
|
||||||
На это:
|
|
||||||
$CONF['configured'] = true;
|
|
||||||
|
|
||||||
$CONF['database_type'] = 'pgsql';
|
|
||||||
$CONF['database_host'] = 'localhost';
|
|
||||||
$CONF['database_user'] = 'mailreader';
|
|
||||||
$CONF['database_password'] = 'major!reader1';
|
|
||||||
$CONF['database_name'] = 'mail';
|
|
||||||
|
|
||||||
$CONF['emailcheck_resolve_domain'] = 'NO';
|
|
||||||
|
|
||||||
Также нужно поднастроить апачи добавив следующтй код в: sudo mcedit /etc/apache2/apache2.conf ниже того что указывает на <Directory /var/www/>
|
|
||||||
Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/"
|
|
||||||
<Directory "/var/www/html/PostfixAdmin/public/">
|
|
||||||
Options FollowSymLinks
|
|
||||||
AllowOverride None
|
|
||||||
Allow from all
|
|
||||||
Order allow,deny
|
|
||||||
</Directory>
|
|
||||||
Перезагружаю:
|
|
||||||
systemctl restart apache2.service
|
|
||||||
На последок:
|
|
||||||
sudo chown www-data:www-data -R /var/www/
|
|
||||||
sudo chown www-data:www-data -R /opt/app_api_mobile_v2/mobile_v2
|
|
||||||
Теперь можно открывать сайт по IP: http://77.240.38.108/PostfixAdmin/setup.php
|
|
||||||
Просит задать пароль, задал такой: 11qazxsw22
|
|
||||||
Результат генерации: $CONF['setup_password'] = '$2y$10$ySo40K0pOn0Q5jLcBoK1yua5JaGXI.NIzTmUVBn1dreTaP2RkZ2My';
|
|
||||||
И добавляем эту стору в: sudo mcedit /srv/http/PostfixAdmin/config.inc.php
|
|
||||||
Потом обновляем страницу.
|
|
||||||
Добавляем администратора введя пароль 11qazxsw22 емайл в качестве логина irigm@mail.ru и пароль: 33edcvfr44
|
|
||||||
Можно взглянуть базу там должны создаться таблицы
|
|
||||||
|
|
||||||
Теперь осталось пойти на Postfixadmin, завести сначала почтовый домен, потом ящик и протестировать нашу почтовую систему, например, с помощью Thunderbird. Отправляем письма себе, другому пользователю в нашей системе. Потом пробуем послать себе письма с Gmail, Yandex, Mail.ru и наблюдаем за поведением системы, изучая логи. Основная настройка почты завершена. Теперь необходимо настроить DKIM, SPF, чтобы другие почтовые системы воспринимали нас как доверенных отправителей. Но об этом я расскажу в другом посте.
|
|
||||||
|
|
||||||
********** Устанавливаю Postfix **********
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql mailutils postgresql
|
|
||||||
Ссохраняю оригинальный конфигурационный файл:
|
|
||||||
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
|
|
||||||
Конфигурирую:
|
|
||||||
sudo dpkg-reconfigure postfix
|
|
||||||
Настраиваю так:
|
|
||||||
General type of mail configuration?: Internet Site
|
|
||||||
System mail name: example.com (не mail.example.com)
|
|
||||||
Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах sammy)
|
|
||||||
Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
|
|
||||||
Force synchronous updates on mail queue?: No
|
|
||||||
Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
|
||||||
Mailbox size limit: 0
|
|
||||||
Local address extension character: +
|
|
||||||
Internet protocols to use: all
|
|
||||||
|
|
||||||
Можно взглянуть на настройки так: sudo mcedit /etc/postfix/main.cf
|
|
||||||
|
|
||||||
Через pgAdmin создаю нового пользователя mailreader с паролем major!reader1
|
|
||||||
CREATE DATABASE mail WITH OWNER mailreader;
|
|
||||||
Добавляю: sudo mc edit /etc/postgresql/12/main/pg_hba.conf:
|
|
||||||
local postfix postfix md5
|
|
||||||
Перезагружаю базу данных:
|
|
||||||
service postgresql reload
|
|
||||||
|
|
||||||
Создаём файл для обращения к базе с алиасами: sudo mcedit /etc/postfix/pgsql_virtual_alias_maps.cf https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/
|
|
||||||
user = mailreader
|
|
||||||
password = major!reader1
|
|
||||||
hosts = localhost
|
|
||||||
dbname = mail
|
|
||||||
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
|
|
||||||
|
|
||||||
Создаём файл для получения информации по виртуальным доменам: sudo mcedit /etc/postfix/pgsql_virtual_domains_maps.cf
|
|
||||||
user = mailreader
|
|
||||||
password = major!reader1
|
|
||||||
hosts = localhost
|
|
||||||
dbname = mail
|
|
||||||
query = SELECT domain FROM domain WHERE domain='%u'
|
|
||||||
|
|
||||||
Создаём файл для получения информации о почтовых ящиках: sudo mcedit /etc/postfix/pgsql_virtual_mailbox_maps.cf
|
|
||||||
user = mailreader
|
|
||||||
password = major!reader1
|
|
||||||
hosts = localhost
|
|
||||||
dbname = mail
|
|
||||||
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
|
|
||||||
|
|
||||||
Прописываем ранее созданные файлы в: sudo mcedit /etc/postfix/main.cf добавив строчки:
|
|
||||||
virtual_mailbox_base = /home/mail
|
|
||||||
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
|
|
||||||
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
|
|
||||||
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
|
|
||||||
virtual_minimum_uid = 1024
|
|
||||||
virtual_uid_maps = static:1024
|
|
||||||
virtual_gid_maps = static:1024
|
|
||||||
virtual_transport = dovecot
|
|
||||||
dovecot_destination_recipient_limit = 1
|
|
||||||
|
|
||||||
Настройки безопасного соединения (также просто вставил в конец файла):
|
|
||||||
|
|
||||||
smtpd_sasl_auth_enable = yes
|
|
||||||
smtpd_sasl_exceptions_networks = $mynetworks
|
|
||||||
smtpd_sasl_security_options = noanonymous
|
|
||||||
broken_sasl_auth_clients = yes
|
|
||||||
smtpd_sasl_type = dovecot
|
|
||||||
smtpd_sasl_path = private/auth
|
|
||||||
smtpd_tls_cert_file = /etc/ssl/certs/bigfoottrade_kz.crt
|
|
||||||
smtpd_tls_key_file = /etc/ssl/private/bigfoottrade_kz.key
|
|
||||||
|
|
||||||
smtpd_tls_security_level = encrypt
|
|
||||||
Похоже опции что ниже устарели:
|
|
||||||
smtpd_use_tls = yes
|
|
||||||
smtp_use_tls = yes
|
|
||||||
smtp_tls_security_level = encrypt
|
|
||||||
smtp_enforce_tls=yes
|
|
||||||
|
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
|
||||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
|
||||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
|
||||||
smtpd_tls_protocols = !SSLv2, !SSLv3
|
|
||||||
|
|
||||||
tls_preempt_cipherlist = yes
|
|
||||||
smtpd_tls_mandatory_ciphers = high
|
|
||||||
tls_high_cipherlist = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256
|
|
||||||
|
|
||||||
smtpd_tls_auth_only = yes
|
|
||||||
smtpd_helo_required = yes
|
|
||||||
smtp_tls_security_level = may
|
|
||||||
smtp_tls_ciphers = export
|
|
||||||
smtp_tls_loglevel = 1
|
|
||||||
smtp_tls_CApath = /etc/ssl/certs
|
|
||||||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
|
||||||
|
|
||||||
Снимаем комментарии со следующих строк, или дописываем их при необходимости: sudo mcedit /etc/postfix/master.cf (просто добавил в конец файла)
|
|
||||||
|
|
||||||
submission inet n - n - - smtpd
|
|
||||||
-o syslog_name=postfix/submission
|
|
||||||
-o smtpd_tls_security_level=may
|
|
||||||
-o smtpd_sasl_auth_enable=yes
|
|
||||||
-o smtpd_sasl_type=dovecot
|
|
||||||
-o smtpd_sasl_path=/var/spool/postfix/private/auth
|
|
||||||
-o smtpd_sasl_security_options=noanonymous
|
|
||||||
-o smtpd_sasl_local_domain=$myhostname
|
|
||||||
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
|
||||||
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
|
|
||||||
-o milter_macro_daemon_name=ORIGINATING
|
|
||||||
|
|
||||||
smtps inet n - n - - smtpd
|
|
||||||
-o syslog_name=postfix/smtps
|
|
||||||
-o smtpd_tls_wrappermode=yes
|
|
||||||
-o smtpd_sasl_auth_enable=yes
|
|
||||||
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
|
|
||||||
|
|
||||||
dovecot unix - n n - - pipe
|
|
||||||
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
|
|
||||||
|
|
||||||
Проверяю на наличие ошибок:
|
|
||||||
sudo postfix check
|
|
||||||
|
|
||||||
В конфигурационном файле прописывается список дорменов которых обслуживает данный агент доставки.
|
|
||||||
sudo mcedit /etc/postfix/main.cf
|
|
||||||
Примерно таокое:
|
|
||||||
mydestination = $myhostname, your_domain, localhost.com, , localhost
|
|
||||||
|
|
||||||
Перезапускаем:
|
|
||||||
sudo systemctl restart postfix
|
|
||||||
********** Настройка dovecot the Secure IMAP server **********
|
|
||||||
Теперь устанавливаю и настраиваю Dovecot:
|
|
||||||
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd
|
|
||||||
Создаю пользователя и каталог
|
|
||||||
sudo adduser --system --no-create-home --uid 1024 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
|
|
||||||
mkdir /home/mail
|
|
||||||
chown vmail:vmail /home/mail
|
|
||||||
chmod 700 /home/mail
|
|
||||||
Смотрим что мы создали:
|
|
||||||
groups vmail
|
|
||||||
|
|
||||||
Настраиваем способ хранения сообщений: sudo mcedit /etc/dovecot/conf.d/10-mail.conf
|
|
||||||
mail_location = maildir:/home/mail/%d/%u/
|
|
||||||
|
|
||||||
|
|
||||||
Настраиваем слушателя аутентификации: sudo mcedit /etc/dovecot/conf.d/10-master.conf
|
|
||||||
service auth {
|
|
||||||
unix_listener auth-userdb {
|
|
||||||
mode = 0600
|
|
||||||
user = vmail
|
|
||||||
group = vmail
|
|
||||||
}
|
|
||||||
unix_listener /var/spool/postfix/private/auth {
|
|
||||||
mode = 0666
|
|
||||||
user = postfix
|
|
||||||
group = postfix
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Настраиваем аутентификацию в Dovecot: sudo mcedit /etc/dovecot/conf.d/10-auth.conf
|
|
||||||
Комментируем одну строку, снимаем комментарий с другой.
|
|
||||||
#!include auth-system.conf.ext
|
|
||||||
!include auth-sql.conf.ext
|
|
||||||
|
|
||||||
Настраиваем шифрование Dovecot: sudo mcedit /etc/dovecot/conf.d/10-ssl.conf
|
|
||||||
ssl = required
|
|
||||||
ssl_cert = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
|
||||||
ssl_key = </etc/haproxy/ssl/bigfoottrade_kz.pem
|
|
||||||
|
|
||||||
|
|
||||||
Указываем Dovecot автоматически создавать каталоги при первом подключении клиента: sudo mcedit /etc/dovecot/conf.d/15-lda.conf
|
|
||||||
lda_mailbox_autocreate = yes
|
|
||||||
|
|
||||||
Теперь настройка подключения к базе данных. Открываем файл: sudo mcedit /etc/dovecot/conf.d/auth-sql.conf.ext
|
|
||||||
|
|
||||||
passdb {
|
|
||||||
driver = sql
|
|
||||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
|
||||||
}
|
|
||||||
userdb {
|
|
||||||
driver = sql
|
|
||||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Создаём файл с настройками для работы с PostgreSQL: sudo mcedit /etc/dovecot/dovecot-sql.conf.ext
|
|
||||||
driver = pgsql
|
|
||||||
connect = host=localhost dbname=mail user=mailreader password=major!reader1
|
|
||||||
default_pass_scheme = MD5-CRYPT
|
|
||||||
password_query = SELECT password FROM mailbox WHERE username = '%u'
|
|
||||||
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
|
||||||
user_query = SELECT CONCAT('/home/mail/',LOWER(domain),'/',LOWER(maildir)),1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
|
|
||||||
|
|
||||||
Наконец, указываем интерфейсы, на которых будет слушать наш Dovecot: sudo mcedit /etc/dovecot/dovecot.conf
|
|
||||||
listen = *
|
|
||||||
|
|
||||||
Также добавить в этот файл следующую настройку:
|
|
||||||
service stats {
|
|
||||||
unix_listener stats-reader {
|
|
||||||
user = vmail
|
|
||||||
group = vmail
|
|
||||||
mode = 0660
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_listener stats-writer {
|
|
||||||
user = vmail
|
|
||||||
group = vmail
|
|
||||||
mode = 0660
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Настройка Dovecot завершена. Осталось сгенерировать сертификаты или получить их с помощью Let's Encrypt. Для тестовых целей сгенерируем самоподписанные сертификаты. Мы их положим в /etc/postfix:
|
|
||||||
openssl req -new -x509 -days 730 -nodes -out /etc/postfix/public.pem -keyout /etc/postfix/private.pem -subj "/C=RU/ST=Msk/L=Msk/O=Local/OU=Mail/CN=fedor.bigfoottrade.kz"
|
|
||||||
|
|
||||||
Добавляем пользователю "dovecot" группу "mail":
|
|
||||||
usermod -a -G dovecot mail
|
|
||||||
usermod -a -G vmail mail
|
|
||||||
|
|
||||||
sudo systemctl enable dovecot
|
|
||||||
sudo systemctl start dovecot
|
|
||||||
|
|
||||||
Теперь можно тестировать:
|
|
||||||
Сначала необходимо убедиться в том, что почта доходит до нового ящика. Сделать это можно с помощью тестового письма:
|
|
||||||
echo "Test mail" | mail -s "Test mail" admin@mqtt.kz
|
|
||||||
Сообщение должно появиться в папке /home/mail/mqtt.kz/admin/new/. Если письма нет, проверьте лог Postfix:
|
|
||||||
tail -f /var/log/mail.log
|
|
||||||
|
|
||||||
В настройках DNS настроил А запись на только что настроенный сервер:
|
|
||||||
mail.mqtt.kz
|
|
||||||
Также нужно настроить dkim чтобы почта не попадала в спам, записав открытый ключ шифрования в TXT запсь
|
|
||||||
|
|
||||||
********** Настройка dkim ********** https://fornex.com/ru/help/dkim-postfix/
|
|
||||||
sudo apt-get install opendkim opendkim-tools
|
|
||||||
mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim
|
|
||||||
opendkim-genkey -D /etc/postfix/dkim/ -d mqtt.kz -s mail
|
|
||||||
opendkim-genkey -D /etc/postfix/dkim/ -d geovizor.com -s mail
|
|
||||||
|
|
||||||
mv mail.private mail.mqtt.kz.private
|
|
||||||
mv mail.private mail.geovizor.com.private
|
|
||||||
|
|
||||||
mv mail.txt mail.mqtt.kz.txt
|
|
||||||
mv mail.txt mail.geovizor.com.txt
|
|
||||||
Создаём файл mcedit keytable и записываем в него ключи
|
|
||||||
#имя_ключа домен:селектор:/путь/до/ключа
|
|
||||||
mail._domainkey.mqtt.kz mqtt.kz:mail:/etc/postfix/dkim/mail.mqtt.kz.private
|
|
||||||
mail._domainkey.geovizor.com geovizor.com:mail:/etc/postfix/dkim/mail.geovizor.com.private
|
|
||||||
Создаём файл mcedit signingtable и записывает что чем подписывать
|
|
||||||
#домен имя ключа
|
|
||||||
*@mqtt.kz mail._domainkey.mqtt.kz
|
|
||||||
*@geovizor.com mail._domainkey.geovizor.com
|
|
||||||
Задаю права доступа:
|
|
||||||
chown root:opendkim *
|
|
||||||
chmod u=rw,g=r,o= *
|
|
||||||
chmod g+r /etc/postfix/dkim/
|
|
||||||
Смотрим содержимое TXT файла для записи в домен
|
|
||||||
cat /etc/postfix/dkim/mail.mqtt.kz.txt
|
|
||||||
cat /etc/postfix/dkim/mail.geovizor.com.txt
|
|
||||||
И добавляю в DNS на хостинг:
|
|
||||||
Name: mail._domainkey.mqtt.kz
|
|
||||||
Text: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrObJxHaUBVtR4XzNuFzoa449K3l1z6+Mi4e83rFbBYmBZRYjiJn5h2PeiK1i2IpSaEKn32AlPy5gB7Ej41Fhg6LXswwRhhfvz8vClhRbUKT4I8oPBj9WZr7+4aohG1Vcks1q9cgmwdcGN+6qhKq/DJ+AC1TirNrEpSvR6JAqd4G70aJazI9su0bY5cbIv0pZGezvt+2pwJw6xpb501KudTFE8FTHxB51aLkgYS257MkovSu+qlVzPjoOsZcOY7hQtF8WB/Czod0QN05Ob/N3Qc/k2E4tpvxgokLXdYl/8KBMLMX9cRfIVbv+atuo59VFKHYIGD8Kom6akORkFeIlQIDAQAB
|
|
||||||
|
|
||||||
Заменяем все настройки на то что ниже: sudo mcedit /etc/opendkim.conf
|
|
||||||
AutoRestart Yes
|
|
||||||
AutoRestartRate 10/1h
|
|
||||||
PidFile /var/run/opendkim/opendkim.pid
|
|
||||||
Mode sv
|
|
||||||
Syslog yes
|
|
||||||
SyslogSuccess yes
|
|
||||||
LogWhy yes
|
|
||||||
UserID opendkim:opendkim
|
|
||||||
Socket inet:8891@localhost
|
|
||||||
Umask 022
|
|
||||||
Canonicalization relaxed/relaxed
|
|
||||||
Selector default
|
|
||||||
MinimumKeyBits 1024
|
|
||||||
KeyFile /etc/postfix/dkim/${MAIL_DOMAIN}.private
|
|
||||||
KeyTable /etc/postfix/dkim/keytable
|
|
||||||
SigningTable refile:/etc/postfix/dkim/signingtable
|
|
||||||
|
|
||||||
|
|
||||||
Добавляем в конец: sudo mcedit /etc/postfix/main.cf
|
|
||||||
milter_default_action = accept
|
|
||||||
milter_protocol = 2
|
|
||||||
smtpd_milters = inet:localhost:8891
|
|
||||||
non_smtpd_milters = inet:localhost:8891
|
|
||||||
|
|
||||||
sudo systemctl start opendkim
|
|
||||||
sudo systemctl enable opendkim
|
|
||||||
service opendkim restart
|
|
||||||
service postfix restart
|
|
||||||
|
|
||||||
********** Настройка SPF **********
|
|
||||||
Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail).
|
|
||||||
Содержимое TXT файла для записи в домен
|
|
||||||
Имя домена пустое:
|
|
||||||
Содержимое: v=spf1 +a +mx -all
|
|
||||||
|
|
||||||
|
|
||||||
********** Настройка DMARC https://www.unisender.com/ru/glossary/dmarc/**********
|
|
||||||
Содержимое TXT файла для записи в домен
|
|
||||||
Имя домена: _dmarc
|
|
||||||
Содержимое: v=DMARC1; p=none;
|
|
||||||
|
|
||||||
!!! Для тестирования сервера на прохождение спам фильтра пишем письмо на https://www.mail-tester.com/ или https://spamtest.smtp.bz !!!
|
|
||||||
********** web интерфейс для postfix — Roundcube **********
|
|
||||||
cd /var/www/html
|
|
||||||
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
|
|
||||||
tar xzvf roundcubemail-1.6.5-complete.tar.gz
|
|
||||||
chown -R www-data:www-data /var/www/html/Roundcube
|
|
||||||
sudo apt-get install aspell aspell-en dbconfig-common fonts-glyphicons-halflings javascript-common libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-codemirror libjs-jquery libjs-jquery-minicolors libjs-jquery-ui libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php7.4-pspell
|
|
||||||
https://bigfoottrade.kz/Roundcube/installer/
|
|
||||||
language — ru_RU
|
|
||||||
Предварительно создать базу:
|
|
||||||
https://bigfoottrade.kz/Roundcube
|
|
||||||
http://77.240.38.108/Roundcube
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка sendmail для почты на php
|
Установка sendmail для почты на php
|
||||||
sudo apt-get install php-mail
|
sudo apt-get install php-mail
|
||||||
sudo apt-get install sendmail
|
sudo apt-get install sendmail
|
||||||
|
|||||||
94
Unbound_install.md
Normal file
94
Unbound_install.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install unbound -y &&
|
||||||
|
unbound -V
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl start unbound &&
|
||||||
|
sudo systemctl enable unbound &&
|
||||||
|
sudo systemctl status unbound
|
||||||
|
```
|
||||||
|
On Windows configuration is:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
server:
|
||||||
|
verbosity: 4
|
||||||
|
qname-minimisation: no
|
||||||
|
interface: 127.0.0.1
|
||||||
|
do-ip6: no
|
||||||
|
do-ip4: yes
|
||||||
|
logfile: "C:\unbound.log"
|
||||||
|
domain-insecure: "test."
|
||||||
|
domain-insecure: "local."
|
||||||
|
domain-insecure: "pizza."
|
||||||
|
auto-trust-anchor-file: "C:\Program Files\Unbound\root.key"
|
||||||
|
private-address: ::/0
|
||||||
|
harden-dnssec-stripped: no
|
||||||
|
harden-referral-path: no
|
||||||
|
|
||||||
|
# Явно указываем, что зона "test." не локальная
|
||||||
|
local-zone: "test." transparent
|
||||||
|
|
||||||
|
forward-zone:
|
||||||
|
name: "test."
|
||||||
|
forward-addr: 192.168.200.85@5300
|
||||||
|
|
||||||
|
forward-zone:
|
||||||
|
name: "local."
|
||||||
|
forward-addr: 192.168.200.85@5300
|
||||||
|
|
||||||
|
forward-zone:
|
||||||
|
name: "pizza."
|
||||||
|
forward-addr: 10.101.1.31@53
|
||||||
|
|
||||||
|
forward-zone:
|
||||||
|
name: "srv."
|
||||||
|
forward-addr: 10.101.1.31@53
|
||||||
|
|
||||||
|
remote-control:
|
||||||
|
control-enable: yes
|
||||||
|
control-interface: 127.0.0.1
|
||||||
|
control-use-cert: no
|
||||||
|
```
|
||||||
|
|
||||||
|
On Linux conf file devide on anoter files
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/unbound/unbound.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /etc/unbound/ &&
|
||||||
|
sudo mc
|
||||||
|
```
|
||||||
|
|
||||||
|
Получить полный список локальных зон можно так: unbound-control
|
||||||
|
```sh
|
||||||
|
unbound-control list_local_zones
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart unbound
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl status unbound.service
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo journalctl -xeu unbound.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Check on errors:
|
||||||
|
```sh
|
||||||
|
sudo unbound-checkconf /etc/unbound/unbound.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Прописываем для определенного интерфейса:
|
||||||
|
```sh
|
||||||
|
sudo resolvectl dns wlp14s0 127.0.0.1
|
||||||
|
```
|
||||||
|
Проверяем что стоит в качестве NDS резольвера
|
||||||
|
```sh
|
||||||
|
resolvectl status
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user