Am nevoie de PC1 pentru a putea comunica cu PC2 prin două vlan (configurate pe două interfețe virtuale). Fiecare dintre ele având un gateway configurat pentru a comunica cu o subrețea diferită.
Iată diagrama:
~ ~ ~ ~<vlan10>~ ~ ~ ~
192.168.1.1 192.168.1.254
PC1 ----------------------------- FW -------------------- ---------- PC2
192.168.2.1 192.168.2.254 11.20.1.254 11.20.1.1
~ ~ ~ ~<vlan20>~ ~ ~ ~
PC1:
- eth0.10 = 192.168.1.1/24
- eth0.20 = 192.168.2.1/24
Firewall:
- permiteți totul
Am adăugat două tabele de rutare, câte unul pentru fiecare interfață virtuală:
# ip route list table vlan10
implicit prin 192.168.1.254 dev eth0.10 proto static
# ip route list table vlan20
implicit prin 192.168.2.254 dev eth0.20 proto static
# traseu ip
192.168.1.0/24 dev eth0.10 proto kernel scope link src 192.168.1.1
192.168.2.0/24 dev eth0.20 proto kernel scope link src 192.168.2.1
Iată cum se aplică tabelul de rutare:
# regulă ip
0: din toate căutările locale
32762: de la toate la 192.168.2.1 căutare vlan20
32763: de la 192.168.2.1 căutare vlan20
32764: de la toate la 192.168.1.1 căutare vlan10
32765: de la 192.168.1.1 căutare vlan10
32766: din toate căutările principale
32767: din toate căutările implicite
Pot ping interfața firewall pe aceeași subrețea (gateway):
# ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254) 56(84) octeți de date.
64 de octeți de la 192.168.1.254: icmp_seq=1 ttl=64 time=1,09 ms
64 de octeți de la 192.168.1.254: icmp_seq=2 ttl=64 time=0,740 ms
64 de octeți de la 192.168.1.254: icmp_seq=3 ttl=64 time=0,319 ms
# ping 192.168.2.254
PING 192.168.2.254 (192.168.2.254) 56(84) octeți de date.
64 de octeți de la 192.168.2.254: icmp_seq=1 ttl=64 time=0,937 ms
64 de octeți de la 192.168.2.254: icmp_seq=2 ttl=64 time=0,269 ms
64 de octeți de la 192.168.2.254: icmp_seq=3 ttl=64 time=0,444 ms
Nu pot face ping la interfața firewall de pe cealaltă subrețea:
# ping 11.20.1.1
connect: gazda de destinație inaccesibilă
# ping 11.20.1.1 -I eth0.10
PING 11.20.1.1 (11.20.1.254) de la 192.168.1.1 eth0.10: 56(84) octeți de date.
^C
--- 11.20.1.1 statistici ping ---
4 pachete transmise, 0 primite, 100% pierdere de pachete, timp 75 ms
Când folosesc wireshark, văd o solicitare ARP destinată 11.20.1.1, chiar dacă este pe o altă subrețea și ar trebui să folosească gateway-ul implicit din tabelul de rutare.
Când configurez gateway-ul implicit în tabelul principal de rutare, cererea ARP este destinată gateway-ului și lucrării ping:
# ip route add default prin 192.168.1.254
# ping 11.20.1.1 -I eth0.10
PING 11.20.1.1 (11.20.1.1) de la 192.168.1.1 eth0.10: 56(84) octeți de date.
64 de octeți din 11.20.1.1: icmp_seq=1 ttl=64 time=0,660 ms
64 de octeți din 11.20.1.1: icmp_seq=2 ttl=64 time=0,504 ms
^C
--- 11.20.1.1 statistici ping ---
2 pachete transmise, 2 primite, 0% pierdere de pachete, timp 9 ms
rtt min/avg/max/mdev = 0,504/0,582/0,660/0,078 ms
Știți de unde vine problema? rp_filter
este deja setat la 0
pe interfețele fizice și virtuale.