• FreeBSD HowTo Вчера была задета честь FreeBSD с аргументом, что мол не умеет QinQ. Вот линукс умеет, а FreeBSD нет. Я не мог ударить в грязь лицом и посрамить славное имя фряхи, поэтому полез в Интернет за мануалами и хаутушками. На моё удивление таковых оказалось кот наплакал, причём большинство упоминаний QinQ во FreeBSD — просто сам факт того, что оно там есть, но как настраивать никто не пишет. Наконец в одной из рассылок попался пример от 2007 года, от корого я и начал плясать. К слову, сам пример в лоб не заработал, видимо с 2007 были какие-то изменения в коде netgraph. Итак, результаты моих изысканий:
    Настройка QinQ во FreeBSD 9.0

    Невозможно навесить сразу 2 тега на сетевой интерфейс с помощью netgraph, поэтому один тег (внешний) мы навесим с помощью штатной утилиты ifconfig, а вот второй, внутренний — с помощью netgraph.

    1. Создаём вилан интерфейс (это будет SPVLAN, внешний):
    ifconfig vlan1000 create
    ifconfig vlan1000 vlan 1000 vlandev sk1

    2. Магия netgraph для создания CVLAN (внутреннего):

    ngctl mkpeer vlan1000: vlan lower downstream
    ngctl name vlan1000:lower cvlan1
    ngctl connect vlan1000: cvlan1: upper nomatch
    ngctl mkpeer vlan1000: eiface vlan100 ether
    ngctl msg cvlan1: addfilter '{ vlan=100 hook="vlan100" }'
    # the same mac address as for parent interface vlan1000
    ifconfig ngeth0 link 00:0d:88:6e:05:9c
    ifconfig ngeth0 192.168.10.10 netmask 255.255.255.0
    ifconfig vlan1000 192.168.10.10 netmask 255.255.255.0
    ifconfig sk1 promisc

    Запускаем снифер, смотрим — 2 тега!
    ♡ recommended by @hizel

Replies (2)

  • @Shura, Ент а можно плз данные со сниффера ффстудию? Особенно интересно ставит ли оно правильно тип фрейма во втором таге (0x88a8).
  • @irritum, ставит 0x8100, что на практике получается даже лучше чем 0x88a8