Используется стандартная утилита для управления интерфейсами - ifconfig
Создать интерфейс vlan100
# ifconfig vlan100 create
На FreeBSD 8.1 была проблема при выполнении указанной ниже команды, в
результате чего переставал ходить трафик интерфейсу.
Надо было дополнительно сделать так:
# ifconfig fxp0 down
# ifconfig fxp0 up
Указать, что созданный интерфейс соответствует трафику, тегированному
VLAN 100 и приходящему через физический интерфейс fxp0
# ifconfig vlan100 vlan 100 vlandev fxp0
Назначаем Ip-адрес интерфейсу:
# ifconfig vlan100 10.10.10.1/24
Просмотрим интерфейс:
# ifconfig vlan100
vlan100: flags=8843 mtu 1500
inet 192.168.16.14 netmask 0xffffff00 broadcast 192.168.16.15
inet6 fe80::204:79ff:fe67:9671%vlan4 prefixlen 64 scopeid 0x6
ether 00:07:e9:45:0d:2c
media: Ethernet autoselect (100baseTX )
status: active
vlan: 100 parent interface: fxp0
Видно, интерфейс fxp0 является родительским для vlan100
vlan: 100 parent interface: fxp0
Для того чтобы интерфейсы поднимались автоматически при старте, нужно править
/etc/rc.conf:
cloned_interfaces="vlan100 vlan200"
ifconfig_vlan100="inet 10.10.10.1 netmask 255.255.255.0 vlan 100 vlandev fxp0"
ifconfig_vlan200="inet 10.11.11.1 netmask 255.255.255.0 vlan 200 vlandev fxp0"
2-й вариант
Создать интерфейс
#ifconfig xl1.100 create
xl1.100: flags=8842 metric 0 mtu 1500
ether 00:04:79:66:6b:09
media: Ethernet autoselect (100baseTX )
status: active
vlan: 100 parent interface: xl1
Как видите он создается сразу с тэгом на нужном транковом интерфейсе
Cоответственно в rc.conf это выглядит так:
cloned_interfaces="xl1.100 xl1.200"
ifconfig_xl1_100="inet 10.10.10.1/24"
ifconfig_xl1_200="inet 10.11.11.1/24"
Если на интерфейсе только vlan'ы, то нужно добавить вышеописанные строки в /etc/rc.conf,
чтоб vlan'ы получали статус UP.


