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.
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
.
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
):
root@host:~# iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:22
Verificăm aplicarea regulii prin consultarea lanțului PREROUTING
din tabela NAT:
root@host:~# iptables -t nat -L PREROUTING -n -v Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) pkts bytes target prot opt in out source destination 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22
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
:
mihai.carabas@fep:~$ ssh -l student $ADRESA_IP_MV -p 10022 root@192.168.138.129's password: [...] root@red:~#
unde $ADRESA_IP_MV
este adresa IP a masinii virtuale obținută din dashboard-ul OpenStack.
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
:
root@green:~# ssh -l student host -p 10022 [...] root@red:~#
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
.
eth0
. Adică eth0
este interfața de intrare. Folosiți opțiunea -i
a iptables
pentru precizarea interfeței de intrare.
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
.