Делаем по-взрослому (изучаем vlan`ы)

Первый раз с самим понятием вланов (virtual LAN, VLAN) я столкнулся, проживая в студенческом общежитии (как будто я там сейчас не живу – прим. авт). Универ после ремонта разродился на нормальную ЛВС – с розетками в каждой комнате, коммутационными шкафами на лестничных клетках и 48-портовыми д-линками на этаж. На каждое общежитие студгородка было выделено по 2 влана, что добавило геморроя в настройке, но позволило избавиться от лишних бродкастов (с другой стороны, всякие VypressChat уже не работали). Сама идея очень даже неплоха – пользователи отделяются друг от друга на канальном уровне, можно крутить разные подсети на одном коммутаторе и прочие плюшки.

Интернет в общаге раздается весьма своеобразно – через два сервера. На одном крутится две дсл, на другом – еще три. Модемы подключены напрямую, т.е. в одном сервере стоит три сетевушки, во втором – четыре. Это накладывает существенные ограничения во-первых на железо (найти плату с 3 и более PCI-разъемами сложновато), а во-вторых на масштабируемость – добавлять новые сетевухи это не наш метод :). Т.к. под рукой совершенно случайно оказался управляемый DES-1226G с поддержкой вланов, решено было через этот самый коммутатор подключать модемы, оставив на серверах по две сетевушки – на вход и на выход. На “входящей”, соответственно висели интерфейсы общежитских сетей, на “выходящей” – вланы модемов.
Создается влан-интерфейс чрезвычайно просто:

snake@snake [snake]#ifconfig vlan1692 create vlan 1692 vlandev em1 inet 192.169.2.2 netmask 255.255.255.0

Здесь:
vlan1692 – имя интерфейса
vlan 1692 – так называемый тэг влана (если мы собираемся принимать на этом интерфейсе только тэгированный трафик, что и требуется)
vlandev em1 – указывает родительский интерфейс (транк) на котором и будет висеть влан
далее идет обычная настройка – ip, маска и т.д.
Чтобы изменения сохранились после перезагрузки, в rc.conf нужно добавить следующие строки:

snake@snake [snake]#cat /etc/rc.conf
hostname="snake.hostel5.ru"
ifconfig_em0="inet 10.1.0.1 netmask 255.255.255.0"
cloned_interfaces="vlan1205 vlan1690 vlan1691 vlan1692 vlan1693 vlan1694 vlan1695"
ifconfig_vlan1205="inet 10.12.5.254 netmask 255.255.255.0 vlan 1205 vlandev em0"
ifconfig_vlan1690="inet 192.169.0.2 netmask 255.255.255.0 vlan 1690 vlandev em1"
ifconfig_vlan1691="inet 192.169.1.2 netmask 255.255.255.0 vlan 1691 vlandev em1"
ifconfig_vlan1692="inet 192.169.2.2 netmask 255.255.255.0 vlan 1692 vlandev em1"
ifconfig_vlan1693="inet 192.169.3.2 netmask 255.255.255.0 vlan 1693 vlandev em1"
ifconfig_vlan1694="inet 192.169.4.2 netmask 255.255.255.0 vlan 1694 vlandev em1"
ifconfig_vlan1695="inet 192.169.5.2 netmask 255.255.255.0 vlan 1695 vlandev em1"

В нашем случае создается 7 vlan-интерфейсов – один на “входящей” сетевушке – для общежитской сети, и еще 6 на “выходящей” – часть из них используется для связи с модемами, часть – просто для мониторинга и управления.

Удалить влан интерфейс:

snake@snake [snake]#ifconfig vlan1692 destroy

Не забываем настроить соответствующим образом порты коммутатора – порт, к которому подключается “выходящая” сетевая карта сервера, должен пропускать только тэгированный трафик, порты, к которым подключены модемы – нетэгированный (потому как модемы в большинстве своем про всякую экзотику типа vlan слыхом не слыхивали), причем PVID порта должен совпадать с номером нужного влана (а у нас длинк, к слову. у других производителей все может быть совсем по другому).
Приведу простой пример – “выход” сервера подключен к 10 порту коммутатора. Модемы – соответственно к 11,12 и 13 портам. На 10 порту прописываются соответствующие вланы (для каждого модема отдельный, как мы помним) – все тэгированные, PVID не столь важен, потому что трафик будет пропускаться только тэгированный (от сервера либо с другого порта коммутатора).
На портах, к которым подключены модемы (11,12 и 13) прописываем по влану с опцией untag, и назначаем этим портам PVID, соответствующий номеру влана – таким образом весь нетэгированный трафик на этом порту будет считаться трафиком данного влана.
Если все настроено правильно – модемы должны пинговаться (если правильно настроены ип), и pppoe должен нормально подниматься. Если нет – смотрим, где и что недонастроили (например, интерфейс в настройках mpd).

Всяческие замечания, предложения и критика приветствуются.

5 Comments

    1. ага
      а вот если в один из портов DES-а воткнуть ип-телефон и дать ему вилан отдельный, тогда как с фаерволом? (я начинающий, но даже не сисадмин, просто случилась необходимость пробросить сиповский трафик)

      1. на том порту, где висит телефон, вешаем untag vlan, на вход и tag vlan на выход. На сервере создаем влан-интерфейс и разрешаем трафик внутри него

    2. самым обычным образом – тот трафик, который нужно пропустиьт, пропускается, остальной блокируется

Leave a Reply