Po 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:
1 2 |
srv-01 A 192.168.1.253 srv-02 A 192.168.2.253 |
IP adresy opět změníme na správné, přidělené od ISP.
Změny otestujeme příkazem ping
, případně dig
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
[root@srv-01 ~]# ping srv-01.my-own-domain.net PING srv-01. my-own-domain.net (192.168.1.253) 56(84) bytes of data. 64 bytes from srv-01.my-own-domain.net (192.168.1.253): icmp_seq=1 ttl=52 time=22.3 ms 64 bytes from srv-01.my-own-domain.net (192.168.1.253): icmp_seq=2 ttl=52 time=16.5 ms ^C --- srv-01. my-own-domain.net ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1011ms rtt min/avg/max/mdev = 16.540/19.427/22.315/2.890 ms [root@srv-01 ~]# dig srv-01.my-own-domain.net ; <<>> DiG 9.10.2-P2 <<>> srv-01.my-own-domain.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER< ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; srv-01.my-own-domain.net. IN A ;; ANSWER SECTION: srv-01.my-own-domain.net. 219 IN A 192.168.1.253 ;; AUTHORITY SECTION: my-own-domain.net. 45339 IN NS nejaky-registrator.cz. ;; ADDITIONAL SECTION: nejaky-registrator.cz. 281 IN A 192.168.1.254 ;; Query time: 0 msec ;; SERVER: 172.16.1.254#53(172.16.1.254) ;; WHEN: Sat Jul 18 15:38:59 CEST 2015 ;; MSG SIZE rcvd: 198 |
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:
1 |
192.168.1.253 PTR srv-01.my-own-domain.net. |
ISP B:
1 |
192.168.2.253 PTR srv-02.my-own-domain.net. |
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
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@srv-01 ~]# ping 192.168.1.253 PING 192.168.1.253 (192.168.1.253) 56(84) bytes of data. 64 bytes from 192.168.1.253: icmp_seq=1 ttl=53 time=15.2 ms ^C --- 192.168.1.253 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 15.266/15.266/15.266/0.000 ms [root@srv-01 ~]# dig 253.1.168.192.in-addr.arpa ; <<>> DiG 9.10.2-P2 <<>> 253.1.168.192.in-addr.arpa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59427 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; 253.1.168.192.in-addr.arpa. IN A ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 3539 IN SOA ns.nejaky-registrator.cz. root.nejaky-registrator.cz. 2015072101 3600 3600 2592000 3600 ;; Query time: 2 msec ;; SERVER: 172.16.1.254#53(172.16.1.254) ;; WHEN: Út čec 21 09:20:50 CEST 2015 ;; MSG SIZE rcvd: 112 |
Nastavení VPN
Pro 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.
1 |
[root@srv-01 ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/ |
V souboru /etc/openvpn/easy-rsa/vars
upravíme následující řádky:
1 2 3 4 5 6 |
export KEY_COUNTRY="CZ" export KEY_PROVINCE="" export KEY_CITY="Praha" export KEY_ORG="Moje sit" export KEY_EMAIL="moje.jmeno@my-own-domain.net " export KEY_OU="" |
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:
1 2 |
[root@srv-01 ~]# mkdir /etc/openvpn/easy-rsa/keys [root@srv-01 ~]# chmod 700 /etc/openvpn/easy-rsa/keys |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[root@srv-01 ~]# cd /etc/openvpn/easy-rsa [root@srv-01 easy-rsa]# . ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys [root@srv-01 easy-rsa]# ./build-ca Generating a 2048 bit RSA private key .........................................................+++ .................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [CZ]: State or Province Name (full name) []: Locality Name (eg, city) [Praha]: Organization Name (eg, company) [Moje sit]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [Moje sit CA]:srv-01 Name [EasyRSA]:srv-01 Email Address [moje.jmeno@my-own-domain.net]: [root@srv-01 easy-rsa]# ls -l /etc/openvpn/easy-rsa/keys/ total 12 -rw-r--r-- 1 root root 1602 Jul 12 22:53 ca.crt -rw------- 1 root root 1704 Jul 12 22:53 ca.key -rw-r--r-- 1 root root 0 Jul 12 22:44 index.txt -rw-r--r-- 1 root root 3 Jul 12 22:44 serial |
Vytvoříme parametrický soubor pro algoritmus a výměnu klíčů DIFFIE-HELLMAN (trvá to nějakou dobu):
1 2 3 4 |
[root@srv-01 easy-rsa]# ./build-dh Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ..........+...........................................................................................+... |
Vygenerujeme a podepíšeme (za pomoci certifikátu CA) SSL certifikát VPN serveru:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
[root@srv-01 easy-rsa]# ./build-key-server srv-01 Generating a 2048 bit RSA private key .....................+++ ......+++ writing new private key to 'srv-01.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [CZ]: State or Province Name (full name) []: Locality Name (eg, city) [Praha]: Organization Name (eg, company) [Moje sit]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [srv-01]: Name [EasyRSA]:srv-01 Email Address [moje.jmeno@my-own-domain.net]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'CZ' localityName :PRINTABLE:'Praha' organizationName :PRINTABLE:'Moje sit' commonName :PRINTABLE:'srv-01' name :PRINTABLE:'srv-01' emailAddress :IA5STRING:'moje.jmeno@my-own-domain.net' Certificate is to be certified until Jul 9 21:12:40 2025 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated |
Nastavení služby VPN
V adresáři /etc/openvpn/
vytvoříme soubor server.conf
s obsahem:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
dev tun port 1194 proto udp server 10.128.1.0 255.255.255.0 route 10.11.1.0 255.255.255.0 10.128.1.1 push "route 10.11.1.0 255.255.255.0" route 10.12.1.0 255.255.255.0 10.128.1.1 push "route 10.12.1.0 255.255.255.0" topology subnet ifconfig-pool-persist /etc/openvpn/ipp.txt client-config-dir /etc/openvpn/ccd/ keepalive 10 120 comp-lzo persist-key persist-tun status /var/log/openvpn-status.log verb 3 client-to-client user nobody group nobody ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/srv-01.crt key /etc/openvpn/easy-rsa/keys/srv-01.key dh /etc/openvpn/easy-rsa/keys/dh2048.pem #crl-verify /etc/openvpn/easy-rsa/keys/crl.pem |
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 push
a route
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.
1 2 3 4 5 6 |
[root@srv-01 ccd]# mkdir /etc/openvpn/ccd [root@srv-01 ccd]# cd /etc/openvpn/ccd [root@srv-01 ccd]# cat gw-01 iroute 10.11.1.0 255.255.255.0 [root@srv-01 ccd]# cat gw-02 iroute 10.12.1.0 255.255.255.0 |
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“:
1 2 3 4 5 6 7 |
[root@srv-01 ccd]# cd /etc/openvpn/easy-rsa [root@srv-01 ccd]# . ./vars [root@srv-01 ccd]# ./revoke-full mobil-android Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf Revoking Certificate 05. Data Base Updated |
Pokud je nastavení kompletní, povolíme a spustíme službu openvpn:
1 2 3 |
[root@srv-01 openvpn]# systemctl enable openvpn@server Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn@server.service to /usr/lib/systemd/system/openvpn@.service. [root@srv-01 openvpn]# systemctl start openvpn@server |
Ověříme, zda služba poslouchá na správném portu a protokolu (řádky port 1194
a proto udp
v souboru server.conf
):
1 2 3 4 |
[root@srv-01 openvpn]# netstat -lupn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:1194 0.0.0.0:* 5528/openvpn |
Případnou změnu portu můžeme provést podobně jako v případě služby SSH.
Zkontrolujeme nastavení rozhraní a směrovací tabulku:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
[root@srv-01 openvpn]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 3: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:bd:07:3f brd ff:ff:ff:ff:ff:ff inet 192.168.1.253/24 brd 192.168.1.255 scope global eno16777736 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:febd:73f/64 scope link valid_lft forever preferred_lft forever 4: tun0@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.128.1.1/24 brd 10.128.1.255 scope global tun0 valid_lft forever preferred_lft forever [root@srv-01 openvpn]# ethtool tun0 Settings for tun0: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Speed: 10Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Current message level: 0xffffffa1 (-95) drv ifup tx_err tx_queued intr tx_done rx_status pktdata hw wol 0xffff8000 Link detected: yes [root@srv-01 openvpn]# ip route default via 192.168.1.254 dev eno16777736 10.11.1.0/24 via 10.128.1.1 dev tun0 10.12.1.0/24 via 10.128.1.1 dev tun0 10.128.1.0/24 dev tun0 proto kernel scope link src 10.128.1.1 192.168.1.0/24 dev eno16777736 proto kernel scope link src 192.168.1.253 |
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í):
1 2 3 4 5 6 7 8 |
[root@gw-01 ~]# iperf -c 10.128.1.1 ------------------------------------------------------------ Client connecting to 10.128.1.1, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 10.128.1.2 port 55111 connected with 10.128.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 326 MBytes 274 Mbits/sec |
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
:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@srv-01 ~]# cat /var/log/openvpn-status.log OpenVPN CLIENT LIST Updated,Tue Jul 21 08:40:53 2015 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since gw-01,172.16.1.1:32890,37842335,13563125,Tue Jul 21 06:27:48 2015 ROUTING TABLE Virtual Address,Common Name,Real Address,Last Ref 10.128.1.2,gw-01,172.16.1.1:32890,Tue Jul 21 06:33:38 2015 10.11.1.0/24,gw-01,172.16.1.1:32890,Tue Jul 21 06:27:48 2015 GLOBAL STATS Max bcast/mcast queue length,0 END |
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:
1 2 |
# Sluzba VPN: max. 15 pripojeni za minutu, pokusy logovat udp dport 1194 limit rate 15/minute log prefix "VPN::ACPT: " counter accept |
Firewall restartujeme:
1 |
[root@srv-01 etc]# systemctl restart nftables |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
[root@srv-01 ~]# cd /etc/openvpn/easy-rsa [root@srv-01 easy-rsa]# . ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys [root@srv-01 easy-rsa]# ./build-key gw-01 Generating a 2048 bit RSA private key ....+++ ............+++ writing new private key to 'gw-01.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [CZ]: State or Province Name (full name) []: Locality Name (eg, city) [Praha]: Organization Name (eg, company) [Moje sit]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [gw-01]: Name [EasyRSA]:gw-01 Email Address [moje.jmeno@my-own-domain.net]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'CZ' localityName :PRINTABLE:'Praha' organizationName :PRINTABLE:'Moje sit' commonName :PRINTABLE:'gw-01' name :PRINTABLE:'gw-01' emailAddress :IA5STRING:'moje.jmeno@my-own-domain.net' Certificate is to be certified until Jul 9 20:55:59 2025 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated |
Nastavení služby VPN
Na klientském zařízení v adresáři /etc/openvpn/
vytvoříme soubor client.conf
s obsahem:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
client dev tun proto udp remote srv-01.my-own-domain.net 1194 resolv-retry infinite nobind persist-key persist-tun ns-cert-type server cipher bf-cbc comp-lzo verb 3 mute 20 ca ca.crt mssfix 1300 key gw-01.key cert gw-01.crt |
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 key
a cert
. 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í:
1 |
[root@gw-01 openvpn]# chmod 600 /etc/openvpn/gw-01.key |
Nyní můžeme povolit a spustit službu openvpn:
1 2 3 |
[root@gw-01 openvpn]# systemctl enable openvpn@client Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn@client.service to /usr/lib/systemd/system/openvpn@.service. [root@gw-01 openvpn]# systemctl start openvpn@client |
Provedeme kontrolu rozhraní tun0
:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@gw-01 ~]# ip addr show tun0 4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.128.1.2/24 brd 10.128.1.255 scope global tun0 valid_lft forever preferred_lft forever [root@gw-01 ~]# ip route default via 172.16.1.254 dev eno16777736 10.11.1.0/24 dev eno33554976 proto kernel scope link src 10.11.1.254 10.12.1.0/24 via 10.128.1.1 dev tun0 10.128.1.0/24 dev tun0 proto kernel scope link src 10.128.1.2 172.16.1.0/24 dev eno16777736 proto kernel scope link src 172.16.1.1 |
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):
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.net
a bern.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.
1 2 3 4 |
[root@srv-01 ~]# mkdir /var/named/pri [root@srv-01 ~]# chown named:named /var/named/pri [root@srv-01 ~]# mkdir /var/named/sec [root@srv-01 ~]# chown named:named /var/named/sec |
Stejným způsobem vytvoříme adresář pro detailní logy:
1 2 |
[root@srv-01 ~]# mkdir /var/log/named [root@srv-01 ~]# chown named:named /var/log/named |
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/
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
acl "trusted" { 127.0.0.0/8; ::1/128; 10.11.0.0/16; 10.12.0.0/16; 10.128.1.0/24; }; options { directory "/var/named"; pid-file "/run/named/named.pid"; // listen-on-v6 { any; }; // IP adresu 192.168.1.253 zmenit na spravnou listen-on { 127.0.0.1; 192.168.1.253; 10.128.1.1; }; allow-transfer { none; }; allow-update { none; }; allow-query { any; }; allow-query-cache { trusted; }; allow-recursion { trusted; }; auth-nxdomain no; rate-limit { responses-per-second 20; window 5; }; version none; hostname none; server-id none; forwarders { // servery NIC.CZ 217.31.204.130; 193.29.206.206; }; dnssec-validation auto; dnssec-enable yes; dnssec-lookaside . trust-anchor dlv.isc.org.; sig-validity-interval 2400; }; statistics-channels { inet 127.0.0.1 port 8053; }; logging { channel default_log { file "/var/log/named/named.log" versions 1 size 128k; print-time yes; print-severity yes; print-category yes; }; channel dnssec_log { file "/var/log/named/dnssec.log" versions 1 size 64k; print-time yes; print-severity yes; print-category yes; }; channel queries_log { file "/var/log/named/queries.log" versions 1 size 512k; print-time yes; print-severity yes; print-category yes; }; channel update_debug { file "/var/log/named/updates.log" versions 1 size 64k; severity debug 3; print-category yes; print-severity yes; print-time yes; }; category default { default_log; }; category general { default_log; }; category dnssec { dnssec_log; }; category queries { queries_log; }; category update { update_debug; }; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "localhost.ip6.zone"; }; zone "255.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "0.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "." IN { type hint; file "root.hint"; }; // zona pro emailovy system zone "mail.my-own-domain.net" { type master; file "pri/mail.my-own-domain.net"; }; // zony pro VPN zone "vpn-net.my-own-domain.net" IN { type master; notify yes; // v pripade zmeny upozornit net-01 a net-02 also-notify { 10.11.1.253; 10.12.1.253; }; // povolit prenos zony na net-01 a net-02 allow-transfer { 10.11.1.253; 10.12.1.253; }; // povolit dotazy z allow-query { 10.128.1.0/24; 127.0.0.0/16; 10.11.0.0/16; 10.12.0.0/16; }; file "pri/vpn-net.my-own-domain.net"; }; zone "1.128.10.in-addr.arpa" IN { type master; notify yes; // v pripade zmeny upozornit net-01 a net-02 also-notify { 10.11.1.253; 10.12.1.253; }; // povolit prenos zony na net-01 a net-02 allow-transfer { 10.11.1.253; 10.12.1.253; }; // povolit dotazy z allow-query { 10.128.1.0/24; 127.0.0.0/16; 10.11.0.0/16; 10.12.0.0/16; }; file "pri/1.128.10.in-addr.arpa"; }; // interni zony pro lokalitu Praha zone "praha.my-own-domain.net" IN { type slave; // master server net-01 masters { 10.11.1.253; }; file "sec/praha.my-own-domain.net"; }; zone "1.11.10.in-addr.arpa" IN { type slave; // master server net-01 masters { 10.11.1.253; }; file "sec/1.11.10.in-addr.arpa"; }; // interni zony pro lokalitu Bern zone "bern.my-own-domain.net" IN { type slave; // master server net-02 masters { 10.12.1.253; }; file "sec/bern.my-own-domain.net"; }; zone "1.12.10.in-addr.arpa" IN { type slave; // master server net-02 masters { 10.12.1.253; }; file "sec/1.12.10.in-addr.arpa"; }; // tato zona je pouze pro smyslenou domenu my-own-domain.net, ktera neni registrovana v internetu zone "my-own-domain.net" IN { type master; notify yes; // v pripade zmeny upozornit net-01 a net-02 also-notify { 10.11.1.253; 10.12.1.253; }; // povolit prenos zony na net-01 a net-02 allow-transfer { 10.11.1.253; 10.12.1.253; }; // povolit dotazy z allow-query { 10.128.1.0/24; 127.0.0.0/16; 10.11.0.0/16; 10.12.0.0/16; }; file "pri/my-own-domain.net"; }; // vim:set ts=4 sw=4 et: |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$TTL 86400 @ IN SOA mail.my-own-domain.net. root.my-own-domain.net. ( 2015042001 ; serial 28800 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv-01.my-own-domain.net. srv-01 A 192.168.1.253 @ MX 10 srv-01 @ A 192.168.1.253 @ TXT "v=spf1 mx ip4:192.168.1.253 include:my-own-domain.net ~all" @ SPF "v=spf1 mx ip4:192.168.1.253 include:my-own-domain.net ~all" |
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:
1 |
mail NS srv-01 |
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šší.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$TTL 86400 @ IN SOA srv-01.vpn-net.my-own-domain.net. root.my-own-domain.net. ( 2015022606 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv-01.vpn-net.my-own-domain.net. @ A 10.128.1.1 srv-01 A 10.128.1.1 gw-01 A 10.128.1.2 gw-02 A 10.128.1.3 srv-02 A 10.128.1.4 ; zaznamy musi souhlasit s obsahem souboru /etc/openvpn/ipp.txt |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ORIGIN . $TTL 86400 ; 1 day 1.128.10.in-addr.arpa IN SOA srv-01.vpn-net.my-own-domain.net. root.my-own-domain.net. ( 2015022631 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv-01.vpn-net.my-own-domain.net. $ORIGIN 1.128.10.in-addr.arpa. $TTL 3600 ; 1 hour 1 PTR srv-01.vpn-net.my-own-domain.net. 2 PTR gw-01.vpn-net.my-own-domain.net. 3 PTR gw-02.vpn-net.my-own-domain.net. 4 PTR srv-02.vpn-net.my-own-domain.net. ; zaznamy musi souhlasit s obsahem souboru /etc/openvpn/ipp.txt |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$TTL 86400 @ IN SOA srv-01.my-own-domain.net. root.my-own-domain.net. ( 2015022608 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv-01.my-own-domain.net. @ A 192.168.1.253 srv-01 A 192.168.1.253 srv-02 A 192.168.2.253 net-01 A 10.11.1.253 net-02 A 10.11.2.253 praha NS net-01 bern NS net-02 mail NS srv-01 ; tato zona je pouze pro smyslenou domenu my-own-domain.net, ktera neni registrovana v internetu |
Spuštění služby
Pře spuštěním DNS provedeme kontrolu syntaxe včetně master zónových souborů:
1 2 3 4 5 6 7 8 9 10 |
[root@srv-01 pri]# named-checkconf -z zone localhost/IN: loaded serial 42 zone 0.0.127.in-addr.arpa/IN: loaded serial 42 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42 zone 255.in-addr.arpa/IN: loaded serial 42 zone 0.in-addr.arpa/IN: loaded serial 42 zone mail.my-own-domain.net/IN: loaded serial 2015042001 zone vpn-net.my-own-domain.net/IN: loaded serial 2015022606 zone 1.128.10.in-addr.arpa/IN: loaded serial 2015022631 zone my-own-domain.net/IN: loaded serial 2015022608 |
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.
1 2 3 |
[root@srv-01 pri]# systemctl enable named Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service. [root@srv-01 pri]# systemctl start named |
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@srv-01 pri]# netstat -lutpn | grep named tcp 0 0 10.128.1.1:53 0.0.0.0:* LISTEN 6577/named tcp 0 0 192.168.1.253:53 0.0.0.0:* LISTEN 6577/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 6577/named tcp 0 0 127.0.0.1:8053 0.0.0.0:* LISTEN 6577/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 6577/named tcp6 0 0 :::53 :::* LISTEN 6577/named tcp6 0 0 ::1:953 :::* LISTEN 6577/named udp 0 0 10.128.1.1:53 0.0.0.0:* 6577/named udp 0 0 192.168.1.253:53 0.0.0.0:* 6577/named udp 0 0 127.0.0.1:53 0.0.0.0:* 6577/named udp6 0 0 :::53 :::* 6577/named |
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
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@srv-01 ~]# dig @127.0.0.1 vpn-net.my-own-domain.net ; <<>> DiG 9.10.2-P2 <<>> @127.0.0.1 vpn-net.my-own-domain.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9631 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;vpn-net.my-own-domain.net. IN A ;; ANSWER SECTION: vpn-net.my-own-domain.net. 86400 IN A 10.128.1.1 ;; AUTHORITY SECTION: vpn-net.my-own-domain.net. 86400 IN NS srv-01.vpn-net.my-own-domain.net. ;; ADDITIONAL SECTION: srv-01.vpn-net.my-own-domain.net. 86400 IN A 10.128.1.1 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jul 21 18:27:29 CEST 2015 ;; MSG SIZE rcvd: 107 |
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:
1 2 3 |
# Sluzba DNS udp dport 53 counter accept iif tun0 tcp dport 53 counter accept |
Firewall restartujeme:
1 |
[root@srv-01 etc]# systemctl restart nftables |
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í:
1 |
[root@srv-01 ~]# netctl restart eno16777736 |
Po této operaci by měl být obsah souboru /etc/resolv.conf
následující:
1 2 3 4 |
# Generated by resolvconf domain my-own-domain.net search local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net nameserver 127.0.0.1 |
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í:
1 2 3 4 5 6 |
[root@net-01 ~]# mkdir /var/named/pri [root@net-01 ~]# chown named:named /var/named/pri [root@net-01 ~]# mkdir /var/named/sec [root@net-01 ~]# chown named:named /var/named/sec [root@net-01 ~]# mkdir /var/log/named [root@net-01 ~]# chown named:named /var/log/named |
Upravíme konfigurační soubor /etc/named.conf
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
acl "trusted" { 127.0.0.0/8; ::1/128; 10.11.0.0/16; 10.12.0.0/16; 10.128.1.0/24; }; options { directory "/var/named"; pid-file "/run/named/named.pid"; // listen-on-v6 { any; }; listen-on { 127.0.0.1; 10.11.1.253; }; allow-transfer { none; }; allow-update { none; }; allow-query { trusted; }; allow-query-cache { trusted; }; allow-recursion { trusted; }; auth-nxdomain no; rate-limit { responses-per-second 20; window 5; }; version none; hostname none; server-id none; forwarders { // servery NIC.CZ 217.31.204.130; 193.29.206.206; }; dnssec-validation auto; dnssec-enable yes; dnssec-lookaside . trust-anchor dlv.isc.org.; sig-validity-interval 2400; }; logging { channel default_log { file "/var/log/named/named.log" versions 1 size 128k; print-time yes; print-severity yes; print-category yes; }; channel dnssec_log { file "/var/log/named/dnssec.log" versions 1 size 64k; print-time yes; print-severity yes; print-category yes; }; channel queries_log { file "/var/log/named/queries.log" versions 1 size 512k; print-time yes; print-severity yes; print-category yes; }; channel update_debug { file "/var/log/named/updates.log" versions 1 size 64k; severity debug 3; print-category yes; print-severity yes; print-time yes; }; category default { default_log; }; category general { default_log; }; category dnssec { dnssec_log; }; category queries { queries_log; }; category update { update_debug; }; }; statistics-channels { inet 127.0.0.1 port 8053; }; include "/etc/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1/32; ::1/128; } keys { "rndc-key"; }; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "localhost.ip6.zone"; }; zone "255.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "0.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "." IN { type hint; file "root.hint"; }; zone "vpn-net.my-own-domain.net" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/vpn-net.my-own-domain.net"; }; zone "1.128.10.in-addr.arpa" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/1.128.10.in-addr.arpa"; }; zone "praha.my-own-domain.net" IN { type master; notify yes; // v pripade zmeny upozornit srv-01 a net-02 also-notify { 10.128.1.1; 10.12.1.253; }; // povolit prenos zony na srv-01 a net-02 allow-transfer { 10.128.1.1; 10.12.1.253; }; allow-update { key "rndc-key"; }; file "pri/praha.my-own-domain.net"; }; zone "1.11.10.in-addr.arpa" IN { type master; notify yes; // v pripade zmeny upozornit srv-01 a net-02 also-notify { 10.128.1.1; 10.12.1.253; }; // povolit prenos zony na srv-01 a net-02 allow-transfer { 10.128.1.1; 10.12.1.253; }; allow-update { key "rndc-key"; }; file "pri/1.11.10.in-addr.arpa"; }; zone "dhcp.praha.my-own-domain.net" { type master; allow-update { key "rndc-key"; }; file "pri/dhcp.praha.my-own-domain.net"; }; zone "bern.my-own-domain.net" IN { type slave; // master server net-02 masters { 10.12.1.253; }; file "sec/bern.my-own-domain.net"; }; zone "1.12.10.in-addr.arpa" IN { type slave; // master server net-02 masters { 10.12.1.253; }; file "sec/1.12.10.in-addr.arpa"; }; zone "local.my-own-domain.net" { type master; file "pri/local.my-own-domain.net"; }; // tato zona je pouze pro smyslenou domenu my-own-domain.net, ktera neni registrovana v internetu // pokud mame domenu registrovanu, nepouzijeme zone "my-own-domain.net" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/my-own-domain.net"; }; // vim:set ts=4 sw=4 et: |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$TTL 86400 @ IN SOA net-01.praha.my-own-domain.net. root.my-own-domain.net. ( 2015022606 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-01.praha.my-own-domain.net. @ A 10.11.1.253 net-01 A 10.11.1.253 gw-01 A 10.11.1.254 |
Reverzní záznamy pro celou interní síť na lokalitě Praha:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ORIGIN . $TTL 86400 ; 1 day 1.11.10.in-addr.arpa IN SOA net-01.praha.my-own-domain.net. root.my-own-domain.net. ( 2015022631 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-01.praha.my-own-domain.net. $ORIGIN 1.11.10.in-addr.arpa. $TTL 3600 ; 1 hour 253 PTR net-01.praha.my-own-domain.net. 254 PTR gw-01.praha.my-own-domain.net. |
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
):
1 2 3 4 5 6 7 8 9 10 |
$ORIGIN . $TTL 86400 ; 1 day dhcp.praha.my-own-domain.net IN SOA net-01.praha.my-own-domain.net. root.my-own-domain.net. ( 2009043191 ; serial 28800 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-01.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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$TTL 86400 @ IN SOA net-srv.local.my-own-domain.net. root.my-own-domain.net. ( 2015022608 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-01.praha.my-own-domain.net. @ A 10.11.1.253 net-srv A 10.11.1.253 gateway A 10.11.1.254 |
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ů:
1 2 3 4 5 6 7 8 9 |
[root@net-01 pri]# named-checkconf -z zone localhost/IN: loaded serial 42 zone 0.0.127.in-addr.arpa/IN: loaded serial 42 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42 zone 255.in-addr.arpa/IN: loaded serial 42 zone 0.in-addr.arpa/IN: loaded serial 42 zone praha.my-own-domain.net/IN: loaded serial 2015022606 zone 1.11.10.in-addr.arpa/IN: loaded serial 2015022631 zone dhcp.praha.my-own-domain.net/IN: loaded serial 2009043191 |
Pokud máme službu DNS na serveru nakonfigurovánu, můžeme ji povolit a spustit.
1 2 3 |
[root@net-01 pri]# systemctl enable named Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service. [root@net-01 pri]# systemctl start named |
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:
1 2 3 4 5 6 7 8 9 |
[root@net-01 pri]# netstat -lutpn | grep named tcp 0 0 10.11.1.253:53 0.0.0.0:* LISTEN 430/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 430/named tcp 0 0 127.0.0.1:8053 0.0.0.0:* LISTEN 430/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 430/named tcp6 0 0 :::53 :::* LISTEN 430/named udp 0 0 10.11.1.253:53 0.0.0.0:* 430/named udp 0 0 127.0.0.1:53 0.0.0.0:* 430/named udp6 0 0 :::53 :::* 430/named |
Služba DNS opět využívá zejména port 53/tcp i /udp.
Pro otestování můžeme použít příkaz dig
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@net-01 pri]# dig @127.0.0.1 praha.my-own-domain.net ; <<>> DiG 9.10.2-P2 <<>> @127.0.0.1 praha.my-own-domain.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28779 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;praha.my-own-domain.net. IN A ;; ANSWER SECTION: praha.my-own-domain.net. 86400 IN A 10.11.1.253 ;; AUTHORITY SECTION: praha.my-own-domain.net. 86400 IN NS net-01.praha.my-own-domain.net. ;; ADDITIONAL SECTION: net-01.praha.my-own-domain.net. 86400 IN A 10.11.1.253 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jul 22 14:34:12 CEST 2015 ;; MSG SIZE rcvd: 105 |
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í:
1 |
[root@net-01 ~]# netctl restart eno16777736 |
Po této operaci by měl být obsah souboru /etc/resolv.conf
následující:
1 2 3 4 |
# Generated by resolvconf domain praha.my-own-domain.net search local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net nameserver 127.0.0.1 |
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:
1 2 3 4 5 6 |
Description='Sitove rozhrani eno16777736 pro pristup do internetu' Interface=eno16777736 Connection=ethernet IP=static Address=172.16.1.1/24' Gateway='172.16.1.254' |
Rozhraní do místní/interní sítě:
V souboru /etc/netctl/eno33554976
přidáme nastavení pro překlad DNS:
1 2 3 4 5 6 7 8 |
Description='Sitove rozhrani eno33554976 pro pristup do interni site' Interface=eno33554976 Connection=ethernet IP=static Address='10.11.1.254/24' DNS=('10.11.1.253') DNSDomain='praha.my-own-domain.net' DNSSearch='local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net' |
a restartujeme síťové rozhraní:
1 2 |
[root@gw-01 ~]# netctl restart eno16777736 [root@gw-01 ~]# netctl restart eno33554976 |
Po této operaci by měl být obsah souboru /etc/resolv.conf
následující:
1 2 3 4 |
# Generated by resolvconf domain praha.my-own-domain.net search local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net nameserver 10.11.1.253 |
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í:
1 2 3 4 5 6 |
[root@net-02 ~]# mkdir /var/named/pri [root@net-02 ~]# chown named:named /var/named/pri [root@net-02 ~]# mkdir /var/named/sec [root@net-02 ~]# chown named:named /var/named/sec [root@net-02 ~]# mkdir /var/log/named [root@net-02 ~]# chown named:named /var/log/named |
Upravíme konfigurační soubor /etc/named.conf
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
acl "trusted" { 127.0.0.0/8; ::1/128; 10.11.0.0/16; 10.12.0.0/16; 10.128.1.0/24; }; options { directory "/var/named"; pid-file "/run/named/named.pid"; // listen-on-v6 { any; }; listen-on { 127.0.0.1; 10.12.1.253; }; allow-transfer { none; }; allow-update { none; }; allow-query { trusted; }; allow-query-cache { trusted; }; allow-recursion { trusted; }; auth-nxdomain no; rate-limit { responses-per-second 20; window 5; }; version none; hostname none; server-id none; forwarders { // servery NIC.CZ 217.31.204.130; 193.29.206.206; }; dnssec-validation auto; dnssec-enable yes; dnssec-lookaside . trust-anchor dlv.isc.org.; sig-validity-interval 2400; }; logging { channel default_log { file "/var/log/named/named.log" versions 1 size 128k; print-time yes; print-severity yes; print-category yes; }; channel dnssec_log { file "/var/log/named/dnssec.log" versions 1 size 64k; print-time yes; print-severity yes; print-category yes; }; channel queries_log { file "/var/log/named/queries.log" versions 1 size 512k; print-time yes; print-severity yes; print-category yes; }; channel update_debug { file "/var/log/named/updates.log" versions 1 size 64k; severity debug 3; print-category yes; print-severity yes; print-time yes; }; category default { default_log; }; category general { default_log; }; category dnssec { dnssec_log; }; category queries { queries_log; }; category update { update_debug; }; }; statistics-channels { inet 127.0.0.1 port 8053; }; include "/etc/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1/32; ::1/128; } keys { "rndc-key"; }; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "localhost.ip6.zone"; }; zone "255.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "0.in-addr.arpa" IN { type master; file "empty.zone"; }; zone "." IN { type hint; file "root.hint"; }; zone "vpn-net.my-own-domain.net" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/vpn-net.my-own-domain.net"; }; zone "1.128.10.in-addr.arpa" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/1.128.10.in-addr.arpa"; }; zone "bern.my-own-domain.net" IN { type master; notify yes; // v pripade zmeny upozornit srv-01 a net-01 also-notify { 10.128.1.1; 10.11.1.253; }; // povolit prenos zony na srv-01 a net-01 allow-transfer { 10.128.1.1; 10.11.1.253; }; allow-update { key "rndc-key"; }; file "pri/bern.my-own-domain.net"; }; zone "1.12.10.in-addr.arpa" IN { type master; notify yes; // v pripade zmeny upozornit srv-01 a net-01 also-notify { 10.128.1.1; 10.11.1.253; }; // povolit prenos zony na srv-01 a net-01 allow-transfer { 10.128.1.1; 10.11.1.253; }; allow-update { key "rndc-key"; }; file "pri/1.12.10.in-addr.arpa"; }; zone "dhcp.bern.my-own-domain.net" { type master; // v pripade zmeny upozornit srv-01 a net-01 //also-notify { 10.128.1.1; 10.11.1.253; }; // povolit prenos zony na srv-01 a net-01 //allow-transfer { 10.128.1.1; 10.11.1.253; }; allow-update { key "rndc-key"; }; file "pri/dhcp.bern.my-own-domain.net"; }; zone "praha.my-own-domain.net" IN { type slave; // master server net-01 masters { 10.11.1.253; }; file "sec/praha.my-own-domain.net"; }; zone "1.11.10.in-addr.arpa" IN { type slave; // master server net-01 masters { 10.11.1.253; }; file "sec/1.11.10.in-addr.arpa"; }; zone "local.my-own-domain.net" { type master; file "pri/local.my-own-domain.net"; }; // tato zona je pouze pro smyslenou domenu my-own-domain.net, ktera neni registrovana v internetu zone "my-own-domain.net" IN { type slave; // master server srv-01 masters { 10.128.1.1; }; file "sec/my-own-domain.net"; }; // vim:set ts=4 sw=4 et: |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$TTL 86400 @ IN SOA net-02.bern.my-own-domain.net. root.my-own-domain.net. ( 2015022606 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-02.bern.my-own-domain.net. @ A 10.12.1.253 net-02 A 10.12.1.253 gw-02 A 10.12.1.254 |
Reverzní záznamy pro celou interní síť na lokalitě Bern:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ORIGIN . $TTL 86400 ; 1 day 1.12.10.in-addr.arpa IN SOA net-02.bern.my-own-domain.net. root.my-own-domain.net. ( 2015022631 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-02.bern.my-own-domain.net. $ORIGIN 1.12.10.in-addr.arpa. $TTL 3600 ; 1 hour 253 PTR net-02.bern.my-own-domain.net. 254 PTR gw-02.bern.my-own-domain.net. |
Zóna určená pouze pro „dočasná“ zařízení, která se připojují do naší sítě:
1 2 3 4 5 6 7 8 9 10 |
$ORIGIN . $TTL 86400 ; 1 day dhcp.bern.my-own-domain.net IN SOA net-02.bern.my-own-domain.net. root.my-own-domain.net. ( 2009043191 ; serial 28800 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-02.bern.my-own-domain.net. |
Speciální zóna <code>local.my-own-domain.net</code>:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$TTL 86400 @ IN SOA net-srv.local.my-own-domain.net. root.my-own-domain.net. ( 2015022608 ; serial 86400 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS net-02.bern.my-own-domain.net. @ A 10.12.1.253 net-srv A 10.12.1.253 gateway A 10.12.1.254 |
Spuštění služby
Pře spuštěním DNS provedeme kontrolu syntaxe včetně master zónových souborů:
1 2 3 4 5 6 7 8 9 |
[root@net-02 var]# named-checkconf -z zone localhost/IN: loaded serial 42 zone 0.0.127.in-addr.arpa/IN: loaded serial 42 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42 zone 255.in-addr.arpa/IN: loaded serial 42 zone 0.in-addr.arpa/IN: loaded serial 42 zone bern.my-own-domain.net/IN: loaded serial 2015022606 zone 1.12.10.in-addr.arpa/IN: loaded serial 2015022631 zone dhcp.bern.my-own-domain.net/IN: loaded serial 2009043191 |
Pokud máme službu DNS na serveru nakonfigurovánu, můžeme ji povolit a spustit.
1 2 3 |
[root@net-02 pri]# systemctl enable named Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service. [root@net-02 pri]# systemctl start named |
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:
1 2 3 4 5 6 7 8 9 10 |
[root@net-02 pri]# netstat -lutpn | grep named tcp 0 0 10.12.1.253:53 0.0.0.0:* LISTEN 329/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 329/named tcp 0 0 127.0.0.1:8053 0.0.0.0:* LISTEN 329/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 329/named tcp6 0 0 :::53 :::* LISTEN 329/named tcp6 0 0 ::1:953 :::* LISTEN 329/named udp 0 0 10.12.1.253:53 0.0.0.0:* 329/named udp 0 0 127.0.0.1:53 0.0.0.0:* 329/named udp6 0 0 :::53 :::* 329/named |
Služba DNS opět využívá zejména port 53/tcp i /udp.
Pro otestování můžeme použít příkaz dig
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@net-02 pri]# dig @127.0.0.1 bern.my-own-domain.net ; <<>> DiG 9.10.2-P2 <<>> @127.0.0.1 bern.my-own-domain.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16284 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;bern.my-own-domain.net. IN A ;; ANSWER SECTION: bern.my-own-domain.net. 86400 IN A 10.12.1.253 ;; AUTHORITY SECTION: bern.my-own-domain.net. 86400 IN NS net-02.bern.my-own-domain.net. ;; ADDITIONAL SECTION: net-02.bern.my-own-domain.net. 86400 IN A 10.12.1.253 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jul 22 17:04:24 CEST 2015 ;; MSG SIZE rcvd: 104 |
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í:
1 |
[root@net-02 ~]# netctl restart eno16777736 |
Po této operaci by měl být obsah souboru /etc/resolv.conf
následující:
1 2 3 4 |
# Generated by resolvconf domain bern.my-own-domain.net search local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net nameserver 127.0.0.1 |
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:
1 2 3 4 5 6 |
Description='Sitove rozhrani eno16777736 pro pristup do internetu' Interface=eno16777736 Connection=ethernet IP=static Address=172.16.2.1/24' Gateway='172.16.2.254' |
Rozhraní do místní/interní sítě:
V souboru /etc/netctl/eno33554976
přidáme nastavení pro překlad DNS:
1 2 3 4 5 6 7 8 |
Description='Sitove rozhrani eno33554976 pro pristup do interni site' Interface=eno33554976 Connection=ethernet IP=static Address='10.12.1.254/24' DNS=('10.12.1.253') DNSDomain='bern.my-own-domain.net' DNSSearch='local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net' |
a restartujeme síťové rozhraní:
1 2 |
[root@gw-02 ~]# netctl restart eno16777736 [root@gw-02 ~]# netctl restart eno33554976 |
Po této operaci by měl být obsah souboru /etc/resolv.conf
následující:
1 2 3 4 |
# Generated by resolvconf domain praha.my-own-domain.net search local.my-own-domain.net my-own-domain.net praha.my-own-domain.net bern.my-own-domain.net nameserver 10.12.1.253 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
[root@net-01 netctl]# nslookup 10.128.1.1 Server: 127.0.0.1 Address: 127.0.0.1#53 1.1.128.10.in-addr.arpa name = srv-01.vpn-net.my-own-domain.net. [root@net-01 netctl]# nslookup 10.128.1.2 Server: 127.0.0.1 Address: 127.0.0.1#53 2.1.128.10.in-addr.arpa name = gw-01.vpn-net.my-own-domain.net. [root@net-01 netctl]# nslookup srv-01.vpn-net.my-own-domain.net Server: 127.0.0.1 Address: 127.0.0.1#53 Name: srv-01.vpn-net.my-own-domain.net Address: 10.128.1.1 [root@net-01 netctl]# nslookup praha.my-own-domain.net Server: 127.0.0.1 Address: 127.0.0.1#53 Name: praha.my-own-domain.net Address: 10.11.1.253 [root@net-01 netctl]# nslookup bern.my-own-domain.net Server: 127.0.0.1 Address: 127.0.0.1#53 Name: bern.my-own-domain.net Address: 10.12.1.253 [root@net-01 netctl]# nslookup 10.12.1.253 Server: 127.0.0.1 Address: 127.0.0.1#53 253.1.12.10.in-addr.arpa name = net-02.bern.my-own-domain.net. [root@net-01 netctl]# nslookup srv-01 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: srv-01.my-own-domain.net Address: 192.168.1.253 [root@net-01 netctl]# nslookup gw-02 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: gw-02.bern.my-own-domain.net Address: 10.12.1.254 [root@net-01 netctl]# ping srv-01 PING srv-01.my-own-domain.net (192.168.1.253) 56(84) bytes of data. 64 bytes from 192.168.1.253: icmp_seq=1 ttl=62 time=0.812 ms ^C --- srv-01.my-own-domain.net ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.812/0.812/0.812/0.000 ms [root@net-01 netctl]# ping gw-01.vpn-net.my-own-domain.net PING gw-01.vpn-net.my-own-domain.net (10.128.1.2) 56(84) bytes of data. 64 bytes from gw-01.vpn-net.my-own-domain.net (10.128.1.2): icmp_seq=1 ttl=64 time=0.402 ms 64 bytes from gw-01.vpn-net.my-own-domain.net (10.128.1.2): icmp_seq=2 ttl=64 time=0.322 ms [root@net-01 netctl]# traceroute net-02 traceroute to net-02 (10.12.1.253), 30 hops max, 60 byte packets 1 gw-01.praha.my-own-domain.net (10.11.1.254) 0.309 ms 0.299 ms 0.232 ms 2 gw-02.vpn-net.my-own-domain.net (10.128.1.3) 6.545 ms 6.482 ms 6.741 ms 3 net-02.bern.my-own-domain.net (10.12.1.253) 6.682 ms 7.277 ms 7.225 ms [root@net-01 netctl]# nslookup google.com Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: google.com Address: 173.194.116.228 Name: google.com Address: 173.194.116.230 Name: google.com Address: 173.194.116.231 Name: google.com Address: 173.194.116.233 [root@net-01 netctl]# ping google.com PING google.com (173.194.116.233) 56(84) bytes of data. 64 bytes from prg02s11-in-f9.1e100.net (173.194.116.233): icmp_seq=1 ttl=54 time=24.3 ms 64 bytes from prg02s11-in-f9.1e100.net (173.194.116.233): icmp_seq=2 ttl=54 time=36.9 ms [root@net-01 netctl]# traceroute google.com traceroute to google.com (173.194.116.233), 30 hops max, 60 byte packets 1 gw-01.praha.my-own-domain.net (10.11.1.254) 0.229 ms 0.194 ms 0.169 ms 2 172.16.1.254 (172.16.1.254) 1.093 ms 1.031 ms 0.971 ms 3 * * * 4 192.168.18.1 (192.168.24.1) 7.764 ms 7.860 ms 7.806 ms 5 192.168.0.1 (192.168.0.1) 7.814 ms 7.758 ms 14.566 ms 6 * * * 7 213.46.172.210 (213.46.172.210) 43.422 ms 45.386 ms 45.402 ms 8 209.85.246.93 (209.85.246.93) 43.169 ms 30.712 ms 29.304 ms 9 prg02s11-in-f9.1e100.net (173.194.116.233) 37.078 ms 30.072 ms 28.959 ms [root@net-01 ~]# pacman -Syu :: Synchronizing package databases... core 121.8 KiB 361K/s 00:00 [########################################] 100% extra 1745.6 KiB 102K/s 00:17 [########################################] 100% community 2.7 MiB 338K/s 00:08 [########################################] 100% :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... Packages (3) libevent-2.0.22-1 links-2.10-1 postfix-3.0.2-1 Total Download Size: 4.29 MiB Total Installed Size: 10.24 MiB Net Upgrade Size: 2.24 MiB :: Proceed with installation? [Y/n] |
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.
Pingback: Jak jsem nasadil IPv6 | brichacek.net
Pingback: Zajimave cteni | Blog J.Z. na NAS4y.NET
Pingback: Arch Linux on Orange Pi Zero | brichacek.net