This shows you the differences between two versions of the page.
rl:labs:09:contents:11 [2016/12/13 16:02] mihai.bucicoiu [11. [BONUS - 10p] Translatare selectivă de adrese] |
rl:labs:09:contents:11 [2023/11/05 13:10] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 11. [BONUS - 10p] Translatare selectivă de adrese ==== | + | ==== 11. [BONUS - 10p] Upload prin FTP ==== |
- | Pentru situația în care adresa IP exterioară a gateway-ului este adresă statică (nu dinamică) se recomandă folosirea acțiunii ''SNAT'' în loc de ''MASQUERADE'' la translatarea de adrese. Pe lângă aceasta, SNAT are avantajul precizării unui spațiu de adrese care să fie noile adrese (cele substituite) și a porturilor. | + | Dorim ca pe lângă download, să uploadăm fișiere prin FTP. Din rațiuni de securitate, nu se recomandă upload anonim, ci doar cu autentificare. |
+ | |||
+ | În directorul home al utilizatorului ''bogdan'' de pe stația ''host'' se găsește fișierul ''bogdan-ftp-data-3M.dat''. Folosiți ''curl'' pentru a uploada acest fișier în directorul home al utilizatorului ''ana'' de pe stația ''red''. | ||
<note tip> | <note tip> | ||
- | Informații despre folosirea ''SNAT'' și diferența dintre ''SNAT'' și ''MASQUERADE'' găsiți [[http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html|aici]]. | + | Căutați, în pagina de manual a comenzii ''curl'', șirul ''upload-file''. |
</note> | </note> | ||
- | Ștergeți regula anterioară de tip ''MASQUERADE'' și folosiți reguli de tip ''SNAT'' pentru a face următoarele translatări: | + | După ce ați realizat upload-ul, descărcați prin FTP, din directorul home al utilizatorului ''ana'', fișierul ''bogdan-ftp-data-3M.dat'' în directorul home al utilizatorului ''corina'' de pe stația ''host''. |
- | * conexiunile TCP către Internet de la stația ''red'' să iasă prin porturi din spațiul ''45000-50000''; | + | |
- | * conexiunile TCP către Internet de la stația ''green'' să iasă prin porturi din spațiul ''50000-55000''; | + | |
- | * conexiunile TCP către Internet de la stația ''blue'' să iasă prin porturi din spațiul ''55000-60000''; | + | |
- | * toate celelalte conexiuni să fie realizate în mod obișnuit, având ca adresă sursă adresa IP de exterior a stației ''host'' (această regulă trebuie să fie ultima). | + | |
- | + | ||
- | Verificați translatarea corectă inițiind conexiuni HTTP (folosind ''telnet'' și portul 80) către 195.95.178.234 de pe fiecare dintre cele trei stații de tip container (''red'', ''green'' și ''blue'') și folosind ''tcpdump'' pe stația ''host'' pentru a captura traficul aferent. | + | |
+ | <hidden> | ||
<solution -hidden> | <solution -hidden> | ||
- | Ștergem regula de tip ''MASQUERADE'', adăugăm cele patru reguli de tip ''SNAT'' și verificăm prezența acestora în tabela ''nat'':<code bash> | + | Folosim comanda de mai jos pentru a uploada fișierul ''bogdan-ftp-data-3M.dat'' prin FTP:<code bash> |
- | root@host:~# iptables -t nat -F POSTROUTING | + | bogdan@host:~$ curl --user ana:student --upload-file bogdan-ftp-data-3M.dat ftp://red/ |
- | root@host:~# iptables -t nat -A POSTROUTING -s 192.168.1.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:45000-50000 | + | % Total % Received % Xferd Average Speed Time Time Time Current |
- | root@host:~# iptables -t nat -A POSTROUTING -s 192.168.2.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:50000-55000 | + | Dload Upload Total Spent Left Speed |
- | root@host:~# iptables -t nat -A POSTROUTING -s 192.168.3.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:55000-60000 | + | 100 3072k 0 0 100 3072k 0 24.6M --:--:-- --:--:-- --:--:-- 26.0M |
- | root@host:~# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.56.101 | + | |
- | root@host:~# iptables -t nat -L POSTROUTING -n -v | + | |
- | Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 0 0 SNAT tcp -- * eth0 192.168.1.2 0.0.0.0/0 to:192.168.56.101:45000-50000 | + | |
- | 0 0 SNAT tcp -- * eth0 192.168.2.2 0.0.0.0/0 to:192.168.56.101:50000-55000 | + | |
- | 0 0 SNAT tcp -- * eth0 192.168.3.2 0.0.0.0/0 to:192.168.56.101:55000-60000 | + | |
- | 0 0 SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:192.168.56.101 | + | |
</code> | </code> | ||
- | + | Verificăm, în contul utilizatorului ''ana'' de pe stația ''red'' că fișierul este acolo:<code bash> | |
- | Pornim ''tcpdump'' pentru a captura mesaje destinate ''www.upb.ro'' pe portul ''80'', aferent HTTP:<code bash> | + | ana@red:~$ ls -l |
- | root@host:~# tcpdump -n -i any ip dst host www.upb.ro and tcp dst port 80 | + | total 8200 |
- | [...] | + | -rw-r--r-- 1 ana ana 5242880 Nov 26 19:49 ana-ftp-file-5M.dat |
- | 16:43:45.683809 IP 192.168.1.2.43031 > 141.85.166.61.80: Flags [.], ack 1461, win 17520, length 0 | + | -rw------- 1 ana ana 3145728 Nov 26 19:52 bogdan-ftp-data-3M.dat |
- | 16:43:45.683836 IP 192.168.56.101.45000 > 141.85.166.61.80: Flags [.], ack 1461, win 17520, length 0 | + | </code> |
- | 16:43:45.684033 IP 192.168.1.2.43031 > 141.85.166.61.80: Flags [.], ack 2921, win 20440, length 0 | + | Apoi descărcam, prin FTP, fișierul în directorul home al utilizatorului ''corina'' de pe stația ''host'':<code bash> |
- | 16:43:45.684041 IP 192.168.56.101.45000 > 141.85.166.61.80: Flags [.], ack 2921, win 20440, length 0 | + | corina@host:~$ curl --user ana:student ftp://red/bogdan-ftp-data-3M.dat --output bogdan-ftp-data-3M.dat |
- | [...] | + | % Total % Received % Xferd Average Speed Time Time Time Current |
- | 16:44:12.865807 IP 192.168.2.2.60147 > 141.85.166.61.80: Flags [.], ack 4105, win 23256, length 0 | + | Dload Upload Total Spent Left Speed |
- | 16:44:12.865811 IP 192.168.56.101.50000 > 141.85.166.61.80: Flags [.], ack 4105, win 23256, length 0 | + | 100 3072k 100 3072k 0 0 22.6M 0 --:--:-- --:--:-- --:--:-- 23.8M |
- | 16:44:12.885166 IP 192.168.2.2.60147 > 141.85.166.61.80: Flags [.], ack 5473, win 25992, length 0 | + | corina@host:~$ ls -l |
- | 16:44:12.885175 IP 192.168.56.101.50000 > 141.85.166.61.80: Flags [.], ack 5473, win 25992, length 0 | + | total 3072 |
- | [...] | + | -rw-rw-r-- 1 corina corina 3145728 Nov 26 21:54 bogdan-ftp-data-3M.dat |
- | 16:44:27.929672 IP 192.168.3.2.59957 > 141.85.166.61.80: Flags [.], ack 5473, win 25992, length 0 | + | |
- | 16:44:27.929683 IP 192.168.56.101.59957 > 141.85.166.61.80: Flags [.], ack 5473, win 25992, length 0 | + | |
- | 16:44:27.929902 IP 192.168.3.2.59957 > 141.85.166.61.80: Flags [.], ack 6841, win 28728, length 0 | + | |
- | 16:44:27.929918 IP 192.168.56.101.59957 > 141.85.166.61.80: Flags [.], ack 6841, win 28728, length 0 | + | |
</code> | </code> | ||
- | Observăm că translatarea TCP se face în spațiul de porturi definit prin regulile de mai sus. | ||
</solution> | </solution> | ||
+ | </hidden> |