Síťová infrastruktura pro domácí prostředí a malé firmy (SOHO) – síťové služby 1

SOHO - DNSPo základním nastavení sítě, a uvedení do funkčního stavu, se můžeme pustit do instalace základních síťových služeb. Jelikož již máme na centrálních serverech pracující službu SSH, nemusíme potřebné operace provádět fyzicky u těchto strojů. Následující popis se bude vztahovat na služby VPN a DNS, které jsou pro naši infrastrukturu potřebné.Než začneme s instalací a konfigurací jednotlivých služeb, potřebujeme u našeho registrátora DNS domény (my-own-domain.net) a poskytovatelů internetu/hostingu upravit DNS záznamy patřící centrálním serverům. Není to nezbytně nutné, nicméně nám to ulehčí pozdější práci s infrastrukturou. Pokud používáme smyšlený název domény, který jsme neregistrovali, tento krok přeskočíme.

Nastavení DNS záznamů u poskytovatelů

Do DNS záznamů pro naši doménu my-own-domain.net vložíme (většinou přes webové rozhraní registrátora) následující řádky:

IP adresy opět změníme na správné, přidělené od ISP.

Změny otestujeme příkazem ping, případně dig:

Propagování změn DNS záznamů může trvat delší dobu. To je dáno zejména nastavením parametru TTL v hlavičce SOA.

Nyní kontaktujeme poskytovatele internetu/hostingu a necháme zavést tzv. reverzní záznamy. Ty slouží k opačnému překladu, tedy z IP adresy na název. Každému poskytovateli předáme relevantní údaje platné v jeho síti.
ISP A:

ISP B:

Změny opět otestujeme příkazem ping, případně dig. U příkazu dig je ale změna. Jelikož se jedná o reverzní záznam, nemůžeme zadat IP adresu ve formátu 192.168.1.253, ale s obráceným pořadím bajtů a sufixem .in-addr.arpa. Tedy 253.1.168.192.in-addr.arpa.

Nastavení VPN

SOHO - VPNPro bezpečnou komunikaci mezi zařízeními ve všech našich interních sítích, skrze internet, použijeme technologii VPN. Je to možnost, jak směrovat IP sítě s privátním rozsahem přes sítě veřejné. Mimo jiné slouží pro zašifrování komunikace, která je pro případné odchycení nečitelná. Použití VPN je pro propojování síťové infrastruktury standardem.

Nainstalujeme balíček openvpn. Tato operace se týká VPN serveru srv-01 a klientů srv-02, gw-01 a gw-02.

Konfigurace openvpn je umístěna v adresáři /etc/openvpn/.

Nastavení VPN serveru

Nainstalujeme balíček easy-rsa. Ten slouží pro generování a údržbu SSL certifikátů. Po instalaci zkopírujeme adresář obsahující programový kód do /etc/openvpn/. Je to běžná praxe a bývá popsána v mnoha příručkách.

V souboru /etc/openvpn/easy-rsa/vars upravíme následující řádky:

Obsah nastavíme dle vlastního uvážení, nikterak na něm nezáleží. Následně generované certifikáty budeme používat pouze pro naši VPN.
Vytvoříme adresář pro umístění certifikátů a nastavíme bezpečná práva:

Generování certifikátů pro VPN

Nejprve musíme vygenerovat certifikát tzv. certifikační autority (CA). Ten bude používán pro podepisování všech ostatních certifikátů. VPN server si při přihlášení nejprve ověří jeho platnost a následně povolí nebo zakáže připojení. Certifikát CA je ale používán i klienty. Ti si ověřují, zda server, kam se připojují, je opravdu jejich VPN server.

Vytvoříme parametrický soubor pro algoritmus a výměnu klíčů DIFFIE-HELLMAN (trvá to nějakou dobu):

Vygenerujeme a podepíšeme (za pomoci certifikátu CA) SSL certifikát VPN serveru:

Nastavení služby VPN
V adresáři /etc/openvpn/ vytvoříme soubor server.conf s obsahem:

