Соединить сетевым мостом (bridge) 2 VLAN

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
cpnc
рядовой
Сообщения: 11
Зарегистрирован: 2014-03-06 18:12:36

Соединить сетевым мостом (bridge) 2 VLAN

Непрочитанное сообщение cpnc » 2014-06-27 10:01:03

Дано:

1. Коммутатор Cisco 2960
2. Сервер на FreeBSD 10
3. 2 клиента PC1 (int fa0/10) и PC2 (int fa0/1)

Нужно отделить PC1 от сети, посредством перенаправления траффика на сервер FreeBSD через VLAN, где через мост соединить с остальной сетью.

Работающее решение:

1. PC1 засунуть в VLAN2
2. PC2 засунуть в VLAN3
3. На FreeBSD создать Trunk на циску и соединить бриджом VLAN2 и VLAN3. После этого между PC1 и PC2 есть связь через бридж на FreeBSD (см схему)
1.jpg
настройки:

Код: Выделить всё

циска:

interface FastEthernet0/1
 switchport access vlan 3
 switchport mode access
 spanning-tree portfast


interface FastEthernet0/10
 switchport access vlan 2
 switchport mode access
 spanning-tree portfast


interface FastEthernet0/24
 switchport mode trunk
 spanning-tree portfast trunk

FreeBSD:

em0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500
        options=8b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWCSUM>
        ether 00:0c:29:f2:d9:53
        inet6 fe80::20c:29ff:fef2:d953%em0 prefixlen 64 scopeid 0x1
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
vlan2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0c:29:f2:d9:53
        inet6 fe80::20c:29ff:fef2:d953%vlan2 prefixlen 64 scopeid 0x4
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 2 parent interface: em0
vlan3: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0c:29:f2:d9:53
        inet6 fe80::20c:29ff:fef2:d953%vlan3 prefixlen 64 scopeid 0x5
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 3 parent interface: em0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 02:2c:c1:7f:85:00
        nd6 options=9<PERFORMNUD,IFDISABLED>
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: vlan3 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 5 priority 128 path cost 20000
        member: vlan2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 20000

Проблема в том, что мне нужно тоже самое, но чтобы бридж был между VLAN2 и em0 (физический интерфейс, VLAN1, native VLAN).

т.е. PC2 поместить в VLAN1
switchport access vlan1

interface FastEthernet0/1
switchport mode access
spanning-tree portfast


bridge0
member: vlan2
member: em0
В таком случае циска вываливает:

%SW_MATM-4-MACFLAP_NOTIF: Host 0026.9e39.5700 in vlan 2 is flapping between port Fa0/10 and port Fa0/24
(как будто мак одновременно на двух интерфейсах).
(к 24 порту подключен FreeBSD,)

и соответственно пакеты не идут...

Я уже пробовал и назначить на freebsd явно vlan1.
типа
ifconfig vlan1 create
ifconfig vlan1 vlan 1 vlandev em0 up
ifconfig bridge0 create
ifconfig bridge0 addm vlan1 addm em0 up

пробовал сменить native vlan на транке.. вобщем идеи у меня кончились. Что делать чтобы траффик проходил по бриджу на freebsd из влана на em0 на тот же интерфейс (em0) нетегированным?

ПС: физически перекоммутировать немогу. ток вланы строить... Можно конечно оставить влан2 и влан3, но тогда нужно всех остальных клиентов переводить в из нативного влан1 в влан3... НО все-таки хочется оставить native vlan 1....

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

cpnc
рядовой
Сообщения: 11
Зарегистрирован: 2014-03-06 18:12:36

Re: Соединить сетевым мостом (bridge) 2 VLAN

Непрочитанное сообщение cpnc » 2014-06-30 17:09:17

Пробовал разные варианты. В итоге заработало так (хотя я так уже и делал, но не работало почему-то)...

напомню исходные условия:
коммутатор cisco 2960, в который воткнуто: сервер на FreeBSD на fa0/24 порту;
PC1 на fa0/10 (10.10.0.100/24) и PC2 на fa0/1 (10.10.0.20/24)
Нужно чтобы траффик от PC1 до PC2 ходил через сервер FreeBSD.

(т.е. один из компов помещается в влан, после чего на один интерфейс FreeBSD приходит 2 влана (например vlan2 и vlan1) в транке и между вланами поднимается бридж)

Решение:

Switch:

Код: Выделить всё

interface FastEthernet0/24
 switchport trunk native vlan 100
 ! native vlan 100 нужно, чтобы траффик влан 1 шел тэгированный, тк на фряхе не получилось связать непосредственно физический интерфейс с нетегированным траффиком с вланом.
 switchport mode trunk
end

interface FastEthernet0/10
 switchport access vlan 2
 switchport mode access
 spanning-tree portfast
end

interface FastEthernet0/1
 switchport mode access
 spanning-tree portfast
end
FreeBSD:

Код: Выделить всё

ifconfig vlan1 create
ifconfig vlan2 create

ifconfig vlan1 vlan 1 vlandev em0 up
ifconfig vlan2 vlan 2 vlandev em0 up

ifconfig bridge0 create

ifconfig bridge0 addm vlan1 addm vlan2 up
вывод ifconfig:

Код: Выделить всё

em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWCSUM>
        ether 00:0c:29:f2:d9:53
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vlan1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0c:29:f2:d9:53
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 1 parent interface: em0
vlan2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0c:29:f2:d9:53
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 2 parent interface: em0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 02:2c:c1:7f:85:00
        nd6 options=9<PERFORMNUD,IFDISABLED>
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: vlan2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 5 priority 128 path cost 20000
        member: vlan1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 20000
Для сохранения конфигурации при перезагрузке в rc.conf нужно написать:

Код: Выделить всё

ifconfig_em0="up -vlanhwtag" 
#-vlanhwtag нужно, тк конкретно мой сетевой адаптер глючил с расстановкой тэгов вланов...
cloned_interfaces="vlan1 vlan2 bridge0"
ifconfig_vlan1="vlan 1 vlandev em0 up"
ifconfig_vlan2="vlan 2 vlandev em0 up"
ifconfig_bridge0="addm vlan1 addm vlan2 up"
В итоге всь траффик с PC1 на PC2 идет через сервер, что видно tcpdump:

Код: Выделить всё

20:03:34.421135 IP 10.10.0.200 > 10.10.0.100: ICMP echo request, id 512, seq 28161, length 40
20:03:34.421200 IP 10.10.0.200 > 10.10.0.100: ICMP echo request, id 512, seq 28161, length 40
20:03:34.421793 IP 10.10.0.100 > 10.10.0.200: ICMP echo reply, id 512, seq 28161, length 40
20:03:34.421851 IP 10.10.0.100 > 10.10.0.200: ICMP echo reply, id 512, seq 28161, length 40