802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:8cc4b8aebf580397e5e540955a6c37f1' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Уже довольно большой период времени все сетевые интерфейсы настраиваю с поддержкой <strong>802.1Q VLAN</strong>. Решил описать процедуру настройки, возможно мой опыт пригодится еще кому-либо.</p>\n<p class=\"rtejustify\">Итак,&nbsp;не будем забывать о том,&nbsp;что есть сетевые карты, которые поддерживают vlan на аппаратном уровне, а есть которые не поддерживаются. Если сетевая карта не поддерживает vlan, во FreeBSD предусмотрена software поддержка, но карточка должна поддерживать oversized пакеты. Этим требованиям удовлетворяет большинство современных сетевых карт.</p>\n<p class=\"rtejustify\">FreeBSD позволяет использовать vlan-интерфейсы двух типов:</p>\n<ul>\n<li>псевдоинтерфейс vlan</li>\n<li>cisco-like интерфейс</li>\n</ul>\n<h3 class=\"rtecenter\">Псевдоинтерфейс vlan</h3>\n<p class=\"rtejustify\">Исходные данные:</p>\n<ul>\n<li>коммутатор настроен корректно</li>\n<li>порт комутатора в режиме &quot;trunk&quot;</li>\n<li>VID 8 - Internet</li>\n<li>VID 12 - локальная сеть</li>\n<li>сетевой адаптер NVIDIA nForce MCP67 Networking Adapter (nfe0)</li>\n</ul>\n<p class=\"rtejustify\">Для поддержки 802.1Q VLAN на уровне ядра, необходимо наличие в конфигурационном файле ядра наличие следующей строки:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre>\ndevice vlan</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Но если поддержки 802.1Q VLAN на уровне ядра нету,&nbsp;то ничего страшного, поддержка 802.1Q VLAN подгрузится в виде модуля:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># kldstat | grep vlan</strong></p>\n<pre>\n4 1 0xffffffff80822000 2306 if_vlan.ko</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Итак,&nbsp;приступим к созданию VID 8.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>ifconfig vlan8 create vlan 8 vlandev nfe0 195.3.159.250 netmask 255.255.255.252</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь более подробно о используемых опциях:</p>\n<ul>\n<li class=\"rtejustify\"><strong>ifconfig</strong> - команда конфигурирования сетевого интерфейса;</li>\n<li class=\"rtejustify\"><strong>vlan8</strong> - указываем,&nbsp;какой именно интерфейс будем конфигурировать (я имею привычку обозначать виртуальный интерфейс,&nbsp;отталкиваясь от VID, но ничего не мешает проводить нумерацию&nbsp;интерфейсов&nbsp;по порядку, тоесть&nbsp;vlan0, vlan1, vlan3 и тд);</li>\n<li class=\"rtejustify\"><strong>create</strong> - этой командой, собственно, и создается виртуальный интерфейс;</li>\n<li class=\"rtejustify\"><strong>vlan </strong><span style=\"color: #ff0000\"><strong>8</strong></span> - указываем,&nbsp;какой VID будет у созданного интерфейса. В моем случае&nbsp;это 8;</li>\n<li class=\"rtejustify\"><strong>vlandev </strong><span style=\"color: #ff0000\"><strong>nfe0</strong></span> - указываем, на каком именно физическом интерфейсе будет создан виртуальный (в моем частном случае - это nfe0);</li>\n<li class=\"rtejustify\"><strong>195.3.159.250 netmask 255.255.255.252</strong> - присваиваем IP-адрес интерфейсу.</li>\n</ul>\n<p>По аналогии создаем vlan12:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>ifconfig vlan12 create vlan 12 vlandev nfe0 10.25.25.1 netmask 255.255.255.0</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Проверяем,&nbsp;что у нас получилось:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># ifconfig</strong></p>\n<pre>\nnfe0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n options=8&lt;VLAN_MTU&gt;\n ether 00:22:15:02:04:8f\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\nlo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384\n options=3&lt;RXCSUM,TXCSUM&gt;\n inet 127.0.0.1 netmask 0xff000000\nvlan8: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n ether 00:22:15:02:04:8f\n inet 195.3.159.250 netmask 0xfffffffc broadcast 195.3.159.251\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\n vlan: 8 parent interface: nfe0\nvlan12: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n ether 00:22:15:02:04:8f\n inet 10.25.25.1 netmask 0xffffff00 broadcast 10.25.25.255\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\n vlan: 12 parent interface: nfe0</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь дело за малым - внести необходимые изменения в rc.conf, чтобы не потерять настройки после перезагрузки сервера. Вот список необходимых опций:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre>\nifconfig_nfe0=&quot;up&quot;\ncloned_interfaces=&quot;vlan8 vlan12&quot;<br />ifconfig_vlan8=&quot;vlan 8 vlandev nfe0 195.3.159.250 netmask 255.255.255.252&quot;\nifconfig_vlan12=&quot;vlan 12 vlandev nfe0 10.25.25.1 netmask 255.255.255.0&quot;</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\"><strong>ifconfig_nfe0=&quot;up&quot;</strong> - указываем, что интерфейс необходимо &quot;поднять&quot;,&nbsp;иначе он не подымется самостоятельно. Тоесть виртуальные интерфейсы создадутся, но трафик по ним проходить не будет.</p>\n<p class=\"rtejustify\"><strong>cloned_interfaces=&quot;vlan8 vlan12&quot;</strong> - необходимо перечислить, какие виртуальные интерфейсы необходимо создать.</p>\n<p class=\"rtejustify\">Для удаления виртуального интерфейса необходимо воспользоваться ключем &quot;destroy&quot; команды ifconfig. Пример удаления vlan12:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># ifconfig vlan12 destroy</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;</p>\n<h3 class=\"rtecenter\">Сisco-like интерфейс</h3>\n<p class=\"rtejustify\">Исходные данные:</p>\n<ul>\n<li class=\"rtejustify\">коммутатор настроен корректно</li>\n<li class=\"rtejustify\">порт комутатора в режиме &quot;trunk&quot;</li>\n<li class=\"rtejustify\">VID&nbsp;7 - Internet</li>\n<li class=\"rtejustify\">VID 12 - локальная сеть</li>\n<li class=\"rtejustify\">сетевой адаптер&nbsp;на чипсете Realtec 8169&nbsp;(re0)</li>\n</ul>\n<p class=\"rtejustify\">Для поддержки 802.1Q VLAN на уровне ядра, необходимо наличие в конфигурационном файле ядра наличие следующей строки:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre>\ndevice vlan</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Если поддержки 802.1Q VLAN на уровне ядра нету, подгрузим необходимый модуль ядра:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># kldload /boot/kernel/if_vlan.ko<br />\n # kldstat | grep vlan</strong></p>\n<pre>\n4 1 0xffffffff80822000 2306 if_vlan.ko</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Для автоматической подгрузки модуля во время загрузки операционной системы,&nbsp;необходимо внести изменения в <strong>loader.conf</strong>:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo \'if_vlan_load=&quot;YES&quot;\' &gt;&gt; /boot/loader.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Создадим vlan-интерфейс c VID 7:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>ifconfig re0.7 create 195.3.158.42 netmask 255.255.255.240</strong></td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Более подробно о используемых опциях:</p>\n<ul>\n<li><strong>ifconfig </strong>- команда конфигурирования сетевого интерфейса;</li>\n<li><strong>re0.7</strong> - указываем &quot;родительский&quot; интерфейс (re0) и номер VID;</li>\n<li><strong>create </strong>- этой командой, собственно, и создается виртуальный интерфейс;</li>\n<li><strong>195.3.158.42 netmask 255.255.255.240</strong> -&nbsp;присваиваем IP-адрес интерфейсу.</li>\n</ul>\n<p>По аналогии создадим интерфейс с VID 12:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>ifconfig re0.12 create 10.25.25.1 netmask 255.255.255.0</strong></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Проверяем,&nbsp;что у нас получилось в результате:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>ifconfig</strong></p>\n<pre>\nre0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500\n options=b&lt;RXCSUM,TXCSUM,VLAN_MTU&gt;\n ether 00:19:e0:61:e9:90\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\nlo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; mtu 16384\n inet 127.0.0.1 netmask 0xff000000\nre0.7: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500\n inet 195.3.158.42 netmask 0xfffffff0 broadcast 195.3.158.47\n ether 00:19:e0:61:e9:90\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\n vlan: 7 parent interface: re0\nre0.12: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500\n inet 10.25.25.1 netmask 0xffffff00 broadcast 10.25.25.255\n ether 00:19:e0:61:e9:90\n media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)\n status: active\n vlan: 12 parent interface: re0\n</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Следующий шаг - внесение необходимых изменений в<strong> rc.conf</strong>, чтобы не потерять настройки после перезагрузки сервера:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>cloned_interfaces=&quot;re0.7 re0.12&quot;<br />\n ifconfig_re0=&quot;up&quot;<br />\n ifconfig_re0_7=&quot;inet 195.3.158.42 netmask 255.255.255.240&quot;<br />\n ifconfig_re0_12=&quot;inet 10.25.25.1 netmask 255.255.255.0&quot;</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\"><strong>ifconfig_re0=&quot;up&quot;</strong> - указываем, что интерфейс необходимо &quot;поднять&quot;, иначе он не подымется самостоятельно. Тоесть виртуальные интерфейсы создадутся, но трафик по ним проходить не будет.</p>\n<p class=\"rtejustify\"><strong>cloned_interfaces=&quot;re0.7 re0.12&quot; </strong>- необходимо перечислить, какие виртуальные интерфейсы необходимо создать.</p>\n<p class=\"rtejustify\">Для удаления виртуального интерфейса необходимо воспользоваться ключем &quot;<strong>destroy</strong>&quot; команды <strong>ifconfig</strong>. Пример удаления vlan12:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>#<strong> ifconfig&nbsp;re0.12 destroy</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:8cc4b8aebf580397e5e540955a6c37f1' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:84e2507a1a6a45c0d1474556c3d327fe' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Мэн, огромное тебе спасибо! Долго искал как при старте системы присваивать адрес сisco-like интерфейсу - все время писалось em0.10 not found. А всего то надо было заменить точку на подчеркивание!</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:84e2507a1a6a45c0d1474556c3d327fe' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a4e49876df712156e546f4f5ff374d94' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Не хватает настройки для приема теггированного и нетегированного траффика.</p>\n<p>Будет полезно для плавной миграции на виланы.</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:a4e49876df712156e546f4f5ff374d94' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:8bf8ce09e60d445371035f15bb4cdd93' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Что именно имеется ввиду? Настройка коммутаторов?&nbsp;</p>\n<p>Это будет оффтоп...</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:8bf8ce09e60d445371035f15bb4cdd93' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:ebff1e810101c8e9b31cd35830a4bfb7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Настройка шнтерфейса freebsd для приема траффика из native vlan и теггированного траффика vlan 2,3,и т.д.</p>\n<p>Поскольку в описаной&nbsp; конфигурации прием траффика прекращается.</p>\n<p>Это частный случай, с которым я столкнулся при постепенной миграции во vlan&#39;ы.&nbsp;</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:ebff1e810101c8e9b31cd35830a4bfb7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:98e631b5dccf0451bb879c49e666379e' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Настройка интерфейса freebsd для одновременного приема из native vlan(untagged) и теггированых сетей.</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:98e631b5dccf0451bb879c49e666379e' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:46da8b4e1fbc60ab19e13653f30c67e7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>ifconfig_re0=&quot;up&quot;<br />\ncloned_interfaces=&quot;vlan11 vlan12&quot;<br />\nifconfig_vlan11=&quot;inet 195.3.158.42/28 vlan 11 vlandev re0&quot;<br />\nifconfig_vlan12=&quot;inet 10.25.25.1/24 vlan 12 vlandev re0&quot;</p>\n<p>ifconfig_re0=&quot;inet 192.168.111.1/24&quot;</p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:46da8b4e1fbc60ab19e13653f30c67e7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767900150, expire = 1767986550, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Уже довольно большой период времени все сетевые интерфейсы настраиваю с поддержкой 802.1Q VLAN. Решил описать процедуру настройки, возможно мой опыт пригодится еще кому-либо.