VPN server při startu služby vytvoří síťové rozhraní tun0 s IP adresou 10.128.1.1. Nově bude vytvořena i síť 10.128.1.0/24, která bude určena pouze pro komunikaci zařízení v rámci vytvořeného VPN tunelu. Všechna zařízení připojená do VPN budou mít na rozhraní tun0 IP adresu z tohoto rozsahu. Řádky pushroute obsahují definici našich interních sítí. Při vytvoření VPN tunelu na klientech se tyto řádky využijí k nastavení statického směrování na jednotlivých zařízeních. Pokud tuto vlastnost nechceme využít, tzn., z lokality Praha nebudou moci zařízení komunikovat s lokalitou Bern a opačně, řádky vymažeme.
Vytvoříme adresář /etc/openvpn/ccd/, který bude obsahovat jména zařízení a nastavení identifikující, které interní sítě obsluhují. U těchto zařízení se tedy nebude při výstavbě VPN tunelu nastavovat statické směrování právě do těchto sítí. Pokud nám nebude směrování procházet, jeden z problémů může být právě zde.

Zakomentovaný řádek crl-verify slouží pro případ, že nám někdo odcizí zařízení obsahující klientský VPN certifikát. Pokud zatím nemáme potřebu jej využít, necháme zakomentovaný. Pokud je soubor, na který je odkazováno, prázdný, služba se nespustí. Příklad revokace certifikátu zařízení „mobil-android“:

Pokud je nastavení kompletní, povolíme a spustíme službu openvpn:

Ověříme, zda služba poslouchá na správném portu a protokolu (řádky port 1194proto udp v souboru server.conf):

Případnou změnu portu můžeme provést podobně jako v případě služby SSH.

Zkontrolujeme nastavení rozhraní a směrovací tabulku:

Poznámka: ethtool hlásí rychlost rozhraní 10 Mb/s, ale skutečná se pohybuje výše (záleží na rychlostech fyzických rozhraních, výkonů CPU a vytíženosti obou zařízení):

Zajímá-li nás stav připojených klientských zařízení, můžeme se podívat do souboru /var/log/openvpn-status.log:

Povolení komunikace na firewallu

Jelikož služba čeká na síťovém portu 1194/udp na případná spojení klientských zařízení, musí být tento port nastaven na firewallu jako průchozí.
Do souboru /etc/nftables.conf přidáme k pravidlu povolující službu SSH další řádek:

Firewall restartujeme:

Nastavení VPN klientů

Oproti VPN serveru nastavení klienta vyžaduje minimum operací skládající se z generování certifikátu, jeho umístění na klientské zařízení, úprava konfiguračních souborů a start VPN služby.
Pro stručnost budu popisovat nastavení VPN u internetové brány gw-01. Pro všechna ostatní zařízení, srv-02 a gw-02, je postup obdobný.
Generování certifikátů pro VPN
Pro každé fyzické zařízení, které se bude připojovat k VPN serveru, potřebujeme vygenerovat a podepsat jedinečný SSL certifikát. Tuto operaci provádíme opět na VPN serveru.

Nastavení služby VPN

Na klientském zařízení v adresáři /etc/openvpn/ vytvoříme soubor client.conf s obsahem:

V konfiguračním souboru změníme na řádku remote jméno serveru na náš aktuální. Můžeme použít i IP adresu. Pokud jsme na VPN serveru provedli změnu portu či protokolu, tuto operaci promítneme i zde. Upravíme názvy souborů s certifikáty, řádky keycert. Tyto certifikáty, společně se souborem ca.crt, musíme do adresáře /etc/openvpn/ zkopírovat ze serveru ručně. U souboru /etc/openvpn/gw-01.key změníme oprávnění:

Nyní můžeme povolit a spustit službu openvpn:

Provedeme kontrolu rozhraní tun0:

Firewall

Není potřeba nastavovat. Služba VPN bude pouze iniciovat spojení k serveru.

Poznámka: Pokud budeme chtít omezit komunikaci mezi VPN a ostatními zařízeními v místní síti, vložíme příslušné pravidlo v souboru /etc/nftables.conf do řetězce forward. Např. pokud nechceme, aby byla možná komunikace ze zařízení v naší síti k portu 53/tcp serverů ve VPN, použijeme iifname tun0 tcp dport 53 counter drop.

Nastavení DNS

Jednou z nejdůležitějších služeb všech sítí je DNS, která slouží pro překlad názvů na IP adresy a opačně. Obvykle si vystačíme se standardními DNS servery v internetu nebo od poskytovatele připojení, ale my chceme mít vlastní, kam si budeme zadávat záznamy vztahující se k našim místním doménám (praha.my-own-domain.net a bern.my-own-domain.net).
Popis se nebude věnovat technologii DNSSEC. Podpora ale bude ve službách zapnuta.

