This shows you the differences between two versions of the page.
rl:labs:09:contents:06 [2013/11/17 13:55] mihai.carabas [06. Formatul pachetelor în urmat DNAT] |
rl:labs:09:contents:06 [2023/11/05 13:08] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 06. Formatul pachetelor în urmat DNAT ==== | + | ==== 06. [5p] Accesare de pagini web folosind curl ==== |
- | * exercițiu | + | Utilitarul ''wget'' este folosit pentru a descărca fișiere prin intermediul web. Utilitarul ''curl'' îndeplinește un rol similar, doar că afișează în mod implicit conținutul resurselor la consolă. Este indicat pentru afișarea de pagini web (format HTML) sau alte fișiere în format text. |
- | * captură de trafic cu tcpdump pentru trafic SSH | + | |
- | La exercițiul [[rl:labs:09:contents:02|]] am observat cum se modifică adresa IP sursă în cazul translatării de adrese. La port forwarding (DNAT) vom observa cum se modifică adresa IP destinație (de aici și numele de ''Destination NAT''). | + | Spre exemplu, dacă vrem să afișăm conținutul paginii de la adresa ''http://red/index.html'' vom folosi comanda:<code bash> |
- | + | root@host:~# curl http://red/index.html | |
- | Realizați o conexiune SSH de pe mașina fizică (cea cu Desktop) pe portul ''22000'' pentru a vă conecta la stația ''red'', după care porniți comanda ''ping 8.8.8.8''. | + | <h1>Laborator 10 - pe red</h1> |
- | + | ||
- | Într-un alt terminal, pe stația ''host'' porniți captura de pachete pe interfața ''veth-red'':<code bash> | + | |
- | root@host:~# tcpdump -i veth-red | + | |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | |
- | listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes | + | |
- | ^C13:48:09.913394 IP 192.168.138.1.53916 > red.ssh: Flags [P.], seq 2954975148:2954975200, ack 2484938071, win 16335, length 52 | + | |
</code> | </code> | ||
+ | Observăm că output-ul comenzii ''curl'' este conținutul fișierului ''index.html'' descărcat anterior cu ''wget''. | ||
- | Observați că adresa IP destinație este ''red'' și portul ''ssh''(22), deși voi v-ați conectat pe adresa IP a stației ''host'' și portul ''22000''. Pentru a vedea cum arată pachetele înainte de DNAT, vom porni captura de trafic pe interfața ''eth0'':<code bash> | + | Un exemplu în mod particular util este aflarea adresei IP (externe) prin interogarea site-ului ''icanhazip.com'':<code bash> |
- | root@host:~# tcpdump -i eth0 dst port 22000 | + | root@host:~# curl icanhazip.com |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | 141.85.225.204 |
- | listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes | + | |
- | 13:53:37.564071 IP 192.168.138.1.53916 > host.local.22000: Flags [.], ack 2484940535, win 16121, length 0 | + | |
- | 13:53:38.565650 IP 192.168.138.1.53916 > host.local.22000: Flags [.], ack 153, win 16083, length 0 | + | |
- | 13:53:39.567203 IP 192.168.138.1.53916 > host.local.22000: Flags [.], ack 305, win 16425, length 0 | + | |
- | 13:53:40.568971 IP 192.168.138.1.53916 > host.local.22000: Flags [.], ack 457, win 16387, length 0 | + | |
</code> | </code> | ||
+ | Observăm că în urma interogării site-ului ''icanhazip.com'', output-ul comenzii ''curl'' este adresa noastră IP externă (rutabilă). | ||
- | Observați că adresa IP destinație este ''host'' și portul este ''22000''. La comanda de captură s-a mai adăugat un filtru suplimentar pentru a nu captura traficul SSH generat de conexiunea curentă la stația ''host''. | + | În general output-ul întors de ''curl'' poate fi prelucrat folosind filtre de text (''grep'', ''cut'', ''tr'', ''sort'', ''awk'', ''sed'' etc.) pentru a obține informațiile de interes. |