Итак, не будем забывать о том, что есть сетевые карты, которые поддерживают vlan на аппаратном уровне, а есть которые не поддерживаются. Если сетевая карта не поддерживает vlan, во FreeBSD предусмотрена software поддержка, но карточка должна поддерживать oversized пакеты. Этим требованиям удовлетворяет большинство современных сетевых карт.

FreeBSD позволяет использовать vlan-интерфейсы двух типов:

  • псевдоинтерфейс vlan
  • cisco-like интерфейс

Псевдоинтерфейс vlan

Исходные данные:

  • коммутатор настроен корректно
  • порт комутатора в режиме "trunk"
  • VID 8 - Internet
  • VID 12 - локальная сеть
  • сетевой адаптер NVIDIA nForce MCP67 Networking Adapter (nfe0)

Для поддержки 802.1Q VLAN на уровне ядра, необходимо наличие в конфигурационном файле ядра наличие следующей строки:

device         vlan

Но если поддержки 802.1Q VLAN на уровне ядра нету, то ничего страшного, поддержка 802.1Q VLAN подгрузится в виде модуля:

# kldstat | grep vlan

4    1 0xffffffff80822000 2306     if_vlan.ko

Итак, приступим к созданию VID 8.

# ifconfig vlan8 create vlan 8 vlandev nfe0 195.3.159.250 netmask 255.255.255.252