Nejdříve nainstalujeme balíček bind (ISC DNS Server), který je součástí většiny distribucí linuxu. Nastavení se bude vztahovat na servery srv-01, net-01 a net-02, proto provedeme instalaci na všechny tyto servery. Na server srv-02 službu nasazovat nebudeme, pouze v případě, že bychom chtěly vytvořit „failover cluster“ (nebudu popisovat).

Zjednodušené schéma, jak komunikují jednotlivé služby v rámci DNS je na následujícím obrázku (šipky odpovídají směru dotazu, odpověď jde stejnou cestou zpět):

SOHO - DNS

Dotazy (A, AAAA, SRV, TXT, …) týkající se naší domény my-own-domain.net jsou z internetu směrovány na DNS server u registrátora. Dotazy na veřejné IP adresy serverů srv-01 a srv-02, tedy 192.168.1.253 a 192.168.2.253 jsou směrovány na DNS servery hostingu.

Pokud naše doména my-own-domain.net obsahuje nějakou subdoménu (NS záznamy – např. intranet.my-own-domain.net), je dotaz přes DNS server registrátora směrován na naši DNS službu nainstalovanou na serveru srv-01. Server srv-02 nemá nainstalovanou službu DNS, a pro dotazy využívá DNS servery v internetu.

Místní servery net-01 a net-02 obsahují sofistikovanější nastavení. Služba DNS spolupracuje s DHCP a, kromě přeposílání (forward) dotazů jiným DNS serverům, slouží jako primární a zároveň sekundární DNS server. DNS služba na srv-01 obsahuje nastavení subdomén my-own-domain.net dostupných z internetu, a současně subdomén dostupných z našich interních sítí.

Zařízení v interních sítích, a internetové brány gw-01 a gw-02, jsou pouhými klienty DNS služeb a jejich dotazy jsou vyřizovány na serverech net-01, net-02, případně směrovány jinam (srv-01, internet, …).

Centrální server srv-01

Pro běžný provoz není DNS služba na serveru srv-01 příliš důležitá. Většina požadavků je vyřizována přes DNS na místních serverech net-01 a net-02. Centrální server využijeme hlavně pro zpracování požadavků přicházejících z prostředí internetu. Pokud tedy máme např. subdoménu mail.my-own-domain.net, obsahující MX záznamy a záznamy cluster serverů pro zpracování pošty, bez tohoto serveru se neobejdeme. V našem případě bude srv-01 obsahovat záznamy pro IP adresy náležící VPN a sekundární záznamy našich dvou domén praha.my-own-domain.netbern.my-own-domain.net.

Nastavení služby DNS

Nejprve vytvoříme adresáře, kde budou umístěny zónové soubory obsahující jednotlivé záznamy. Tyto adresáře budou vlastněny uživatelem named.

Stejným způsobem vytvoříme adresář pro detailní logy:

Hlavním konfiguračním souborem je /etc/named.conf. Ten odkazuje na zónové soubory obsahující definice jednotlivých domén/subdomén. Primární domény budeme uchovávat v adresáři /var/named/pri/, sekundární v adresáři /var/named/sec/.

Veškeré IP adresy, názvy domén a názvy souborů musíme upravit podle našeho skutečného stavu. Na serveru budeme upravovat pouze zónové soubory uložené v adresáři /var/named/pri/. Zónu my-own-domain.net vytvoříme pouze v případě, že je smyšlená a nemáme ji registrovanou v internetu. V tomto případě nevytváříme ani subdoménu mail.my-own-domain.net, na kterou by nám mohla přicházet elektronická pošta.

Zónové soubory

U všech zónových souborů nastavíme vlastníka a skupinu named.

Zóna určená pouze pro zpracování elektronické pošty:

Pokud budeme subdoménu mail.my-own-domain.net využívat, do DNS záznamů u našeho registrátora vložíme následující řádek:

Zóna obsahující seznam zařízení přímo připojených do VPN. Tuto zónu je nutné vytvořit podle obsahu souboru /etc/openvpn/ipp.txt. Ten je udržován službou openvpn. Je sice možné tuto operaci provádět automaticky při připojování/odpojování klientů VPN, ale vyžaduje to napsání souboru skriptů, které budou udržovat zónu aktuální. Soubor /etc/openvpn/ipp.txt se ale prakticky nemění, a proto pro náš případ pouze několika statických zařízení je manuální úprava nejjednodušší.

