Возникла непонятная проблема с VLAN в Линуксе.Ситуация: есть две локалки, два роутера, у обоих внешние интерфейсы с реальными адресами, кот. используются для выхода в Инет. Кроме того, на этих же сетевухах подняты VLAN (связь этих сеток через сеть провайдера).
gate1:
vconfig add eth0 7
ifconfig eth0.7 10.1.128.1 netmask 255.255.255.0 upgate2:
vconfig add eth1 7
ifconfig eth1.7 10.1.128.2 netmask 255.255.255.0 upЕстественно, настроены iptables, все работает. Точнее, работало, с 13 января по 15:50 21 мая.
В 15:55 VLAN развалился. Что произошло - хз, машину до этого перезагружали неоднократно, так что перезагрузка не при чем.
Исследование трафика с помощью tcpdump показало, что на gate1 все нормально, он честно пытается передать тегированный трафик через интерфейс eth0.7, а вот на gate2 пакеты идут без тегов, кроме того, он засовывает их в оба интерфейса: eth1 и eth1.7.
Вывод cat /proc/net/vlan/* на gate1:
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.7 | 7 | eth0
eth0.7 VID: 7 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 50031
total bytes received 5813016
Broadcast/Multicast Rcvd 8total frames transmitted 70444
total bytes transmitted 8014916
total headroom inc 0
total encap on xmit 70444
Device: eth0
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:а вот на gate2:
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth1.7 | 7 | eth1
eth1.7 VID: 7 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 1252
total bytes received 112424
Broadcast/Multicast Rcvd 0total frames transmitted 3295
total bytes transmitted 494690
total headroom inc 0
total encap on xmit 0
Device: eth1
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:Обратив внимание на строчку `total encap on xmit 0` в выводе, понимаю, что инкапсуляции (тегирования) точно не происходит.
Обновляю ядро до последнего стабильного (2.6.29.4) - не помогает.
Далее еще интереснее: поднимаю отдельный VLAN (8) на двух других машинах в сети. Одна с работающим iptables (назовем ее gate3), другая - просто рабочая машина с только что установленной Fedora10 (host4).
На gate3 пакеты тегируются, на host4 - нет (total encap on xmit опять 0). Пинг не проходит (т.к. не получаются ответы на arp-запросы).
Где собака порылась? Голова уже почти сломана, мыслей не осталось...
приведи вывод ifconfig на обеих машинах.
>приведи вывод ifconfig на обеих машинах.Пожалуйста.
gate1:
eth0 Link encap:Ethernet HWaddr 00:0D:61:3C:B5:0C
inet addr:213.33.xxx.xxx Bcast:213.33.xxx.xxx Mask:255.255.255.252
inet6 addr: fe80::20d:61ff:fe3c:b50c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11595681 errors:0 dropped:0 overruns:0 frame:0
TX packets:18454528 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2053559367 (1.9 GiB) TX bytes:2931796970 (2.7 GiB)eth0.7 Link encap:Ethernet HWaddr 00:0D:61:3C:B5:0C
inet addr:10.1.128.1 Bcast:10.1.128.255 Mask:255.255.255.0
inet6 addr: fe80::20d:61ff:fe3c:b50c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50362 errors:0 dropped:0 overruns:0 frame:0
TX packets:71539 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5834668 (5.5 MiB) TX bytes:8125138 (7.7 MiB)eth1 Link encap:Ethernet HWaddr 00:1E:58:AF:07:AA
inet addr:192.168.22.199 Bcast:192.168.22.255 Mask:255.255.255.0
inet6 addr: fe80::21e:58ff:feaf:7aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:174869894 errors:0 dropped:0 overruns:0 frame:0
TX packets:286654346 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:160640809 (153.1 MiB) TX bytes:3283052545 (3.0 GiB)
Interrupt:16 Base address:0x4000lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1688 errors:0 dropped:0 overruns:0 frame:0
TX packets:1688 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:121384 (118.5 KiB) TX bytes:121384 (118.5 KiB)gate2:
eth0 Link encap:Ethernet HWaddr 00:1C:F0:91:E8:0D
inet addr:192.168.23.199 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::21c:f0ff:fe91:e80d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6390 errors:0 dropped:0 overruns:0 frame:0
TX packets:4324 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:576592 (563.0 KiB) TX bytes:389032 (379.9 KiB)
Interrupt:16eth1 Link encap:Ethernet HWaddr 00:19:DB:E6:3E:4A
inet addr:195.190.yyy.zzz Bcast:195.190.yyy.zzz Mask:255.255.255.252
inet6 addr: fe80::219:dbff:fee6:3e4a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17041 errors:0 dropped:0 overruns:0 frame:0
TX packets:37132 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1479585 (1.4 MiB) TX bytes:38589223 (36.8 MiB)
Interrupt:26 Base address:0x8000eth1.7 Link encap:Ethernet HWaddr 00:19:DB:E6:3E:4A
inet addr:10.1.128.2 Bcast:10.1.128.255 Mask:255.255.255.0
inet6 addr: fe80::219:dbff:fee6:3e4a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:131 errors:0 dropped:0 overruns:0 frame:0
TX packets:232 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10526 (10.2 KiB) TX bytes:32624 (31.8 KiB)lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:225 errors:0 dropped:0 overruns:0 frame:0
TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22534 (22.0 KiB) TX bytes:22534 (22.0 KiB)Сейчас попробовал поднять VLAN 8 еще на одной машине в локалке. Там ядро 2.6.22.9 (RHEL 5) - опять encap on xmit по нулям... И tcpdump по интерфейсу eth0 выборкой по vlan ни одного пакета не находит...
не пойму, а беда то в чем? написали фигню...ЗЫ:
vlan305 VID: 305 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 119552591
total bytes received 9058483780
Broadcast/Multicast Rcvd 16239total frames transmitted 25980258
total bytes transmitted 3077702956
total headroom inc 0
total encap on xmit 0
Device: eth1
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESSS priority Mappings:
>[оверквотинг удален]
>
>total headroom inc
> 0
> total
>encap on xmit
> 0
>Device: eth1
>INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0
> 5:0 6:0 7:0
>EGRESSS priority Mappings:Еще раз. Проблема в том, что не работает.
На gate1:
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.7 | 7 | eth0
eth0.7 VID: 7 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 50031
total bytes received 5813016
Broadcast/Multicast Rcvd 8total frames transmitted 70444
total bytes transmitted 8014916
total headroom inc 0
total encap on xmit 70444Обратим внимание на равенство значений `total frames transmitted` и `total encap on xmit`.
На gate2 последнее значение 0.Может, я неправильно понимаю значение параметра encap?
Но тогда почему при запуске сниффера командой
tcpdump -i eth0 -nnn -v vlan
на gate1 получаем абсолютно нормальные пакеты, кот. пытаются добраться до gate2.На gate2 - нет ни одного пакета, они идут в ОБА интерфейса (eth1 и eth1.7), без тегов (ловятся командой tcpdump -i eth1 (или eth1.7) -nnn -v net 10.1.128.0/24)
ЗЫ. Если уж использовать такие сильные выражения, как "Фигню написали", то м.б. снизойти с пьедестала и объяснить поподробнее?
Легко, вы не описали самого главного, а это железо, даю 100%, что сетивухи разные...
Так вот, одна из них поддерживает аппаратное ускорение vlan'ов, а другая нет...
Либо если сетивуха гигабит интел, у нее может быть паченый драйвер и еще куча всяких вариантов...>На gate2 - нет ни одного пакета, они идут в ОБА интерфейса (eth1 и eth1.7)
Ни поверите, но на eth1.7 ни в жизь не увидите тегов, если конечно не подымите Q'in'Q
Ваши слова противоречат в всех постах, вы пишете что не работает, при этом на интерфейсах eth1 и eth1.7 разное число пакетов и байт, если не работает то по логике оно должно быть одинаковым, не задумывались об этом? Не задумывались, почему на gate1 где все нормально пакеты в оба конца идут терируемые? Ведь если не рабоает то gate2 свои пакеты не должен теговыми прислать?
>Легко, вы не описали самого главного, а это железо, даю 100%, что
>сетивухи разные...
>Так вот, одна из них поддерживает аппаратное ускорение vlan'ов, а другая нет...
>
>Либо если сетивуха гигабит интел, у нее может быть паченый драйвер и
>еще куча всяких вариантов...Сетевухи сегодня посмотрю. Скорее всего, действитнльно разные. Но! Оно работало. Больше четырех месяцев...
>>На gate2 - нет ни одного пакета, они идут в ОБА интерфейса (eth1 и eth1.7)
>
>Ни поверите, но на eth1.7 ни в жизь не увидите тегов, если
>конечно не подымите Q'in'QНу, я не до такой степени деревянный, чтобы ожидать тегированных пакетов в eth1.7 в данной ситуации.
Непонятно, почему они есть и там, и там (надо будет подробнее почитать про tcpdump, как он работает с интерфейсами).>Ваши слова противоречат в всех постах, вы пишете что не работает, при
>этом на интерфейсах eth1 и eth1.7 разное число пакетов и байт,
>если не работает то по логике оно должно быть одинаковым, не
>задумывались об этом?Это тоже понятно. Во-первых, vlan поднимается позже, во-вторых, я его перезапускал тогда не раз, в-третьих, в первом посте я писал, что этот же интерфейс используется для выхода в Инет. У них в принципе не может быть одинакового трафика.
>Не задумывались, почему на gate1 где все нормально
>пакеты в оба конца идут терируемые? Ведь если не рабоает то
>gate2 свои пакеты не должен теговыми прислать?Вот это тоже непонятно.
Между gate1 и gate2 есть локальная сеть провайдера. Что у него там наделано - одному Богу известно. Зная, как ее строили, я ничему не удивлюсь...
Продолжил разборки...Во-первых, параметр `encap on xmit` непричем. Насколько я понял, он просто по разному в разных ОС/ядрах отображается.
Сегодня запустил другой vlan (6) на отдельной машине. Работает, `encap on xmit` - 0. Включено все в стоящий на столе 3com office connect.
запускаю этот же vlan на еще одной машине в сети - не работает. замечаю, что та машина воткнута в циску (кот. так и не настроили, только ip-адрес прописали, все руки не доходят, настройки по умолчанию).
Берем коммутатор AlliedTelesyn FS708, втыкаем обе машины в него - работает. Одну оставляем в нем, вторую - в тот же 3com office connect. Не работает.
Ставим вместо телесина какой-то netgear - все работает.Понимаем, что скорее всего и циска, и телесин требуют дополнительной настройки для пропуска vlan-трафика.
Учитывая, что мы на удаленной машине gate2 ничего не меняли, возникает подозрение, что что-нибудь у себя втихаря поменял провайдер.
Для подтверждения сего у меня сейчас человек с ноутом туда поехал. Если и это подозрение не подтвердится - я уже не знаю, куда дальше копать...
Может MTU на 4 байта уменьшить на VLAN?
Судя по тому, что мы ничего не сделали, дело было в проделках провайдера. У него такое уже бывало, когда с честными глазами говорят "У нас все работает, смотрите у себя", а потом "Мы ничего не делали, ничего не знаем"Просто пакеты на gate2 приходили БЕЗ ТЕГОВ. И вдруг (перед обедом) пошли нормально - и сразу у нас все восстановилось.