Теперь более подробно о используемых опциях:

  • ifconfig - команда конфигурирования сетевого интерфейса;
  • vlan8 - указываем, какой именно интерфейс будем конфигурировать (я имею привычку обозначать виртуальный интерфейс, отталкиваясь от VID, но ничего не мешает проводить нумерацию интерфейсов по порядку, тоесть vlan0, vlan1, vlan3 и тд);
  • create - этой командой, собственно, и создается виртуальный интерфейс;
  • vlan 8 - указываем, какой VID будет у созданного интерфейса. В моем случае это 8;
  • vlandev nfe0 - указываем, на каком именно физическом интерфейсе будет создан виртуальный (в моем частном случае - это nfe0);
  • 195.3.159.250 netmask 255.255.255.252 - присваиваем IP-адрес интерфейсу.

По аналогии создаем vlan12:

# ifconfig vlan12 create vlan 12 vlandev nfe0 10.25.25.1 netmask 255.255.255.0

Проверяем, что у нас получилось:

# ifconfig

nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:22:15:02:04:8f
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
vlan8: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:22:15:02:04:8f
        inet 195.3.159.250 netmask 0xfffffffc broadcast 195.3.159.251
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 8 parent interface: nfe0
vlan12: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:22:15:02:04:8f
        inet 10.25.25.1 netmask 0xffffff00 broadcast 10.25.25.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 12 parent interface: nfe0