Reverzní záznamy pro zónu vpn-net.my-own-domain.net. I tato zóna musí být synchronizována se souborem /etc/openvpn/ipp.txt. Nicméně pokud tyto dvě zóny nechceme používat, nemusíme.

Zónu my-own-domain.net vytváříme pouze, pokud je naše doména smyšlená a nemáme ji registrovanou v internetu. To se nám může hodit pro případ, že stavíme infrastrukturu v provizorních podmínkách bez připojení do celosvětové sítě, nebo nemůžeme operativně během konfigurace měnit nastavení naší domény u registrátora.

Spuštění služby

Pře spuštěním DNS provedeme kontrolu syntaxe včetně master zónových souborů:

Pokud máme službu DNS na serveru nakonfigurovánu, můžeme ji povolit a spustit. Nevadí, pokud nebudou master či slave servery uvedené v konfiguraci v provozu. V takovém případě bude automaticky navázáno spojení při jejich startu.

Máme-li se startem potíže, můžeme se podívat na logy do adresáře /var/log/named/.

Test služby

Podíváme se, zda jsou otevřeny síťové porty:

Služba DNS využívá zejména port 53/tcp i /udp. Jak je podle výpisu vidět, je otevřeno množství portů na různých síťových rozhraních. Proto bude nutné nastavit pravidla pro firewall.

Pro otestování můžeme použít příkaz dig:

Firewall

Pro naše účely povolíme přístup na port 53/udp ze všech sítí, tzn. i z internetu, a na port 53/tcp pouze přes VPN (rozhraní tun0). Protokol TCP je nutné povolit pro zone transfer, což je vlastnost pro synchronizaci jednotlivých zón mazi master a slave servery.

Do souboru /etc/nftables.conf přidáme k pravidlům povolujícím služby SSH a VPN další řádky:

Firewall restartujeme:

Nastavení překladu na serveru srv-01

V tuto chvíli máme službu DNS funkční, nicméně potřebujeme na serveru nastavit překlad IP adres a názvů právě touto službou.

V souboru /etc/netctl/eno16777736 upravíme řádek DNS= na DNS=('127.0.0.1') a restartujeme síťové rozhraní:

Po této operaci by měl být obsah souboru /etc/resolv.conf následující:

Místní server net-01

Abychom mohli používat překlady názvu na IP adresu, a opačně, pro zařízení v naší síti, potřebujeme nainstalovat DNS službu i na naše místní servery net-01 a net-02. Nastavení je podobné jako v případě srv-01.

Nastavení služby DNS

Vytvoříme adresáře pro zónové soubory a logy a nastavíme oprávnění:

Upravíme konfigurační soubor /etc/named.conf :

Nastavení není tak restriktivní jako v případě srv-01. Navíc je možné některé zóny za běhu měnit jinými službami, např. DHCP (o této službě bude následující článek).

Zónové soubory

U všech zónových souborů nastavíme vlastníka a skupinu named.

Zóna obsahující místní služby a další servery umístěné na lokalitě Praha. V domácnosti zde mohou být uvedeny chytré spotřebiče, kterým přidělíme pevnou IP adresu:

Reverzní záznamy pro celou interní síť na lokalitě Praha:

Zóna určená pouze pro „dočasná“ zařízení, která se připojují do naší sítě. Tato zařízení nebudou mít pevnou IP adresu, ale bude přidělována DHCP serverem (DHCP server může přidělovat i pevné IP adresy na základě MAC adresy fyzického síťového rozhraní, ty ale budeme umisťovat do zóny praha.my-own-domain.net):

Pokud chceme, můžeme vytvořit speciální zónu, kam budeme umisťovat služby, které budou umístěné na všech lokalitách. To je vhodné pro případ, že se připojujeme stejným chytrým telefonem nebo notebookem v obou lokalitách. Takovou zónu/subdoménu jsem pojmenoval <code>local.my-own-domain.net</code>. V nastavení příslušného klientského zařízení nastavíme například pro přístup k proxy adresu <code>http://local.my-own-domain.net:3128</code> a již nezáleží, zda se připojujeme na lokalitě Praha nebo Bern.

Nastavení vlastního zónového souboru je ale na lokalitě závislé.

Spuštění služby

Pře spuštěním DNS provedeme kontrolu syntaxe včetně master zónových souborů:

Pokud máme službu DNS na serveru nakonfigurovánu, můžeme ji povolit a spustit.

