| by Oregon | No comments

1 db IP cím a hoston -> több VPS

​Gondoltam írok erről, hogy másnak is megkönnyítsem az életét.

Gépek

0. gép: Host OS: Kubuntu 22.04 LTS (192.168.122.1)  
Hogy legyen DE-m is, amivel jobb monitorozni. Használom a  virt-manager-t is, mind lokálban, mind távoli kliensről ssh-n keresztül. Hogy legyen-e X a szerveren témáról, tervezek később írni egy bejegyzést.

Vendég gépek:
1. VPS: Ubuntu Server 22.04 LTS (192.168.122.2)
Név és szolgáltatás: company1_vps LAMP 1.

2. VPS: Ubuntu Server 22.04 LTS (192.168.122.3)
Név és szolgáltatás: company2_vps LAMP 2.

3. VPS: Ubuntu Server 22.04 LTS (192.168.122.4)
Név és szolgáltatás: mail_vps Mail Server

VPS környezet kialakítsa

Mivel van (K)DE a gépen, így az alábbi parancs függőségként hozza magával a szükséges komplett alrendszert:

sudo apt install virt-manager

A virt-manager egy grafikus felület kvm/qemu-hoz.

Mail beállítások

0. gépen 
/etc/nginx/nginx.conf

stream
{
        server
        {
                listen 25;
                proxy_pass 192.168.122.2:25;
        }

        server
        {
                listen 465;
                proxy_pass 192.168.122.2:465;
        }
}

Az ssmtp feltelepít, majd az alábbi értékeket kell beállítani az /etc/ssmtp/ssmtp.conf-ban:

mailhub=192.168.122.2
hostname=hostserver
rewriteDomain=domain.tld

UseTLS=Yes
UseSTARTTLS=Yes

AuthUser=oregon
AuthPass=oregon_password
AuthMethod=LOGIN

Fontos! A mail szerver a host esetén követelje meg az authentikációt. Ő felé ne legyél openrelay, mivel az nginx proxy-n keresztül érkező kéréseknél, a mail szerver már azt látja, hogy a kérés a host lokális ip-jéről jön, így az egész világ felé openrelay lennél.

Az ssmtp nem használja az /etc/aliases állományt, így neki kell megadni közvetlenül ezt az /etc/ssmtp/revaliases fájban:

root:oregon@domain.tld:192.168.122.2
postmaster:oregon@domain.tld:192.168.122.2

Fontos! Ha az /etc/aliases vagy /etc/ssmtp/revaliases fájlokban nincs meg az a rendszer/szolgáltatás user akinek levelet szánják, akkor a mailszerver eldobja. Ilyen lehet a jelenlegi config mellett pl, egy service usere.

Ezzel még  a levélküldés erről a gépről nem fog menni, mert jelen pillanatban két gép is azt gondolja magáról, hogy ő a mail.domain.hu . Az egyik maga a host és a mások a hoston belüli VPS mail szerver. Megoldás, hogy a host gépen az /etc/hosts fájlt szerkesztjük:

192.168.122.2   mail_vps mail.domain.tld

Innentől ő már tudja, hogy nem ő a mail.domain.tld, míg a világ nála fogja keresni és az nginx tovább fogja irányítani a belső VPS-re a kéréseket.

1-2. gépen sima postfix telepítés  egyetlen érték szerkesztése az /etc/postfix/main.cf -ben

relayhost = [192.168.122.2]:25


3. gép (mailserver) lényegi beállítása az alaptelepítéshez képest az /etc/postfix/main.cf -ben:

mynetworks = 127.0.0.0/8 KULSO_HOST_IP1 KULSO_HOST_IP2  192.168.122.3 192.168.122.4 [::ffff:127.0.0.0]/104 [::1]/128

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks

Ez a minimális beállítás kell ahhoz, hogy autentikáció nélkül tudjanak küldeni levelet a mailservernek és majd később relay-ként kifelé is mynetworks-ben megadott ip címek.

Ekkor még nagyon messze vagyunk a mailszerver felkonfigurálásától. Nemrégiben muszashi kolléga csinált a csatornájára erről egy videó sorozatot, én pont ugyanezeket a szolgáltatásokat / alkalmazásokat használom, így a videóit meleg szívvel tudom ajánlani:

Levelező szerver telepítés kezdőknek, Postfix, Dovecot

Webszerver beállítások

Az alábbi leírást követtem: link

Nálam is a  hoston nginx van, míg a VPS-eken Apache. Annyival kiegészíteném, hogy alapvetően elég, ha az nginx a http és https forgalmat egy belső http felé tereli. De! a wordpress ezt rühelli, mert az url-eket felülírja. Így miatta érdemes (muszáj!) a belső gépeket is https-en futtatni, valamint az nginx-et is mint reverse proxy-t odairányítani. 

SSH & Rsync

A host szerveren felvettem az /etc/hosts alá neveket (érdemes a mail szerveren is ezt megtenni)

192.168.122.1   hostserver
192.168.122.2   mail_vps 
192.168.122.3   company1_vps
192.168.122.4   company2_vps

Minden szerveren fent van az ssh publikus kulcsom, a csatlakozás így történik távolról:

ssh doman.tld #(csak didaktikus okból raktam ide)
ssh -J domain.tld mail_vps #(csatlakozás direktbe a mail_vps szerverhez, a -J jump)
...
ssh -J domain.tld company2_vps #(csatlakozás direktbe a company2_vps szerverhez, a -J jump)

Céges backup szerver így éri el a host alatt belső hálón lévő VPS szerver könyvtárait:

rsync -avzhP \
 --delete \
 --delete-after \
 -e "ssh -A oregon@domain.tld  ssh" \
 oregon@company1_vps:/home/oregon/MENTENI_KIVANT_KONYVTAR \
 /home/oregon/MENTES/

Az ssh -A  garantálja, hogy a kulcsom tovább legyen passzolva.
Látható a példában egy belső névre hivatkozom, amit majd a host fog feloldani, mivel korábban beleraktuk az /etc/hosts állományban ezt a bejegyzést.
Az rsync -e kapcsolója teszi lehetővé a köztes parancsok futtatását, ami esetünkben:

 -e "ssh -A oregon@domain.tld  ssh" 

Itt látható ssh-val kezdődik és fejeződik be, ezzel helyettesíti ki a fenti:

ssh -J domain.tld company1_vps

Távoli adminisztráció, életjelek figyelése:

Egyik legkényelmesebb módja a virt-manager használata. Minden másra automatizmusok és ssh. ​