Aşağıdaki kurulumu göz önünde bulundurun:
X@Y:~$ sudo ip link add link eth0 name eth0.3 type vlan id 3
X@Y:~$ sudo ip link add link eth0 name eth0.2 type vlan id 2
X@Y:~$ sudo ifconfig eth0.2 192.168.2.1/30
X@Y:~$ sudo ifconfig eth0.3 192.168.2.2/29
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
192.168.2.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0.3
Gördüğünüz gibi, birbirleriyle çakışan alt ağlara sahip olsalar da, her iki yol için de eth0.2
ve eth0.3
kurulur. Ancak şunu denediğimde:
X@Y:~$ sudo ifconfig eth0.3 192.168.2.3/29
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
Bunun için rotayı görebilirsiniz. eth0.3
orada değil. En büyük fark nedir? Yapılandırılmış eth0.3
ip, yapılandırılmış alt ağın yayın adresidir. eth0.2
. Tamam, evet bu berbat, ancak arayüz çevrimiçi geliyor, gerçekleşmeyen tek şey rotayı rota tablosuna eklemek. Ve aslında, rota tablosu bu yayın adresini bile umursamıyor:
X@Y:~$ sudo route add -net 192.168.2.0/29 dev eth0.3
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
192.168.2.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0.3
X@Y:~$ sudo ip link del eth0.3
X@Y:~$ sudo ip link del eth0.2
Bu aşmanın bir yolu var mı? Daha sonra rotayı daha sonra ekleyerek kendimi keşfettiğimi belirtmeden önce: kurulumumda gerçek ifconfig, düzenleyemediğim bir dhclient betiği ile gerçekleşir, bu nedenle rota ekleme yapmak dhclient'i çengellemek, IP'yi bir yerden okumak ve yürütmek gerekir oldukça sıkıcı olan rota eki. Bu davranışı arayüzdeki bazı bayraklarla değiştirebileceğimi umuyordum.
Not; Bu elbette gerçek bir ağ tasarımı değil, ancak bir test kurulumu için gereklidir.