Máme-li se startem potíže, můžeme se podívat na logy do adresáře /var/log/named/.

Test služby

Podíváme se, zda jsou otevřeny síťové porty:

Služba DNS opět využívá zejména port 53/tcp i /udp.

Pro otestování můžeme použít příkaz dig:

Firewall

Nebude nastaven.

Nastavení překladu na serveru net-01

V souboru /etc/netctl/eno16777736 upravíme řádek DNS= na DNS=('127.0.0.1') a restartujeme síťové rozhraní:

Po této operaci by měl být obsah souboru /etc/resolv.conf následující:

Nastavení překladu na serveru gw-01

Na tuto změnu si musíme dát pozor, jelikož se bude provádět na obou síťových rozhraních.

Rozhraní do internetu:
V souboru /etc/netctl/eno16777736 odstraníme všechny řádky s názvem DNS. Zůstane nám pouze:

Rozhraní do místní/interní sítě:
V souboru /etc/netctl/eno33554976 přidáme nastavení pro překlad DNS:

a restartujeme síťové rozhraní:

Po této operaci by měl být obsah souboru /etc/resolv.conf následující:

Místní server net-02

Nastavení je podobné jako v případě net-01. Abych však předešel případným nejasnostem, uvedu jej celé.

Nastavení služby DNS

Vytvoříme adresáře pro zónové soubory a logy a nastavíme oprávnění:

Upravíme konfigurační soubor /etc/named.conf :

Zónové soubory

U všech zónových souborů nastavíme vlastníka a skupinu named.

Zóna obsahující místní služby a další servery umístěné na lokalitě Bern:

Reverzní záznamy pro celou interní síť na lokalitě Bern:

Zóna určená pouze pro „dočasná“ zařízení, která se připojují do naší sítě:

Speciální zóna <code>local.my-own-domain.net</code>:

Spuštění služby

Pře spuštěním DNS provedeme kontrolu syntaxe včetně master zónových souborů:

Pokud máme službu DNS na serveru nakonfigurovánu, můžeme ji povolit a spustit.

Máme-li se startem potíže, můžeme se podívat na logy do adresáře /var/log/named/.

Test služby

Podíváme se, zda jsou otevřeny síťové porty:

Služba DNS opět využívá zejména port 53/tcp i /udp.

Pro otestování můžeme použít příkaz dig:

Firewall

Nebude nastaven.

Nastavení překladu na serveru net-02

V souboru /etc/netctl/eno16777736 upravíme řádek DNS= na DNS=('127.0.0.1') a restartujeme síťové rozhraní:

Po této operaci by měl být obsah souboru /etc/resolv.conf následující:

Nastavení překladu na serveru gw-02

Na tuto změnu si musíme dát opět pozor, jelikož se bude provádět na obou síťových rozhraních.

Rozhraní do internetu:
V souboru /etc/netctl/eno16777736 odstraníme všechny řádky s názvem DNS. Zůstane nám pouze:

Rozhraní do místní/interní sítě:
V souboru /etc/netctl/eno33554976 přidáme nastavení pro překlad DNS:

a restartujeme síťové rozhraní:

Po této operaci by měl být obsah souboru /etc/resolv.conf následující:

Jednoduchý test VPN a DNS

Zkusíme v našich sítích a na internetu přeložit některé názvy na IP adresy. Pokud vše pracuje, otestujeme latence a přístup na internet.

Následovat bude…

Tato část se věnovala zprovoznění VPN a DNS.

Do naší sítě můžeme připojovat zařízení s pevnými IP adresami, které vybereme z rozsahu 10.11.1.1-10.11.1.252 na lokalitě Praha a 10.12.1.1-10.12.1.252 na lokalitě Bern. Brány použijeme 10.11.1.254, 10.12.1.254 a DNS 10.11.1.253, 10.12.1.253. Síťové masky jsou ve všech sítích 255.255.255.0 (/24).

Příště nainstalujeme službu DHCP, která nám umožní přidělovat IP adresy nově připojeným zařízením automaticky, proxy server a webový server.

3 komentáře u „Síťová infrastruktura pro domácí prostředí a malé firmy (SOHO) – síťové služby 1

  1. Pingback: Jak jsem nasadil IPv6 | brichacek.net

  2. Pingback: Zajimave cteni | Blog J.Z. na NAS4y.NET

  3. Pingback: Arch Linux on Orange Pi Zero | brichacek.net

Leave a Reply