This shows you the differences between two versions of the page.
rl:labs:08:contents:05 [2020/09/13 07:24] iulia.florea |
rl:labs:08:contents:05 [2023/11/05 12:55] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 5. [10p] Download și upload de director folosind ''scp'' ==== | + | ==== 05. [10p] Port forwarding ==== |
- | **Indicație**: Pentru download-ul și upload-ul unui director folosiți opțiunea ''-r'' a comenzii ''scp''. | + | La exercițiile de până acum am folosit NAT pentru a permite stațiilor cu adrese private dintr-o rețea locală să acceseze Internetul. NAT poate fi folosit și pentru a permite unei stații din rețeaua locală să fie accesată din Internet, adică să se inițieze conexiuni din Internet. Acest proces poartă numele de //port forwarding//. |
- | Vom folosi două directoare: | + | Dorim să putem accesa prin SSH, din Internet, stația ''red''. Acest lucru nu este posibil în mod implicit întrucât stația ''red'' are adresă IP privată. Soluția este "deschiderea unui port" pe gateway (adică stația ''host'') și redirectarea acestui port (//port forwarding//) către portul aferent serviciului SSH (portul TCP ''22'') de pe stația ''red''. |
- | * directorul ''assignment/'' din directorul home al utilizatorului ''student'' de pe stația ''host''; | + | |
- | * directorul ''solution/'' din directorul home al utilizatorului ''corina'' de pe stația ''blue''. | + | |
- | Din contul ''corina'' de pe stația ''blue'', **descărcați** directorul ''assignment/'' **din** directorul home al utilizatorului ''student'' de pe stația ''host''. | + | Vom aplica pe stația ''host'' o regulă prin care redirectăm traficul ce vine către ''host'' pe portul ''10022'' către portul ''22'' (SSH) al stației ''red'' (adresa IP ''192.168.1.2''):<code bash> |
+ | root@host:~# iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:22 | ||
+ | </code> | ||
- | <hidden> | + | Verificăm aplicarea regulii prin consultarea lanțului ''PREROUTING'' din tabela NAT:<code bash> |
- | <solution> | + | root@host:~# iptables -t nat -L PREROUTING -n -v |
- | <code bash> | + | Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) |
- | corina@blue:~$ scp -r student@host:assignment . | + | pkts bytes target prot opt in out source destination |
- | quadratic.txt 100% 17 0.0KB/s 00:00 | + | 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 |
- | cubic.txt 100% 24 0.0KB/s 00:00 | + | </code> |
- | linear.txt 100% 8 0.0KB/s 00:00 | + | |
- | corina@blue:~$ ls | + | Pentru a verifica rezultatul de mai sus, de pe ''fep.grid.pub.ro'' deschidem un nou terminal și ne conectăm prin SSH folosind portul ''10022'' la stația ''host'':<code bash> |
- | assignment blue-file-10M.dat host-file-10M.dat solution | + | mihai.carabas@fep:~$ ssh -l student $ADRESA_IP_MV -p 10022 |
+ | root@192.168.138.129's password: | ||
+ | [...] | ||
+ | root@red:~# | ||
+ | </code> unde ''$ADRESA_IP_MV'' este adresa IP a masinii virtuale obținută din dashboard-ul OpenStack. | ||
+ | <spoiler Pentru rulare masina virtuala VMware local> | ||
+ | Daca rulați VMware local, ''$ADRESA_IP_MV'' este adresa interfeței ''eth0'' a stației ''host''. | ||
+ | </spoiler> | ||
+ | |||
+ | Observăm că în urma autentificării ne găsim pe stația ''red''. //Port forwarding// a funcționat. | ||
+ | |||
+ | Folosim comanda de conectare SSH la stația ''host'' de pe stația ''green'':<code bash> | ||
+ | root@green:~# ssh -l student host -p 10022 | ||
+ | [...] | ||
+ | root@red:~# | ||
</code> | </code> | ||
- | </solution> | ||
- | </hidden> | ||
- | Din contul ''corina'' de pe stația ''blue'', **uploadați** directorul ''solution/'' **în** directorul home al utilizatorului ''student'' de pe stația ''host''. | + | Observăm că și de pe stația ''green'' am accesat stația ''red'' prin //port forwarding//. Dorim să limităm //port forwarding// doar pentru conexiuni de la stațiile din Internet. Pentru aceasta trebuie să actualizăm regula de //port forwarding//. |
+ | |||
+ | Ștergeți regula de //port forwarding// și adăugați o regulă nouă care să permită **doar** stațiilor din Internet să acceseze prin //port forwarding// stația ''red''. | ||
+ | |||
+ | <note tip> | ||
+ | Aplicați regula doar pentru pachetele ce **sosesc** pe interfața ''eth0''. Adică ''eth0'' este interfața de **intrare**. Folosiți opțiunea ''-i'' a ''iptables'' pentru precizarea interfeței de **intrare**. | ||
+ | </note> | ||
+ | |||
+ | Realizați apoi din nou conectare SSH pe portul ''10022'' al stației ''host'' de pe ''fep.grid.pub.ro'' și de pe stația ''green''. Dacă ați configurat corect, nu va merge conexiunea SSH de pe stația ''green'' dar va merge în continuare de pe ''fep.grid.pub.ro''. | ||
<hidden> | <hidden> | ||
<solution> | <solution> | ||
- | <code bash> | + | Ștergem vechea regulă și aplicăm regula nouă, ce ține cont de interfața de intrare:<code bash> |
- | corina@blue:~$ scp -r solution student@host: | + | root@host:~# iptables -t nat -D PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:22 |
- | quadratic.txt 100% 15 0.0KB/s 00:00 | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:22 |
- | cubic.txt 100% 23 0.0KB/s 00:00 | + | root@host:~# iptables -t nat -L PREROUTING -n -v |
- | linear.txt 100% 6 0.0KB/s 00:00 | + | Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) |
+ | pkts bytes target prot opt in out source destination | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 | ||
+ | </code> | ||
+ | Verificăm conectarea de la ''fep.grid.pub.ro'' și de la stația ''green''. Prima merge în continuare, dar a doua nu mai merge:<code bash> | ||
+ | mihai.carabas@fep:~$ ssh $ADRESA_IP_VM -p 10022 | ||
+ | root@host.local's password: | ||
+ | [...] | ||
+ | root@red:~# | ||
- | corina@blue:~$ ssh student@host ls | + | root@green:~# ssh -l student host -p 10022 |
- | assignment | + | ssh: connect to host host port 10022: Connection refused |
- | blue-file-10M.dat | + | |
- | file-100M-ftp.dat | + | |
- | file-100M-nc.dat | + | |
- | file-100M-scp.dat | + | |
- | host-file-10M.dat | + | |
- | solution | + | |
</code> | </code> | ||
</solution> | </solution> | ||
</hidden> | </hidden> |