Теперь дело за малым - внести необходимые изменения в rc.conf, чтобы не потерять настройки после перезагрузки сервера. Вот список необходимых опций:

ifconfig_nfe0="up"
cloned_interfaces="vlan8 vlan12"
ifconfig_vlan8="vlan 8 vlandev nfe0 195.3.159.250 netmask 255.255.255.252" ifconfig_vlan12="vlan 12 vlandev nfe0 10.25.25.1 netmask 255.255.255.0"

ifconfig_nfe0="up" - указываем, что интерфейс необходимо "поднять", иначе он не подымется самостоятельно. Тоесть виртуальные интерфейсы создадутся, но трафик по ним проходить не будет.

cloned_interfaces="vlan8 vlan12" - необходимо перечислить, какие виртуальные интерфейсы необходимо создать.

Для удаления виртуального интерфейса необходимо воспользоваться ключем "destroy" команды ifconfig. Пример удаления vlan12:

# ifconfig vlan12 destroy

 

Сisco-like интерфейс

Исходные данные:

  • коммутатор настроен корректно
  • порт комутатора в режиме "trunk"
  • VID 7 - Internet
  • VID 12 - локальная сеть
  • сетевой адаптер на чипсете Realtec 8169 (re0)

Для поддержки 802.1Q VLAN на уровне ядра, необходимо наличие в конфигурационном файле ядра наличие следующей строки:

