Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:09:contents:04 [2013/11/26 15:27]
razvan.deaconescu created
rl:labs:09:contents:04 [2024/12/04 17:52] (current)
laura.ruse [04. [15p] Descărcare recursivă de resurse web]
Line 1: Line 1:
-==== 04. [10pConfigurare incorectă a translatării ====+==== 04. [15pDescărcare recursivă de resurse web ====
  
-Comanda folosită mai sus pentru translatarela [[:​rl:​labs:​09:​contents:​01]],​ are neajunsuri pe care le vom identifica mai jos.+La adresa ''​%%http://​red/​folder%%''​ se află o structură de directoare și fișiere. Pe stația ''​host''​descărcați întreaga structură folosind o singură comandă ''​wget''​ cu parametrul corespunzător.
  
-Pe stația ''​red''​ executăm comanda ​''​ping'' ​către stația ​''​green''​:<code bash> +<note tip> 
-root@red:~# ping -c 2 green +Pentru a identifica opțiunea corespunzătoare, căutați în pagina de manual a ''​wget'' ​după șirul ​''​recursive''​. 
-PING green (192.168.2.2) 56(84) bytes of data. +</note>
-64 bytes from green (192.168.2.2):​ icmp_req=1 ttl=63 time=0.155 ms +
-64 bytes from green (192.168.2.2):​ icmp_req=2 ttl=63 time=0.086 ms +
-[...] +
-</code>+
  
-Pe stația ''​green'' ​capturăm traficul pe interfața ​''​eth0'' ​folosind comanda ​''​tcpdump'':<​code bash> +Folosiți utilitarul ​''​tree'' ​pentru a lista conținutul directorului descărcat. Este posibil ca pachetul ​''​tree'' ​să fie deja instalat pe ''​host''​. Dacă nu este instalat, atunci puteți folosi următoarea comandă pentru a-l instala: 
-root@green:~# tcpdump ​-i eth0 +<code bash> 
-tcpdump: verbose output suppressed, use -v or -vv for full protocol decode +root@host:~# apt-get install tree
-listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes +
-11:​18:​54.535064 IP host > green: ICMP echo request, id 633, seq 17, length 64 +
-11:​18:​54.535092 IP green > host: ICMP echo reply, id 633, seq 17, length 64 +
-[...]+
 </​code>​ </​code>​
  
-Observăm că adresa sursă a pachetelor de tip ''​ICMP echo request''​ este stația ''​host''​, nu stația ''​red''​. ​Acest lucru se întâmplă din cauză că atunci când am activat NAT nu am specificat pentru ce tip de trafic să aplice politica ​de translatareAstfel stația ''​host''​ aplică politica ​de NAT pentru tot traficul ​care o tranzitează. Dorim să aplicăm politica doar pentru pachetele ce **ies** în Internet, adică cele ale căror **interfață de ieșire** este interfaț''​eth0''​. Vom șterge vechea regulă de NAT șvom adăuga ​regulă corectă.+Când rulaț''​tree'' ​pe directorul descărcat observați prezența mai multor fișiere cu nume de forma ''​index.html?​C=S;​O=D''​. ​Aceste fișiere sunt fișiere de tip directory listing generate ​de serverul web și nu avem nevoie ​de eleȘtergeți structura ​de directoare pe care tocmai ați descărcat-o pe stația ''​host''​ și descărcați-din nou ignorând aceste fișiere.
  
-Pentru ștergerea vechii reguli de NAT rulăm pe stația ''​host''​ comanda<code bash+<note tip
-root@host:~# iptables ​-t nat -D POSTROUTING ​-j MASQUERADE +Urmăriți discuția de [[http://​stackoverflow.com/​questions/​273743/​using-wget-to-recursively-fetch-a-directory-with-arbitrary-files-in-it|aici]]. Să aveți în vedere și partea din discuția care conține șirul //​%%"​without the hostname"​%%//​. 
-</code+</note
-Verificăm faptul că nu mai există comanda<​code ​bash+ 
-root@host:​~# ​iptables -t nat -L POSTROUTING -n -v +Structura de directoare trebuie să fie similară cu:<​code>​ 
-Chain POSTROUTING (policy ACCEPT 1 packets, 328 bytes) +root@host:​~# ​tree folder/ 
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination+folder/ 
 +├── embedded 
 +│   ├── Qualcomm 
 +│   │   ├── Krait 
 +│   │   │   └── info.txt 
 +│   │   └── Scorpion 
 +│   │   ​    ​└── info.txt 
 +│   └── TI 
 +│   ​    ​├── OMAP3 
 +│   ​    ​│   └── info.txt 
 +│   ​    ​└── OMAP4 
 +│   ​        ​└── info.txt 
 +└── mobile 
 +    ├── Apple 
 +    │   ├── iPadAir 
 +    │   │   └── info.txt 
 +    │   └── iPhone5S 
 +    │   ​    ​└── info.txt 
 +    └── Google 
 +        ├── Nexus4 
 +        │   └── info.txt 
 +        └── Nexus7 
 +            └── info.txt 
 + 
 +14 directories,​ 8 files
 </​code>​ </​code>​
  
-Adăugăm din nou regula de NAT, dar de data aceasta vom specifica să aplice politica de NAT pachetelor ce ies prin interfaț''​eth0'' ​a stației ''​host'':<​code bash> +<​hidden>​ 
-root@host:​~# ​iptables ​-t nat -A POSTROUTING -o eth0 -j MASQUERADE+<​solution>​ 
 +Pentru descărcarea inițială folosim comanda ​''​wget'' ​cu opțiunea ''​-r''​ apoi rulăm ''​tree'':<​code bash> 
 +root@host:​~# ​wget -r http://​red/​folder/​ 
 +[...] 
 +root@host:​~#​ tree red/ 
 +[...]
 </​code>​ </​code>​
-Verificați că regula a fost inserată:<code bash> +Ștergem vechea structură:<code bash> 
-root@host:​~# ​iptables ​-t nat -L POSTROUTING -n -v +root@host:​~# ​rm -fr folder/
-Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) +
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination +
-    0     0 MASQUERADE ​ all  --  *      eth0    0.0.0.0/​0 ​           0.0.0.0/0+
 </​code>​ </​code>​
-Observăm prezența interfaței ​''​eth0''​ în coloana ''​out''​. ​Înainte apărea caracterul ''​*'',​ adică orice interfață. +Ca să avem un output mai aranjat, rulăm următoarea comandă ​''​wget''​:<code bash> 
- +root@host:​~#​ wget -r -nH -np --reject "index.html*" http://​red/​folder/​ 
-Repetați testul de la începutul exercițiului ​și arătați că pachetele trimise de la ''​red''​ către ''​green''​ au adresele IP sursă/​destinație nemodificate (nu mai fac trecerea prin NAT), în vreme ce pachetele ce ies în Internet sunt translatate.+</​code>​ 
 +Se vor descărca astfel doar fișierele utilecele existente ​în structura de directoare de pe server. 
 +</​solution>​ 
 +</​hidden>​
rl/labs/09/contents/04.1385472429.txt.gz · Last modified: 2013/11/26 15:27 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0