This shows you the differences between two versions of the page.
rl:labs:09:contents:02 [2013/11/17 13:04] mihai.carabas [02. Formatul pachetelor după translatare] |
rl:labs:09:contents:02 [2023/11/05 13:06] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 02. Formatul pachetelor după translatare ==== | + | ==== 02. [10p] Port forwarding pentru accesare serviciu web ==== |
- | * tutorial | + | Pe stația ''red'' este instalat un server de HTTP pe care dorim să îl accesăm de pe stația ''fep.grid.pub.ro''. Pentru acest lucru trebuie trebuie să redirectați portul ''8080'' de pe stația ''host'' spre portul ''80'' de pe stația ''red'' folosind DNAT (vezi [[rl:labs:08:contents:05|]]). |
- | * captură de trafic cu tpcdump, văzut antetul IP pentru ping și pentru wget | + | |
- | Dorim să observăm cum arată antetul IP al pachetelor ce sunt generate de stațiile ''red'', ''green'' și ''blue'' și au ca destinație o rețea din Internet. Pentru acest lucru vom folosi utilitarul de captură ''tcpdump''. | + | |
- | Intrați pe stația ''red'' și porniți comanda ''ping'' către ''8.8.8.8.'':<code bash> | + | Pentru testare, deschideți terminal pe ''fep.grid.pub.ro'' și accesați site-ul ''http://10.9.X.Y:8080'' (înlocuiți cu IP-ul) prin intermediul utilitarului ''curl''. Vă va apărea un cod HTML cu mesajul //Laboratorul 10 - pe red//. Exemplu: <code bash> |
- | root@host:~# go red | + | student@mjolnir:~$ ssh -X mihai.carabas@fep.grid.pub.ro |
- | [...] | + | mihai.carabas@fep.grid.pub.ro's password: |
- | root@red:~# ping 8.8.8.8 | + | |
- | PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | + | [your.name@fep-62-2 ~]$ curl http://10.9.X.Y:8080 |
- | 64 bytes from 8.8.8.8: icmp_req=1 ttl=127 time=42.0 ms | + | |
- | </code> | + | |
- | Deschideți un nou terminal către ''host''. **NU** închideți comanda ''ping'' de pe ''red''. În terminalul nou deschis de pe ''host'' executați comanda:<code bash> | + | |
- | root@host:~# tcpdump -i eth0 dst 8.8.8.8 | + | |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | |
- | listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes | + | |
- | 12:59:20.976707 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 625, seq 6, length 64 | + | |
- | 12:59:21.977708 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 625, seq 7, length 64 | + | |
</code> | </code> | ||
- | Observați că adresa IP sursă este ''host.local'' chiar dacă stația ''red'' este cea care execută comanda ''ping''. Porniți ''tcpdump'' pe interfața ''veth-red'' în loc de ''eth0'': <code bash> | + | <hidden> |
- | 0 packets dropped by kernel | + | <solution> |
- | root@host:~# tcpdump -i veth-red dst 8.8.8.8 | + | Introducem regula de tip ''DNAT'' în lanțul ''PREROUTING'' pe stația ''host'' și validăm introducerea acestei reguli:<code bash> |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.2:80 |
- | listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes | + | root@host:~# iptables -t nat -L PREROUTING -n -v |
- | 13:01:12.557692 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 6, length 64 | + | Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) |
- | 13:01:13.559726 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 7, length 64 | + | pkts bytes target prot opt in out source destination |
+ | 2 120 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:192.168.1.2:80 | ||
</code> | </code> | ||
- | + | Accesăm URL-ul %%http://<adresa-ip-mv>:8080/index.html%% din browser-ul grafic (Firefox, Chrome) de pe stația fizică și apare mesajul //Laboratorul 10 - pe red//. | |
- | Observați că pe interfața veth-red adresa IP sursă este cea a lui ''red''. Motivul este reprezentat de faptul că pachetele ce intră pe intefața ''veth-red'' sunt capturate înainte de rutare, iar procesul NAT este aplicat **după rutare** (vezi [[rl:labs:09:contents:01|]]. | + | </solution> |
- | + | </hidden> | |
- | Repetați testele de mai sus pentru stația ''green''. | + |