pokročilejší síťování v linuxu - openalt · obsah 1 rychlýpřehled 2 vícesízároveň 3...

29
Pokročilejší síťování v Linuxu Ondřej Caletka 3. listopadu 2019 Uvedené dílo podléhá licenci Creaঞve Commons Uveďte autora 3.0 Česko. Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 1 / 29

Upload: others

Post on 24-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Pokročilejší síťování v Linuxu

Ondřej Caletka

3. listopadu 2019

Uvedené dílo podléhá licenci Crea ve Commons Uveďte autora 3.0 Česko.

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 1 / 29

Page 2: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

O sdružení CESNET

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 2 / 29

Page 3: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Obsah

1 Rychlý přehled

2 Více sí zároveň

3 Prak cký příklad − WireGuard

4 Demo

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 3 / 29

Page 4: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Rychlý přehled

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 4 / 29

Page 5: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Konfigurace sítě

zastaralé nástroje: ifconfig, route, netstat, brctlmoderní nástroje: ip, ip route, ss, ip linkvšechny změny jsou neperzistentní; zajištění perzistence se liší podledistribuceneexistuje žádný reset síťového stacku

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 5 / 29

Page 6: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

iproute2

ip link vytváření a editace síťových rozhraníip address nastavování IP adresip route práce se směrovacími tabulkamiip rule práce pravidly směrování (policy based rou ng)

ss sta s ka otevřených soketůbridge nastavení mostů

tc nastavení front

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 6 / 29

Page 7: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Příklad ruční konfigurace sítě# ip link set dev eth0 up# ip addr add dev eth0 192.168.1.2/24# ip rou add default via 192.168.1.1# echo "nameserver 4.2.2.1" >/etc/resolv.conf

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 7 / 29

Page 8: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

/etc/resolv.conf

nameserver <IP> adresa serveru (max. 3×)domain <d> místní doména

search <d> <d>… prohledávací seznamop ons rotate … náhodně měnit použitý DNS serverop ons … edns0 používat EDNS0 (např. DNSSEC)Soubor může být spravován Network Managerem, u litou resolvconf nebojinak.

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 8 / 29

Page 9: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

systemd-resolved

userspace implementace stub resolverudbus, glibc a DNS APIresolvování lokálních jmen z /etc/hosts, jména _gatewayjména bez tečky jsou resolvována pomocí LLMNRje možné směrovat na různé DNS servery v závislos na dotazovaném jménupodpora validace DNSSEC

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 9 / 29

Page 10: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Konfigurace IPv6

minimální implementace vestavěná v jádřednes často vypnutá ve prospěch komplexnější implementace v userspaceautoma cké nastavení směrování podle ohlášení směrovačůautoma cké nastavení IP adres pomocí SLAACvyčištění pomocí ip -6 addr flush dev eth0 scope globalkonfigurace pomocí voleb sysctl:

net.ipv6.conf.eth0.accept_ra povolí zpracování RAnet.ipv6.conf.eth0.autoconf povolí automa ckou konfiguraci adres

(=2 i v režimu směrovače)

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 10 / 29

Page 11: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Základní u lity

ping posílá ICMP echo-requesttraceroute hledá cestu pomocí UDP, TCP, nebo ICMP

mtr lepší traceroutearping objevuje stanice na segmentu pomocí ARPhost provádí DNS dotazyi op vizualizuje toky na rozhraní

tcpdump zaznamenává a analyzuje obsah přenášených zpráv

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 11 / 29

Page 12: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Více sí zároveň

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 12 / 29

Page 13: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Připojení k více sí m zároveň

pro komunikaci se sousedy není problémnelze mít víc výchozích brannelze mít víc DNS serverů

Jednoduché řešení pomocí ip route from (pouze IPv6)# ip link set dev eth1 up# ip addr add dev eth1 2001:db8:1::2/24# ip rout add default from 2001:db8:1::2 via 2001:db8:1::1

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 13 / 29

Page 14: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Která adresa se použije?

Originující provoz používající anonymní soket1 místní adresu neznáme2 vybereme vzdálenou adresu3 hledáme cestu ke vzdálené adrese, místní stále neznáme4 zvolíme vhodnou místní adresu

Terminovaný provoz a pojmenovaný soket1 místní adresa je pevně určená a neměnná2 hledáme cestu ke vzdálené adrese

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 14 / 29

Page 15: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Policy rou ng

lze vytvořit víc směrovacích tabulekpravidla ip rule vybírají, která tabulka bude použitatabulky lze pojmenovat čísly nebo v /etc/iproute2/rt_tables

Příklad policy rou ngu# ip link set dev eth1 up# ip addr add dev eth1 172.17.1.2/24# ip rou add default via 172.17.1.1 table 123# ip rule add from 172.17.1.2 lookup 123

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 15 / 29

