This shows you the differences between two versions of the page.
rl:labs:09:contents:07 [2019/11/25 08:33] octavian.grigorescu |
rl:labs:09:contents:07 [2024/11/23 16:40] (current) laura.ruse [07. [5p] Download FTP folosind curl (fără autentificare)] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 07. [10p] Format de pachete la port forwarding ==== | + | ==== 07. [5p] Download FTP folosind curl (fără autentificare) ==== |
- | La exercițiul [[rl:labs:09:contents:03|]] am observat cum se modifică adresa IP sursă și portul sursă în cazul translatării de adrese. La port forwarding vom observa cum se modifică adresa IP destinație (de aici și numele DNAT: ''Destination NAT''). | + | Utilitarele ''curl'' și ''wget'' sunt folosite atât pentru transfer HTTP cât și pentru transfer FTP sau alte protocoale. Avantajul folosirii acestor utilitare în fața altora este că sunt neinteractive și pot fi adăugate în scripturi. |
- | Vom captura traficul SSH inițiat din exterior către stația ''red'', prin intermediul portului ''10022'' al stației ''host''. Este vorba de traficul înainte de //port forwarding//. Pentru aceasta, pe stația ''host'' vom folosi comanda<code bash> | + | Vom folosi ''curl'' pentru a descărca un fișier prin FTP. Pe stația ''red'' rulează un server FTP și pe stația ''host'' vom folosi comanda ''curl'' pentru a descărca fișierul localizat la ''/download/file-10M.dat'':<code bash> |
- | root@host:~# tcpdump -n -i eth0 tcp dst port 10022 -w /home/student/portfwd_eth0_output.pcap | + | root@host:~# curl ftp://red/download/file-10M.dat |
+ | Warning: Binary output can mess up your terminal. Use "--output -" to tell | ||
+ | Warning: curl to output it to your terminal anyway, or consider "--output | ||
+ | Warning: <FILE>" to save to a file. | ||
</code> | </code> | ||
+ | Observăm că apare un warning legat de output-ul de fișiere binare în terminal. | ||
- | Pe un alt terminal, tot pe stația ''host'' capturăm traficul **după** //port forwarding//, pe interfața ''veth-red'' către portul SSH (''22'') al stației red. Pe stația ''host'' folosim comanda<code bash> | + | Pentru a salva într-un fișier conținutul de la distanță folosim opțiunea ''-o'' a comenzii ''curl'':<code bash> |
- | root@host:~# tcpdump -n -i veth-red tcp dst port 22 -w /home/student/portfwd_veth-red_output.pcap | + | root@host:~# curl ftp://red/download/file-10M.dat -o file-10M.dat |
+ | % Total % Received % Xferd Average Speed Time Time Time Current | ||
+ | Dload Upload Total Spent Left Speed | ||
+ | 100 10.0M 100 10.0M 0 0 86.8M 0 --:--:-- --:--:-- --:--:-- 91.7M | ||
+ | root@host:~# ls -l file-10M.dat | ||
+ | -rw-r--r-- 1 root root 10485760 Nov 26 19:54 file-10M.dat | ||
</code> | </code> | ||
- | Pentru a genera trafic, de pe ''fep.grid.pub.ro'' realizăm o conexiune SSH la stația ''host'' pe portul ''10022'', conexiune ce va fi redirectată la portul ''22'' al stației ''red'':<code bash> | + | Mai sus utilitarul ''curl'' a afișat un sumar al transferului și apoi am validat, folosind comanda ''ls -l'' lungimea fișierului descărcat. URL-ul folosit începe cu ''%%ftp://%%'' pentru a semnaliza folosirea protocolului FTP pentru transfer. |
- | mihai.carabas@fep:~$ ssh -l root $ADRESA_IP_VM -p 10022 | + | |
- | root@host.local's password: | + | |
- | [...] | + | |
- | root@red:~# | + | |
- | </code> | + | |
- | <note important> | + | <note> |
- | Pentru a vizualiza capturile salvate în cele două fișiere copiați-le la voi local (pe calculatorul vostru) folosind ''scp'' și deschideți-le cu utilitarul ''wireshark''. | + | Același efect ca mai sus poate fi obținut prin rularea comenzii ''wget'':<code bash> |
+ | root@host:~# wget ftp://red/download/file-10M.dat | ||
+ | --2013-11-26 19:55:49-- ftp://red/download/file-10M.dat | ||
+ | => `file-10M.dat' | ||
+ | Resolving red (red)... 192.168.1.2 | ||
+ | Connecting to red (red)|192.168.1.2|:21... connected. | ||
+ | Logging in as anonymous ... Logged in! | ||
+ | ==> SYST ... done. ==> PWD ... done. | ||
+ | ==> TYPE I ... done. ==> CWD (1) /download ... done. | ||
+ | ==> SIZE file-10M.dat ... 10485760 | ||
+ | ==> PASV ... done. ==> RETR file-10M.dat ... done. | ||
+ | Length: 10485760 (10M) (unauthoritative) | ||
- | <spoiler (click pentru expandare) Copiere fișiere din VM pe local> | + | 100%[======================================>] 10,485,760 --.-K/s in 0.07s |
- | <code bash> | + | |
- | octavian.grigorescu@fep:~$ scp -i ~/.ssh/openstack.key student@$ADRESA_IP_VM:portfwd_veth-red_output.pcap ./ # Dacă fișierul pf_veth-red_output.pcap se află în directorul /home/student/ | + | 2013-11-26 19:55:49 (138 MB/s) - `file-10M.dat' saved [10485760] |
- | student@mjolnir:~$ scp octavian.grigorescu@fep.grid.pub.ro:portfwd_veth-red_output.pcap ./ # Dacă fișierul pf_veth-red_output.pcap se află în home-ul utilizatorului de pe fep. | + | |
</code> | </code> | ||
- | </spoiler> | ||
</note> | </note> | ||
- | |||
- | <note> | ||
- | Instalare și pornire ''Wireshark'': | ||
- | <code bash> | ||
- | student@mjolnir:~$ apt-get install wireshark | ||
- | student@mjolnir:~$ wireshark portfwd_eth0_output.pcap & | ||
- | student@mjolnir:~$ wireshark portfwd_veth-red_output.pcap & | ||
- | </code> | ||
- | </note> | ||
- | |||
- | În capturile realizate de comenzile de mai sus, observăm cum se translatează adresa IP și portul destinație din perechea ''<$ADRESA_IP_VM, 10022>'' în perechea ''<192.168.1.2, 22>''. |