device         vlan

Если поддержки 802.1Q VLAN на уровне ядра нету, подгрузим необходимый модуль ядра:

# kldload /boot/kernel/if_vlan.ko
# kldstat | grep vlan

4    1 0xffffffff80822000 2306     if_vlan.ko

Для автоматической подгрузки модуля во время загрузки операционной системы, необходимо внести изменения в loader.conf:

# echo 'if_vlan_load="YES"' >> /boot/loader.conf

Создадим vlan-интерфейс c VID 7:

# ifconfig re0.7 create 195.3.158.42 netmask 255.255.255.240

 Более подробно о используемых опциях:

  • ifconfig - команда конфигурирования сетевого интерфейса;
  • re0.7 - указываем "родительский" интерфейс (re0) и номер VID;
  • create - этой командой, собственно, и создается виртуальный интерфейс;
  • 195.3.158.42 netmask 255.255.255.240 - присваиваем IP-адрес интерфейсу.

По аналогии создадим интерфейс с VID 12:

# ifconfig re0.12 create 10.25.25.1 netmask 255.255.255.0

Проверяем, что у нас получилось в результате:

# ifconfig

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:19:e0:61:e9:90
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
re0.7: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 195.3.158.42 netmask 0xfffffff0 broadcast 195.3.158.47
        ether 00:19:e0:61:e9:90
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 7 parent interface: re0
re0.12: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 10.25.25.1 netmask 0xffffff00 broadcast 10.25.25.255
        ether 00:19:e0:61:e9:90
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 12 parent interface: re0

Следующий шаг - внесение необходимых изменений в rc.conf, чтобы не потерять настройки после перезагрузки сервера:

cloned_interfaces="re0.7 re0.12"
ifconfig_re0="up"
ifconfig_re0_7="inet 195.3.158.42 netmask 255.255.255.240"
ifconfig_re0_12="inet 10.25.25.1 netmask 255.255.255.0"

ifconfig_re0="up" - указываем, что интерфейс необходимо "поднять", иначе он не подымется самостоятельно. Тоесть виртуальные интерфейсы создадутся, но трафик по ним проходить не будет.

cloned_interfaces="re0.7 re0.12" - необходимо перечислить, какие виртуальные интерфейсы необходимо создать.

Для удаления виртуального интерфейса необходимо воспользоваться ключем "destroy" команды ifconfig. Пример удаления vlan12:

# ifconfig re0.12 destroy

 

Ваша оценка: Нет Средняя: 5 (13 голосов)

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

Мэн, огромное тебе спасибо! Долго искал как при старте системы присваивать адрес сisco-like интерфейсу - все время писалось em0.10 not found. А всего то надо было заменить точку на подчеркивание!

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

Не хватает настройки для приема теггированного и нетегированного траффика.

Будет полезно для плавной миграции на виланы.

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

Что именно имеется ввиду? Настройка коммутаторов? 

Это будет оффтоп...

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

Настройка шнтерфейса freebsd для приема траффика из native vlan и теггированного траффика vlan 2,3,и т.д.

Поскольку в описаной  конфигурации прием траффика прекращается.

Это частный случай, с которым я столкнулся при постепенной миграции во vlan'ы. 

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

Настройка интерфейса freebsd для одновременного приема из native vlan(untagged) и теггированых сетей.

Re: 802.1Q VLAN - реализация 802.1Q VLAN на FreeBSD

ifconfig_re0="up"
cloned_interfaces="vlan11 vlan12"
ifconfig_vlan11="inet 195.3.158.42/28 vlan 11 vlandev re0"
ifconfig_vlan12="inet 10.25.25.1/24 vlan 12 vlandev re0"

ifconfig_re0="inet 192.168.111.1/24"

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Сисадмин: - Hу и пусть гoвoрят, чтo испoльзoвать в качестве парoля имя свoегo кoта - дурнoй тoн! RrgTt_fx32!b, кыс-кыс-кыс...