Wednesday 26 October 2011

Как да настроим VLAN в Linux

Преведох оригиналният материал от моят блог (same article in English) на Български, защото наскоро един колега ме попита как се прави, а не е добър с английският. (то не че е необходимо ;) )

Линукс, върви с интрументи за енкапсулиране на изходящият и декапсулиране на входящият трафик.

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

Стандарта се казва 802.1q, а модула за ядрото, който поддържа VLAN се казва 8021q. Първо трябва да видите, дали ви е активен съотвеният модул за ядрото и ако не е - да го включите.

bash-4.1# lsmod | grep 802
bash-4.1# modprobe 8021q
bash-4.1# lsmod | grep 802
8021q                  18128  0

След това, трябва да настроите виртуалният лан таг, който ви интересува да приемате и да изберете на кой интерфейс ще го настроите. Може да има повече от 1 VLAN tag на един интерфейс. Всеки един таг си има собствен виртуален интерфейс, който можете да адресирате или слушате индивидуално, както и да им слагате различни IP адреси.

bash-4.1# vconfig add eth3 200
Added VLAN with VID == 200 to IF -:eth3:-
bash-4.1# ifconfig eth3.200 10.0.0.1/16 up
bash-4.1# ping 10.0.155.50 -I eth3.200
PING 10.0.155.50 (10.0.155.50) 56(84) bytes of data.
64 bytes from 10.0.155.50: icmp_req=1 ttl=63 time=0.286 ms
64 bytes from 10.0.155.50: icmp_req=2 ttl=63 time=0.286 ms
64 bytes from 10.0.155.50: icmp_req=3 ttl=63 time=0.275 ms
64 bytes from 10.0.155.50: icmp_req=4 ttl=63 time=0.281 ms
^c
bash-4.1# vconfig add eth3 150
Added VLAN with VID == 150 to IF -:eth3:-
bash-4.1# ifconfig eth3.150 100.0.0.1/16 up
bash-4.1# ping 100.0.0.2 -I eth3.150
PING 10.0.155.50 (10.0.155.50) 56(84) bytes of data.
64 bytes from 100.0.0.2: icmp_req=1 ttl=63 time=0.286 ms
64 bytes from 100.0.0.2: icmp_req=2 ttl=63 time=0.286 ms
64 bytes from 100.0.0.2: icmp_req=3 ttl=63 time=0.275 ms
64 bytes from 100.0.0.2: icmp_req=4 ttl=63 time=0.281 ms
^c
bash-4.1# 

В общи линии, това е всичко. Поради някаква причина, в дистрибуцията, която аз ползвам няма конфигурационен файл, в който всичките тези неща да се добавят, за да стартират по време на boot. За това съм добавил няколко реда в /etc/rc.local, които вършат цялата работа. Този конфигурационен скрипт се изпълнява на края, но така или иначе - приложенията които ползвам стартират след това, така че не ми пречи.

Чувствайте се свободни да го сложите където искате или да си направите собствен стартиращ скрипт, който да закачите към друг от boot скриптовете:

#!/bin/bash

echo "Setting vlans ..."
modprobe 8021q
vconfig add eth3 200
ifconfig eth3.200 10.0.0.5/16 up
vconfig add eth3 150
ifconfig eth3.150 100.0.0.1/16 up
echo "... done"

No comments:

Post a Comment