Описание пакета flyscript
Автоматический 802.1q VLAN
В новой версии появилась автоматическая обработка 802.1q VLAN
Теперь, если интерфейс называется (vlan*, eth*.*, tap*.*) - то автоматически вызываются команды vconfig add при «подъеме» и vconfig rem при «опускании» интерфейса
bridge
Появилась функция позволяющая автоматически создавать/удалять бридж-интерфейсы, при задании параметра bridge_ports.
Например:
iface br1 inet manual bridge_ports eth1.100 eth2
При этом автоматически создастся eth1.100 VLAN и будет создан бридж br1 между eth1.100 и eth2
Также можно указывать параметры:
bridge_ageing <time>- set ageing time, default is 300, can have a fractional part.bridge_bridgeprio <priority>- set bridge priority, <priority> is between 0 and 65535, default is 32768, affects bridge id, lowest priority bridge will be the root.bridge_fd <time>- set bridge forward delay to <time> seconds, default is 15, can have a fractional part.bridge_gcint <time>- set garbage collection interval to <time> seconds, default is 4, can have a fractional part.bridge_hello <time>- set hello time to <time> seconds, default is 2, can have a fractional part.bridge_hw <MAC address>- set the ethernet MAC address of all the bridge interfaces to the specified one so that the bridge ends up having this ardware address as well. WARNING: use this only if you know what you are doing, changing the MAC address of the cards may cause trouble if you don't know what you are doing. To see the discussion about this feature and the problems that can cause you can try to ave a look at the bug that asked for this feature visitingbridge_maxage <time>- set max message age to <time> seconds, default is 20, can have a fractional part.bridge_maxwait <time>- forces to <time> seconds the maximum time that the Debian bridge setup scripts will wait for the bridge orts o get to the forwarding status, doesn't allow factional part. If it is equal to 0 then no waiting is done.bridge_pathcost <port> <cost>- set path cost for a port, default is 100, <port> is the name of the interface to which this setting applies.bridge_portprio <port> <priority>- set port priority, default is 128, affects port id, <port> is the name of the interface to which this setting applies.bridge_stp <state>- turn spanning tree protocol on/off, <state> values are on or yes to turn stp on and any other thing to set it off, default has changed to off for security reasons in latest kernels, so you should specify if you want stp on or off with this option, and not rely on your kernel's default behaviour.
Метод manual
Появился метод manual для интерфейсов, это позволяет поднять интерфейс не присваивая ему адрес, например
auto eth0 iface eth0 inet manual
brtun
Параметр brtun предназначен для автоматического управления openvpn L2 туннелями. Пример
auto brtun0 iface brtun0 inet static address 192.168.10.1 netmask 255.255.255.0 brtun 172.28.200.91:1000-172.28.200.92:1000 iface=eth2.1000,eth2.1001 --proto udp --ping 15 --verb 4 --shaper 64000
ИЛИ
auto brtun0 iface brtun0 inet manual brtun 172.28.200.91:1000-172.28.200.92:1000 vlans=eth0:111,112,113,114 --proto udp --ping 15 --verb 4 --shaper 64000
Внимание, параметры шейпера openvpn указываются не в битах, а в байтах!
Параметры
ipaddr1:port1-ipaddr2:port2- обязательный параметр указывающий локальные (ipaddr1) и удаленные (ipaddr2) адреса туннелей между которыми строятся туннели.ipaddr1- локальный адрес - обязательный под-параметр (можно указатьautoесли локальный адрес динамический)port1- локальный порт - обязательный под-параметрipaddr2- удаленный адрес - обязательный под-параметр (можно указатьautoесли удаленный адрес динамический)port2- удаленный порт, не обязательный параметр, если не указан - используется значение port1
- Далее возможно указать 2 взаимно-исключающий варианта:
iface=eth2.1000[,eth3.1000]- интерфейс на который необходимо поднять бридж (802.1q VLAN'ы создаются автоматически), через запятую можно указывать дополнительные интерфейсы, которые необходимо включить в бридж.vlans=eth0:111,112,113,114…- данный вариант удобен когда у клиента множество 802.1q VLAN'ов, т.е не нужно создавать на каждый VLAN отдельную запись
- все остальные параметры передаются в openvpn в неизменном виде, подробнее можно почитать на странице http://openvpn.net/
Точка-многоточка
Можно добавлять несколько brtun параметров в описании интерфейса - т.е. создать соединение точка-многоточка (только при iface=….), например
auto post iface post inet manual brtun auto:1000-172.28.200.92 iface=eth3.100 brtun1 auto:1001-72.28.200.92 brtun2 172.28.200.91:1002-auto
В данном примере будут созданы 3 туннеля (будут запущены 3 демона openvpn), и объединены в один бридж - post, а также добавлен в бридж eth3.100
Внутренняя логика
пример1
auto brtun
iface brtun inet manual
brtun ip1:1000-ip2 iface=BRIFACES
ifup
- создать бридж с именем
brtun - создать tap интерфейс
tap1000 - поднять интерфейсы
BRIFACES(если нужно создать соотв. VLAN) - добавить в бридж
brtuntap1000интерфейс - добавить в бридж
brtunBRIFACESинтерфейсы - запустить openvpn
ifdown
- удаление идет в обратном порядке созданию
пример2
auto brtun
iface brtun inet manual
brtun ip1:1000-ip2 vlans=IFACE:100,101,102...
ifup
- создать tap интерфейс
tap1000 - создать бридж с именем
brtun100 - добавить 802.1q VLAN
tap1000.100 - добавить 802.1q VLAN
IFACE.100 - добавить в бридж интерфейсы
tap1000.100иIFACE.100 - повторить операцию 2 со всеми остальными вланами (101,102 и тд)
- запустить openvpn
ifdown
- удаление идет в обратном порядке созданию
Настройка связки FlyRouter и Debian (или Ubuntu)
- Установите Debian (или Ubuntu/Kubuntu/Xubuntu и т.д.) на сервер
- Для всех видов Ubuntu обязательно выполните команду удаления NetworkManager-а:
apt-get remove network-manager
- Настройте установку пакетов из репозитария через интернет или локально с CD
- Установите необходимые пакеты в систему, выполнив команды:
apt-get update apt-get install openvpn bridge-utils vlan apt-get install openssh-server mc (эти пакеты устанавливается опционально)
- Скачайте с репозитария и запустите установку flyscript (потом его можно удалить):
cd /tmp wget http://flyrouter.net/downloads/software/flyrouter/builder/script/fsdeb.sh chmod 755 ./fsdeb.sh ./fsdeb.sh
- После этого можете прописывать туннели в файле /etc/network/interfaces:
# Tunnel for testing1
auto brtun0
iface brtun0 inet static
address 172.17.1.1
netmask 255.255.255.0
brtun auto:1278-192.168.1.1:1278 iface=eth0.1 --proto udp --ping 15 --verb 4 --shaper 64000
# Tunnel for testing2
auto brtun1
iface brtun1 inet manual
brtun auto:1279-192.168.1.2:1279 iface=eth0.2 --proto udp --ping 15 --verb 4 --shaper 64000