Page 16: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Základní směrovací tabulkylocal cache cest, např. pro objevování MTU trasymain výchozí směrovací tabulka

default prázdná tabulka s nejnižší prioritou

Možná pravidla policy rou ngu[ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmarkFWMARK[/MASK] ] [ iif STRING ] [ oif STRING ] [ pref NUMBER] [ uidrange NUMBER-NUMBER ] [ ipproto PROTOCOL ] [ sport [NUMBER | NUMBER-NUMBER ] ] [ dport [ NUMBER | NUMBER-NUMBER] ]

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 16 / 29

Page 17: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Virtual Rou ng and Forwarding (-lite)

možnost rozdělit jednotlivá rozhraní do virtuálních směrovačůprovádí se pomocí speciálního master rozhraní typu vrfpříslušná slave rozhraní používají společnou samostatnou směrovací tabulkuIP adresy se mohou opakovat v různých doménách VRFběžné síťové služby provoz VRF nevidítýká se pouze IP; linkové protokoly nadále používají všechna rozhraní

https://www.kernel.org/doc/Documentation/networking/vrf.txtOndřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 17 / 29

Page 18: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Network namespaces

stavební prvek linuxových kontejnerůlze použít i samostatněkaždá síťová karta je právě v jednom NS

Přestěhování eth0 do vlastního NS# ip netns add testovani# ip link set eth0 netns testovani# ip netns exec testovani bash…# ip netns delete testovani

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 18 / 29

Page 19: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Na co se často zapomíná

směrování je ve výchozím stavu vypnutoprivátní adresy na internet nepatřínasměrované, ale nepoužívané adresy zahazujeme

# sysctl net.ipv4.ip_forward=1# ip route add unreachable 192.168.0.0/16# ip -6 route add unreachable 2001:db8::/32

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 19 / 29

Page 20: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Prak cký příklad − WireGuard

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 20 / 29

Page 21: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

WireGuard

nový VPN protokol přenášející IP datagramy v UDP zpráváchmimo jiné velmi efek vní implementace v jádře Linuxuauten zace veřejným klíčem (jako SSH), vazba klíče a IP adresspolupráce s namespaceselegantní řešení problému „cyklu VPN“nově veřejná bezplatná WireGuard VPN – Cloudflare Warp

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 21 / 29

Page 22: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Problém „cyklu VPN“většina uživatelů chce do VPN směrovat veškerý provozdata samotné VPN však musí procházet mimo VPN

Obvyklé řešenívýchozí brána zůstane původnípřidají se dva záznamy 0/1 a 128/1 směrem do VPNpřidá se záznam s cílovou adresou VPN koncentrátoru a původní výchozíbranou

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 22 / 29

Page 23: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Problém obvyklého řešenípři výpadku fyzického rozhraní se VPN zacyklíobnovení neproběhne automa ckyprovoz k IP adrese VPN koncentrátoru neprochází VPN

Řešení použité ve WireGuard# ip -6 route add ::/0 dev wgcf table 1234# wg set wgcf fwmark 51820# ip -6 rule add not fwmark 51820 table 1234# ip -6 rule add table main suppress_prefixlength 0

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 23 / 29

Page 24: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Kompa bilita s namespaces

UDP soket pro předávání šifrovaného provozu je vytvořen při založení tunelurozhraní tunelu je možné přesunout do jiného namespacedva scénáře použi :

1 chráněný namespace s přístupem pouze k tunelu2 veřejný namespace s přístupek k fyzickým rozhraním

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 24 / 29

Page 25: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Cloudflare Warp

veřejná VPN postavená na (drobně upraveném) WireGuardudostupná prostřednictvím aplikace 1.1.1.1 pro Android a iOSplně podporuje IPv6 vně i uvnitř tunelupoužívá NAT pro IPv4 i IPv6kvůli unikátním lokálním IPv6 adresám není IPv6 nikdy preferováno

Root.cz: Cloudflare spus l bezplatnou VPN pro všechny. IPv6 používá NATOndřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 25 / 29

Page 26: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Cloudflare Warp na počítači

link

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 26 / 29

Page 27: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Cloudflare Warp na Linuxu

link

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 27 / 29

Page 28: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Demo

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 28 / 29

Page 29: Pokročilejší síťování v Linuxu - OpenAlt · Obsah 1 Rychlýpřehled 2 Vícesízároveň 3 Prakckýpříklad−WireGuard 4 Demo OndřejCaletka (CESNET,z.s.p.o.) PokročilejšísíťovánívLinuxu

Děkuji za pozornost

Ondřej [email protected] ps://Ondřej.Caletka.cz

Prezentace je již nyní k dispozici ke stažení.

Ondřej Caletka (CESNET, z. s. p. o.) Pokročilejší síťování v Linuxu 3. listopadu 2019 29 / 29