[Comm] linux vlan
Dmitry Lebkov
=?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Чт Сен 18 17:09:39 MSD 2003
On Thu, 18 Sep 2003 10:28:47 +0400
Прокопьев Евгений <john на rmts.donpac.ru> wrote:
> Здравствуйте!
>
> Задача: разделить компьютеры в одном сегменте сети по критерию, можно ли
> им ходить в другой сегмент или нет (протоколы IP и IPX).
>
> За отсутствием железки решили использовать vlan-utils24. Начали с
> экспериментов с двумя сетевыми интерфейсами и одним виланом.
> Конфигурация такая:
>
> # ifconfig
> eth0 Link encap:Ethernet HWaddr 00:10:4B:47:B7:CA
> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
> RX packets:71 errors:0 dropped:0 overruns:0 frame:0
> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:100
> RX bytes:4260 (4.1 Kb) TX bytes:0 (0.0 b)
> Interrupt:9 Base address:0xd000
>
> eth1 Link encap:Ethernet HWaddr 00:60:97:AE:F4:CA
> inet addr:192.168.101.15 Bcast:192.168.101.255
> Mask:255.255.255.0
> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
> RX packets:4534 errors:0 dropped:0 overruns:0 frame:0
> TX packets:3869 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:100
> RX bytes:2635153 (2.5 Mb) TX bytes:244259 (238.5 Kb)
> Interrupt:5 Base address:0xb800
>
> eth2 Link encap:Ethernet HWaddr 00:80:48:FD:5A:4B
> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
> RX packets:16787 errors:0 dropped:0 overruns:0 frame:10
> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:100
> RX bytes:2551277 (2.4 Mb) TX bytes:0 (0.0 b)
> Interrupt:10 Base address:0xb400
>
> lo Link encap:Local Loopback
> inet addr:127.0.0.1 Mask:255.0.0.0
> UP LOOPBACK RUNNING MTU:16436 Metric:1
> RX packets:0 errors:0 dropped:0 overruns:0 frame:0
> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:0
> RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
>
> Виланы настроены так:
>
> # cat /proc/net/vlan/config
> VLAN Dev name | VLAN ID
> Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
> eth0.0 | 0 | eth0
> eth2.0 | 0 | eth2
>
> Но если в eth0 включить общую сеть, а в eth2 - компьютер через
> кроссовер или хаб, то он не пожет пропинговать остальных.
>
> Что я делаю не так?
Что-то не так либо с постановкой задачи, либо с реализацией. Если
я ничего не путаю, то идея VLAN'ов в ядре следующая:
- есть eth-интерфейс с ip-адресом. Все пакеты, идущие через
него не маркируются (un-tagged packets) как принадлежащие
к какому-то VLAN'у. Это так называемый managemen vlan, в
терминологии Cisco. Интерфейс является транком (trunk) для
остальных vlan'ов, привязанных к нему;
- есть vlan-интерфейсы, привязанные к trunk'у и имеющие свои
ip-адреса. Пакеты, идущие через эти интерфейсы, маркируются
как принадлижаще vlan'у с номером, совпадающим с номером
интерфейса;
Если не используются свитчи, понимающее 802.1Q VLANs, то клиенты
в _одном физ.сегменте_ должны сами разбирать, какой из маркированых
пакетов предназначен для них, а какой нет (принадлежность к VLAN'у
настраивается в драйверах сетевой карты на клиенте).
Если используется какой-либо свитч - то разбором tagged-пакетов (и
оправкой их в соответствующий порт) занимется этот самый свитч,
при условии, что Linux и свитч соединены через trunk-интерфейс.
Вот, вроде бы так. Т.е. связка Linux(vlans)+Switch обеспечивает
тебя набором _физических_ сетевых интерфейсов, равных кол-ву
портов на свитче-1 (один занимается под trunk).
Поправьте меня, если я где-то что-то напутал ... %)
Ты же, привязав vlan0 к eth0 и eth2 пытаешся добиться от Linux'a
поведения, аналогичного switch'у -- назаначить двум портам один
влан и они будут как бы один сегмент. Если я не ошибаюсь - vlan'ы
в Linux'е так не работают.
--
WBR, Dmitry Lebkov
Подробная информация о списке рассылки community