This shows you the differences between two versions of the page.
rl:labs:09:contents:02 [2013/11/17 13:05] 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 ==== |
- | 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''. | + | 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|]]). |
- | 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'' și generează pachetele de tip ''ICMP echo request''. | + | <hidden> |
- | + | <solution> | |
- | Porniți ''tcpdump'' pe interfața ''veth-red'' în loc de ''eth0'': <code bash> | + | Introducem regula de tip ''DNAT'' în lanțul ''PREROUTING'' pe stația ''host'' și validăm introducerea acestei reguli:<code bash> |
- | 0 packets dropped by kernel | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.2:80 |
- | root@host:~# tcpdump -i veth-red dst 8.8.8.8 | + | root@host:~# iptables -t nat -L PREROUTING -n -v |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) |
- | listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes | + | pkts bytes target prot opt in out source destination |
- | 13:01:12.557692 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 6, length 64 | + | 2 120 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:192.168.1.2:80 |
- | 13:01:13.559726 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 7, length 64 | + | |
</code> | </code> | ||
- | 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|]]. | + | 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//. |
- | + | </solution> | |
- | Repetați testele de mai sus pentru stația ''green''. | + | </hidden> |