Теги
abills
apache
bash
BGP
C
cisco
D-link
dd-wrt
ddos
debian
dhcp
DHCP Option 82
eaccelerator
flood
FreeBSD
IPFW
iptables
iptv
linux
memcache
multicast
MySQL
nat
nc
netflow
netgraph
networking
networks
nginx
ng_car
ng_netflow
OSPF
perl
php
php-fpm
router
routing
shaper
shell
ssh
ubuntu
unicast
unix
vlc
wget
wi-fi
Программирование
Шейпер
кеширование
оптимизация
НавигацияНавигация по подшивке |
SuperVlan, ip-unnumbered на FreeBSDОпубликовано admin в Чт, 24/02/2011 - 10:56
Читал как реазлизут аналоги ip-unnumbered, super vlan во FreeBSD и решил предоставить свое решение.
Если кто не знает, загрузить модули можно таким образом: kldload /boot/kernel/netgraph.ko kldload /boot/kernel/ng_vlan.ko kldstat Id Refs Address Size Name 1 7 0xffffffff80100000 646a60 kernel 4 1 0xffffffff8082c000 2526 netgraph.ko 5 1 0xffffffff8082f000 d66 ng_vlan.ko 6 1 0xffffffff80830000 23d6 if_vlan.ko
Далее прикинем что у нас есть две сетевые em0(внутренняя) и em1(внешняя) . И вот на внутреннюю сетевую нам нужно принимать кучу вланов. Скажем у нас идентификаторы вланов будут 5-10 и создаваться при помощи ng_vlan. Создаем ноду для вланов : ngctl +mkpeer em0: vlan lower downstream +name em0:lower vlan +connect em0: vlan: upper nomatch +quit Сами вланы создаем таким образом : ngclt +mkpeer vlan: eiface vlan5 ether +name vlan:vlan5 vlan5 +msg vlan: addfilter { vlan=5 hook="vlan5" } +quit В выводе ifconfig'a появится интерфейс вида ngethX, где Х - порядковый номер, я сразу ifconfig ngeth0 name vlan5 Назначим влану мак адрес такой же как и на нашем внутреннем интерфейсе em0 ifconfig vlan5 ether `ifconfig em0 | grep ether | awk '{print $2}'` up Далее проделайте все тоже самое для вланов 6-10 Вланы созданы, осталось сделать для них loopback интерфейс, выкручиваемся и создаем бридж интерфейс: ifconfig bridge0 create #Назначим мак адрес бриджу ifconfig bridge0 ether `ifconfig em0 | grep ether | awk '{print $2}'` ifconfig bridge0 inet 5.5.5.1 netmask 255.255.255.0 up ifconfig bridge0 addm vlan5 #Добавляем интерфейс в бридж ifconfig bridge0 addm vlan6 #Добавляем интерфейс в бридж Добавляем последние штрихи в нашу картину. Делаем вланы приватными ifconfig bridge0 private vlan5 ifconfig bridge0 private vlan6 Убираем discover аттрибут ifconfig bridge0 -discover vlan5 ifconfig bridge0 -discover vlan6 И наконец делаем вланы "прилипчивыми" ifconfig bridge0 sticky vlan5 ifconfig bridge0 sticky vlan6 Это позволит пользователям из разных влан'ов "видеть" ип адресс 5.5.5.1 но никоим образом не общаться между собой. Для маршрутизации между клиентами придется прописывать роут для каждого IP-адреса или сети. Таким образом у нас получается SuperVlan (в терминалогии HP) или ip-unnumbered for SVI-interface (в терминалогии Cisco). Если вланов много и в них много клиентов, советую сразу увеличить размер хранимых маков в бридж интерфейсе (на моем примере это 4000) коммандой ifconfig bridge0 maxaddr 4000 Так же при такой конфигурации в "боевом" режиме периодически отваливался внутренний интерфейс, примерно раз в неделю. Отваливался, в логи падало что не хватает дескрипторов сетевой (up &down для сетевой не помогал), гугль по этому поводу тоже молчал - советовали ковырять нагрузки,очереди,драйвера. И только через пару недель нечаянно выключив и включив обратно бридж интерфейс проблема решилась, добавив в крон запуск "ifconfig bridge0 down up" каждые 15 минут моя жизнь стала куда спокойней. Источник: http://alienstudio.ru/freebsd-supervlan-ip-unnumbered/
( categories: )
|
Вход в систему |