This shows you the differences between two versions of the page.
rl:labs:08:contents:09 [2020/12/01 10:46] iulia.florea created |
rl:labs:08:contents:09 [2023/11/05 12:57] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 9. [10p] Permitere trafic SSH ==== | + | ==== 09. [10p] Configurare persistentă rutare și NAT ==== |
- | În acest moment, traficul de la stația ''red'' către celelalte stații din rețea este blocat. | + | Configurările realizate până în acest moment sunt temporare. La repornirea stației ''host'' regulile de NAT se pierd. Dorim să configurăm în mod persistent rutarea și regulile NAT. |
- | Dorim să permitem traficul SSH **de la** stația ''red'' **către** stația ''green''. Adăugați o regulă corespunzătoare pe stația ''host''. | + | Pentru a configura în mod persistent rutarea pe stația ''host'', edităm fișierul ''/etc/sysctl.conf'' și decomentăm linia<code> |
+ | net.ipv4.ip_forward=1 | ||
+ | </code> Astfel la fiecarea pornire a sistemului, rutarea va fi activată. | ||
- | <hidden> | + | <note important> |
- | <solution> | + | Rutarea nu se va activa în mod automat după ce decomentați linia din fișier. Trebuie să resetați sistemul sau să rulați comanda<code bash> |
- | <code bash> | + | sysctl -p |
- | root@host:~# iptables -A FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | </code> pentru a aplica modificările din fișierul de configurare ''/etc/sysctl.conf''. |
+ | </note> | ||
+ | |||
+ | Pentru a salva toate regulile ''iptables'' introduse în sistem se poate folosi comanda ''iptables-save''. În mod implicit aceste reguli sunt afișate pe consolă. Noi le vom salva în ''/etc/iptables-rules'' folosind comanda:<code bash> | ||
+ | root@host:~# iptables-save > /etc/iptables-rules | ||
</code> | </code> | ||
- | </solution> | ||
- | </hidden> | ||
- | După ce ați adăugat regula, încercați realizarea unei conexiuni SSH de la stația ''red'' la stația ''green''. Observați că nu se realizează conexiunea. | + | Regulile pot fi restaurate folosind comanda ''iptables-restore < /etc/iptables-rules''. Așadar trebuie să configurăm sistemul să execute această comanda la pornire. Modul cel mai uzual pentru a face acest lucru este adăugarea acestei comenzi în fișierul de configurare al interfeței:<code bash> |
- | + | root@host:~# cat /etc/network/interfaces | |
- | <hidden> | + | [...] |
- | <solution> | + | # The primary network interface |
- | <code bash> | + | auto eth0 |
- | root@red:~# ssh green | + | iface eth0 inet dhcp |
- | ^C | + | up iptables-restore < /etc/iptables-rules |
</code> | </code> | ||
- | </solution> | ||
- | </hidden> | ||
- | Afișați lista de reguli ''iptables'' de pe stația ''host''. De ce nu a reușit conexiunea? Țineți cont de ordinea regulilor afișate; sunt parcurse secvențial. | + | După ce ați făcut toate configurările, reporniți stația ''host'': |
- | <hidden> | ||
- | <solution> | ||
<code bash> | <code bash> | ||
- | root@host:~# iptables -L FORWARD -n -v | + | Dashboard -> Drop Down in dreptul masinii virtuale -> Soft Reboot Instance |
- | root@host:~# iptables -L FORWARD -n -v | + | |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 6 360 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | + | |
- | 0 0 ACCEPT tcp -- * * 192.168.1.2 192.168.2.2 tcp dpt:22 | + | |
</code> | </code> | ||
- | Regulile sunt parcurse secvențial. Conform primei reguli, tot traficul transmis de stația ''red'' este blocat. A doua regulă nu mai este parcursă. Trebuie să mutăm a doua regulă pe prima poziție. | ||
- | </solution> | ||
- | </hidden> | ||
- | Pentru rezolvarea problemei ștergeți regula ''iptables'' introdusă anterior și **inserați** regula pe stația ''host''. Pentru inserare folosiți opțiunea ''-I'' a comenzii ''iptables''. Verificați că acum conexiunea SSH între ''red'' și ''green'' va fi realizată. | ||
- | <note hint> | + | În urma repornirii stației ''host'', va trebui sa rerulam scripturile de pregatire a infrastructurii pentru a recrea containerele. Vom vedea aplicată rutarea și regulile de NAT: (in cazul in care rutarea nu este activata, inseamna ca a fost suprascrisa de catre scripturile de pregatire a infrastructurii si va trebui s-o activati din nou)<code bash> |
- | Pentru a șterge o regulă puteți folosi opțiunea ''-D'' așa cum ați făcut și la [[:rl:labs:08:contents:04|exercițiul 4]]. | + | root@host:~# sysctl net.ipv4.ip_forward |
+ | net.ipv4.ip_forward = 1 | ||
+ | root@host:~# iptables -t nat -L -n -v | ||
+ | Chain PREROUTING (policy ACCEPT 30 packets, 5694 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 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.2.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.3.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10023 to:192.168.1.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20023 to:192.168.2.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30023 to:192.168.3.2:23 | ||
- | Pentru a insera o regulă folosiți opțiunea ''-I'' urmată de numele lanțului (''INPUT'', ''OUTPUT'' sau ''FORWARD''), urmată de indexul poziției unde doriți plasată regulă (1, 2, 3, ...) și apoi urmată de specificarea regulii. | + | Chain INPUT (policy ACCEPT 2 packets, 534 bytes) |
- | </note> | + | pkts bytes target prot opt in out source destination |
- | <hidden> | + | Chain OUTPUT (policy ACCEPT 16 packets, 958 bytes) |
- | <solution> | + | pkts bytes target prot opt in out source destination |
- | <code bash> | + | |
- | root@host:~# iptables -D FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | |
- | root@host:~# iptables -I FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | |
- | root@host:~# iptables -L FORWARD -n -v | + | Chain POSTROUTING (policy ACCEPT 15 packets, 918 bytes) |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
pkts bytes target prot opt in out source destination | pkts bytes target prot opt in out source destination | ||
- | 0 0 ACCEPT tcp -- * * 192.168.1.2 192.168.2.2 tcp dpt:22 | + | 1 40 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 |
- | 6 360 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | + | |
- | + | ||
- | root@red:~# ssh -l student green | + | |
- | student@green's password: | + | |
- | Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic-pae i686) | + | |
- | + | ||
- | * Documentation: https://help.ubuntu.com/ | + | |
- | Last login: Thu Nov 14 14:18:53 2013 from 192.168.1.2 | + | |
- | student@green:~$ logout | + | |
- | Connection to green closed. | + | |
</code> | </code> | ||
- | </solution> | ||
- | </hidden> |