# Nástroje

Přehled toho, co použít, kdy a jak číst výstup. Systematický postup je v [diagnostice](Diagnostika) — tohle je referenční příručka.

## ping

Nejzákladnější test. Pošle paket a čeká na odpověď.

```
ping 8.8.8.8
ping -c 4 seznam.cz          # jen čtyři pakety
ping -6 ipv6.google.com      # přes IPv6
ping -M do -s 1472 8.8.8.8   # test MTU
```

Co ti řekne odpověď:

- **odpovídá** — cesta tam i zpátky funguje
- **Request timeout** — nic nedorazilo, nebo se ztratila odpověď
- **Destination host unreachable** — někdo na cestě neví, kudy dál, a řekl ti to
- **Destination net unreachable** — totéž, ale o celé síti

Pozor na dvě věci. Za prvé, spousta serverů ping ignoruje z principu, takže nedostat odpověď neznamená, že server neběží. Za druhé, ping měří kompletní okružní cestu — když je odezva vysoká, nevíš, na které straně.

## traceroute a mtr

Ukáže, kudy paket letí. Využívá [TTL](Smerovani) — postupně posílá pakety s TTL 1, 2, 3 a sbírá stížnosti od routerů po cestě.

```
traceroute 8.8.8.8           # Linux, macOS
tracert 8.8.8.8              # Windows
traceroute -T -p 443 seznam.cz   # přes TCP, prochází firewally
```

`mtr` je traceroute, který běží pořád dokola a počítá statistiku. Pro hledání ztrátovosti je nesrovnatelně lepší:

```
mtr 8.8.8.8
mtr -c 500 -r 8.8.8.8        # 500 cyklů, textový report
mtr -6 -c 500 -r ipv6.google.com
```

### Jak číst výstup

Tohle je místo, kde se dělá nejvíc chyb.

**Hvězdičky uprostřed cesty nic neznamenají.** Ten router prostě neodpovídá na ping, protože to má nastavené jako nejnižší prioritu. Pokud se provoz dostane dál, je všechno v pořádku.

**Ztrátovost na jednom uzlu, která se dál neopakuje, taky nic neznamená.** Ze stejného důvodu.

**Ztrátovost, která začne na nějakém uzlu a pokračuje až do konce, je skutečný problém.** Tohle hledáš.

**Skok v latenci je normální**, když trasa jde přes oceán nebo mezi poskytovateli. Podezřelé je až to, když latence vyskočí a už neklesne, aniž by se změnila geografie.

## dig

Nástroj na DNS. Zapomeň na `nslookup`, `dig` je lepší ve všem.

```
dig seznam.cz                 # A záznam
dig seznam.cz AAAA            # IPv6
dig seznam.cz MX              # pošta
dig @8.8.8.8 seznam.cz        # dotaz na konkrétní server
dig +short seznam.cz          # jen odpověď, bez balastu
dig +trace seznam.cz          # celá cesta hierarchií od kořene
dig -x 8.8.8.8                # zpětný překlad
```

Nejužitečnější trik je porovnat vlastní resolver s cizím. Když `dig @8.8.8.8` funguje a `dig` bez parametru ne, máš rozbitý resolver, ne DNS obecně.

`+trace` je nedocenitelný, když ladíš vlastní doménu — ukáže přesně, na které úrovni hierarchie se to láme.

## nmap

Zjistí, co je na daném stroji dostupné.

```
nmap -Pn 192.168.1.10          # běžné porty
nmap -p- 192.168.1.10          # všech 65535, trvá to minuty
nmap -sV -p 443 example.com    # jaká verze čeho tam běží
nmap -sn 192.168.1.0/24        # kdo všechno je v síti
```

Přepínač `-Pn` znamená „nepinguj napřed, jen skenuj". Bez něj nmap přeskočí stroje, které neodpovídají na ping, což jsou dnes skoro všechny Windows.

Poslední řádek je mimochodem nejrychlejší způsob, jak zjistit, co ti vlastně v síti běží. Doporučuju spustit — většina lidí je překvapená.

Skenuj jen vlastní sítě a stroje, ke kterým máš oprávnění.

## ss a netstat

Co poslouchá na tomhle stroji a jaká spojení jsou otevřená.

```
ss -tulpn                     # Linux: poslouchající TCP i UDP s procesy
ss -tn state established      # aktivní spojení
netstat -ano                  # Windows
lsof -i -P -n                 # macOS
```

Souvislosti jsou v [porty a spojení](Porty-a-spojeni).

## tcpdump

Když všechno ostatní selže, podívej se, co skutečně letí po drátě. Strmější křivka učení, ale nic jiného ti neřekne pravdu.

```
tcpdump -i eth0 -n                          # všechno, bez překladu jmen
tcpdump -i eth0 -n host 192.168.1.10        # jen provoz s tímhle strojem
tcpdump -i eth0 -n port 53                  # jen DNS
tcpdump -i eth0 -n icmp                     # jen ping
tcpdump -i eth0 -n arp                      # jen ARP
tcpdump -i eth0 -w zaznam.pcap              # do souboru pro Wireshark
```

Typické použití: zapneš tcpdump na routeru, vyvoláš problém a díváš se, jestli pakety vůbec dorazily. To jediné rozliší „firewall to zahodil" od „nikdy to nepřišlo", což jsou dvě úplně jiné diagnózy.

Pro vizuální analýzu ulož do souboru a otevři ve **Wiresharku**. Ten umí skládat TCP spojení dohromady a ukázat celý průběh.

## iperf3

Měření skutečné propustnosti mezi dvěma body.

```
iperf3 -s                     # server
iperf3 -c 192.168.1.10        # klient
iperf3 -c 192.168.1.10 -R     # opačný směr
iperf3 -c 192.168.1.10 -u -b 100M   # UDP, pro test ztrátovosti
```

Tohle je jediný poctivý způsob, jak změřit domácí síť. Speedtest v prohlížeči měří cestu k cizímu serveru a míchá do toho poskytovatele.

Když ti iperf3 mezi dvěma stroji v LAN ukáže 940 Mb/s, máš zdravý gigabit. Když ukáže 300, hledej kabel nebo poloduplex.

## curl

Univerzální nástroj na testování HTTP a nejen jeho.

```
curl -v https://seznam.cz                    # celý průběh včetně TLS
curl -I https://seznam.cz                    # jen hlavičky
curl -4 https://ifconfig.co                  # moje veřejná IPv4
curl -6 https://ifconfig.co                  # moje veřejná IPv6
curl --resolve seznam.cz:443:1.2.3.4 https://seznam.cz   # obejít DNS
```

Ten poslední trik je zlatý při stěhování webu — otestuješ nový server na správné doméně ještě předtím, než přepneš DNS.

## Rychlá referenční tabulka

| Chci zjistit | Použij |
|---|---|
| Je to vůbec dostupné? | `ping` |
| Kudy to jde a kde se to ztrácí? | `mtr` |
| Překládá se jméno? | `dig` |
| Co je na tom stroji otevřené? | `nmap` |
| Co poslouchá u mě? | `ss -tulpn` |
| Dorazily pakety vůbec? | `tcpdump` |
| Jak je to rychlé? | `iperf3` |
| Co odpovídá webserver? | `curl -v` |
| Jaká je moje veřejná adresa? | `curl ifconfig.co` |
