{{indexmenu_n>4}}
====== Примеры конфигурации ======
===== Пример: создание veth-интерфейсов =====
Все, что описано в данном разделе, — создание veth-интерфейсов, запуск BIRD и пр. - должно быть задано в скриптах загрузки системы и выполняться **до** запуска fastdpi.
Пусть у нас в fastdpi.conf заданы следующие девайсы:
in_dev=41-00.0
out_dev=41-00.1
Предположим, что нам требуется настроить в BIRD протокол BGP для uplink, то есть на девайсе ''41-00.1''.
Теневые veth-интерфейсы нужно создавать для каждого in/out-девайса, в трафике которого идут пакеты протоколов маршрутизации, они требуют конфигурирования в BIRD. Если девайс не участвует в маршрутизации (как ''in_dev=41-00.0'' в этом примере), для него не надо создавать veth-пару.
Чтобы перенаправить BGP-трафик c ''41-00.1'' на роут-демон (BIRD), который работает в ''router'' netns, нам нужно создать veth-пару теневых для ''41-00.1'' интерфейсов.
Создаем ''router'' netns (имя router здесь выбрано произвольно, вы можете использовать другое имя netns), в котором будет работать BIRD:
ip netns add router
Создаем veth пару:
ip link add bng-w type veth peer name rib-w netns router
rib-интерфейс должен иметь IP-адрес (и IPv6, если IPv6 поддерживается). Этот адрес будет адресом BGP-пира для BGP-соседа.
ip netns exec router ip address add 10.0.0.4/24 broadcast 10.0.0.255 dev rib-w
ip netns exec router ip address add 2098::4/124 dev rib-w
ip netns exec router ip link set dev rib-w arp on
ip netns exec router ethtool -K rib-w tx off
Где:
* Первые две команды назначают интерфейсу ''rib-w'' IPv4- и IPv6-адрес. Этот адрес будет адресом BGP-пира для BGP-соседа.
* ''ip link set dev rib-w arp on'' включает ARP на интерфейсе.
* ''ethtool -K rib-w tx off'' отключает аппаратный расчёт контрольной суммы (tx checksum offload). На некоторых сборках ядра, как минимум в CentOS 8, контрольная сумма на интерфейсе может рассчитываться некорректно.
Все команды выполняются внутри netns ''router'' (через ''ip netns exec router'').
IP-адрес rib-интерфейсов должны отличаться от IP-адреса СКАТ, задаваемого параметрами ''bras_arp_ip'' и ''bras_ipv6_address''. Более того, во избежание непонятных ситуаций адреса ''bras_arp_ip'' и ''bras_ipv6_address'' не должны входить ни в какую подсеть, отводимую на TAP-интерфейсы.
DPI-интерфейс **не должен** иметь ни IPv4, ни IPv6 адреса, так как в СКАТ он используется как TAP-интерфейс и наличие на нем адресов не требуется (более того, даже может мешать, если сам интерфейс начнет генерировать и отправлять пакеты):
ip link set dev bng-w arp off
# Disable IPv6 on dpiXXX interfaces (чтобы не было даже link-local адреса)
echo 1>/proc/sys/net/ipv6/conf/bng-w/disable_ipv6
Наконец, поднимаем все созданные интерфейсы:
ip link set bng-w up
ip netns exec router ip link set lo up
ip netns exec router ip link set rib-w up
Не забывайте, что роут-демон (в этом примере — BIRD) должен быть запущен в ''router'' netns:
ip netns exec router /usr/local/sbin/bird
По умолчанию network namespace и veth-интерфейсы, созданные в Linux, не сохраняются после перезагрузки системы. Поэтому создавайте их стартовым скриптом (например, ''/usr/local/bin/bng_router.sh''), который запускается при загрузке системы до старта роут-демона и fastDPI. Сам роут-демон (BIRD) запускайте через systemd-юнит в netns router после того, как скрипт отработает.
Пример скрипта ''/usr/local/bin/bng_router.sh'':
#!/bin/bash
# BIRD network namespace create and configuring process
/sbin/ip netns add router
# prepare BIRD interfaces
/sbin/ip link add bng-w type veth peer name rib-w
/sbin/ip link set rib-w netns router
# To border
/sbin/ip netns exec router ip link add link rib-w name vlan1111 type vlan id 1111
/sbin/ip netns exec router ip address add 192.168.27.8/28 broadcast 192.168.27.15 dev vlan1111
/sbin/ip netns exec router ip link set dev rib-w arp on
# set tx checksum offload off
/sbin/ip netns exec router ethtool -K rib-w tx off
/sbin/ip link set dev bng-w arp off
echo 1 > /proc/sys/net/ipv6/conf/bng-w/disable_ipv6
# LINKS UP
/sbin/ip netns exec router ip link set lo up
/sbin/ip netns exec router ip link set rib-w up
/sbin/ip netns exec router ip link set vlan1111 up
/sbin/ip link set bng-w up
Пример юнита BIRD (''/etc/systemd/system/bird.netns.service''). Юнит сам запускает скрипт ''bng_router.sh'' перед стартом BIRD (''ExecStartPre''), поэтому отдельно добавлять скрипт в автозагрузку не нужно:
[Unit]
Description=BIRD Internet Routing Daemon executed in netns "router"
Wants=network.target
After=network.target
Before=fastdpi.service
[Service]
Type=simple
ExecStartPre=/usr/bin/bash /usr/local/bin/bng_router.sh
ExecStartPre=/sbin/ip netns exec router /usr/sbin/bird -p -c /etc/bird.netns.conf
ExecStart=/sbin/ip netns exec router /usr/sbin/bird -c /etc/bird.netns.conf -s /var/run/bird.netns.ctl -f -u bird -g bird
ExecStartPost=/bin/bash -c "while test ! -e /var/run/bird.netns.ctl; do sleep 0.5; done && chmod 666 /var/run/bird.netns.ctl"
ExecReload=/sbin/ip netns exec router /usr/sbin/birdc -s /var/run/bird.netns.ctl configure
ExecStopPost=/bin/bash -c "while test ! -e /var/run/bird.netns.ctl; do sleep 0.5; done && rm -f /var/run/bird.netns.ctl"
Restart=on-failure
[Install]
WantedBy=multi-user.target
Состоянием линков veth-интерфейсов управляет СКАТ: если девайс ''41-00.1'' link down, то СКАТ переведет в link down veth-интерфейсы этого девайса; как только линк ''41-00.1'' поднимется, СКАТ переведет veth-интерфейсы в link up.
//Как быть с VLAN?//\\
СКАТ пересылает пакеты в rib-интерфейсы "как есть", без всякого преобразования. Это значит, что в случае наличия VLAN, нужно средствами Linux создать vlan-интерфейсы на rib-интерфейсе, а уже к этим vlan-интерфейсам привязать bird.\\
В fastdpi.conf vlan-интерфейсы, созданные на rib-интерфейсе, не должны нигде фигурировать, — вы должны в качестве ''tap'' и ''peer'' указать два конца veth-пары.\\
В режиме роутера СКАТ будет терминировать исходящий абонентский трафик в нужный VLAN без дополнительной настройки. Для оригинации входящего трафика необходимо включить [[dpi:bras_bng:bras_l2_vlan_term#работа_с_vlan-тэгами|обработку VLAN-трафика.]]
//MTU//\\
СКАТ **не** выставляет MTU на veth-интерфейсах. При конфигурировании veth-интерфейсов следует задать MTU штатными средствами Linux.
===== Полная настройка роутера (fastdpi.conf + bird.netns.conf + bng_router.sh) =====
Ниже приведён сквозной пример: СКАТ с роутером, LAG на стороне LAN и WAN и пятью VRF. Роут-демон BIRD работает в netns ''router''. Три файла согласованы между собой: имена veth-пары (''bng''/''rib'', ''bng-static''/''rib-static''), номера таблиц ядра и подсети совпадают.
**1.** Стартовый скрипт ''/usr/local/bin/bng_router.sh'' создаёт netns ''router'', veth-пары и VLAN-интерфейс. Запускается из юнита bird.netns.service до старта BIRD и fastdpi.
#!/bin/bash
# BIRD network namespace create and configuring process
/sbin/ip netns add router
# prepare router interfaces
/sbin/ip link add bng-w type veth peer name rib-w
/sbin/ip link set rib-w netns router
/sbin/ip link add bng-static type veth peer name rib-static
/sbin/ip link set rib-static netns router
/sbin/ip netns exec router ip address add 169.254.228.228/32 dev rib-static
/sbin/ip netns exec router ip link add link rib-w vlan1111 name vlan1111 type vlan id 1111
/sbin/ip netns exec router ip address add 192.168.27.101/24 dev vlan1111
/sbin/ip netns exec router ip link set dev rib-w arp on
/sbin/ip netns exec router ip link set dev rib-static arp on
/sbin/ip netns exec router ethtool -K rib-static tx off
/sbin/ip netns exec router ethtool -K rib-w tx off
/sbin/ip link set dev bng-w arp off
/sbin/ip link set dev bng-static arp off
/sbin/ip link set bng-w up
/sbin/ip link set bng-static up
/sbin/ip netns exec router ip link set lo up
/sbin/ip netns exec router ip link set rib-w up
/sbin/ip netns exec router ip link set rib-static up
/sbin/ip netns exec router ip link set vlan1111 up
/sbin/ip netns exec router ip link add lo0 type dummy
/sbin/ip netns exec router ip address add /32 dev lo0
/sbin/ip netns exec router ip link set lo0 up
exit 0
**2.** Конфигурация СКАТ — в ''/etc/dpi/fastdpi.conf'' добавить параметры роутера (''router'', ''router_netns'', ''router_default_vrf'' и др.), а также блоки lag, router_device и router_vrf.
# FastDPI configuration parameters
#
# Interface pairs for ethernet bridge
#
# For example this setup
# in_dev=01-00.0:01-00.2
# out_dev=01-00.1:01-00.3
# creates following bridges:
# 01-00.0 <--> 01-00.1
# 01-00.2 <--> 01-00.3
#
dpdk_device=10:pci:00:13.0,desc='To subscriber'
dpdk_device=11:pci:00:14.0,desc='To internet'
dpdk_device=20:pci:00:16.0,desc='To subscriber'
dpdk_device=21:pci:00:15.0,desc='To internet'
in_dev=10:20
out_dev=11:21
router_max_ip4_route_count=100
router_max_ip6_route_count=20
#Scale factor is about 1 for every 1 Gigabit of total bandwidth
scale_factor=1
num_threads=2
#FDPI/CLI Control
ctrl_port=29000
ctrl_dev=lo
federal_black_list=False
black_list_redirect=http://vasexperts.ru/test/blocked.php
nat_exclude_private=1
mem_preset=1
forward_packet_priority=6
enable_auth=1
enable_acct=1
netflow=4
netflow_timeout=60
auth_servers=127.0.0.1%lo:29002
bras_enable=1
bras_arp_ip=127.0.0.1
bras_arp_mac=be:be:be:be:be:be
bras_dhcp_mode=2
bras_dhcp_ratelimit=16
bras_dhcp_disconnect=0x000B
bras_dhcp_timeout=17
bras_terminate_l2=1
bras_arp_proxy=0x006
bras_term_by_as=0
bras_terminate_local=0
bras_vlan_terminate=0
bras_dhcp_shcv_interval=60
bras_subs_id=qinq+mac,vlan+mac,mac
router_default_vrf=vrf-grt
router=1
router_netns=router
router_kernel_table=101
router_subs_announce=6
# BEGIN LAG CONFIGURATION
lag {
name=WAN
short_timeout=on
lacp=2
device=11
device=21
}
# END LAG CONFIGURATION
# BEGIN LLDP CONFIGURATION
lldp {
enable=on
device=10;desc=Te1/1;enable=on
device=20;desc=Te2/2;enable=on
device=11;desc=Te1/1;enable=on
device=21;desc=Te2/2;enable=on
system_name=bras800demo
system_desc=172.16.2.1/32
}
# END LLDP CONFIGURATION
# BEGIN IN LAG CONFIGURATION
lag {
name=LAN
short_timeout=on
lacp=2
device=10
device=20
}
# END IN LAG CONFIGURATION
# BEGIN ROUTER DEVICES CONFIGURATION
router_device {
vrf=vrf-grt
device=11
tap=bng-w
peer=rib-w
subnet=224.0.0.5/32
subnet=224.0.0.6/32
subnet=172.16.25.169/31
subnet=192.168.27.101/24
}
# END ROUTER DEVICES CONFIGURATION
# BEGIN ROUTER STATIC-DEVICE CONFIGURATION
router_device {
vrf=vrf-static
device=11
tap=bng-static
peer=rib-static
subnet=169.254.228.228/32
}
# END ROUTER STATIC-DEVICE CONFIGURATION
# BEGIN VRFs CONFIGURATION
router_vrf {
id=vrf-grt
netns=router
kernel_table=200
neighbor_cache=shared
}
router_vrf {
id=vrf-local
netns=router
kernel_table=203
neighbor_cache=shared
}
router_vrf {
id=vrf-inet
netns=router
kernel_table=202
neighbor_cache=shared
}
router_vrf {
id=vrf-static
netns=router
kernel_table=204
neighbor_cache=shared
}
router_vrf {
id=vrf-iptv
netns=router
kernel_table=201
neighbor_cache=shared
}
# END VRFs CONFIGURATION
bras_vrf_isolation=1
netflow_bill_method=1
ipfix_dev=vlanens18
ipfix_nat_udp_collectors=172.16.2.1:12345
ipfix_mtu_limit=1460
ajb_udpi_path=/mnt/dump/dpi
syslog_level=4
**3.** Конфигурация BIRD — ''/etc/bird.netns.conf'': таблицы для каждого VRF, протоколы kernel (номера таблиц совпадают с kernel_table из fastdpi.conf), статические маршруты, BGP-сессия с аплинком и pipe между таблицами.
log syslog name "bird.netns" { trace, info, remote, warning, error, auth, fatal, bug };
#log "/var/log/bird.log" { info, remote, warning, error, auth, fatal, bug };
router id 192.168.27.101;
ipv4 table master4
ipv4 table GRT
ipv4 table LOCAL
ipv4 table INET
ipv4 table STATIC
ipv4 table IPTV
ipv4 table LNS
protocol device {
}
protocol direct {
ipv4 {table GRT;}; # Connect to default IPv4 table
ipv6; # ... and to default IPv6 table
}
function is_public() {
if net !~ [ 10.0.0.0/8+, 172.16.0.0/12+, 192.168.0.0/16+, 100.64.0.0/10+ ] then
return true;
return false;
}
function is_private() {
if net ~ [ 10.0.0.0/8+, 172.16.0.0/12+, 192.168.0.0/16+, 100.64.0.0/10+ ] then
return true;
return false;
}
filter default_gw {
if net ~ [0.0.0.0/0] || net ~ [9.0.0.0/8+] then
accept;
reject;
}
filter local_pub_and_pr_subnet {
if (source = RTS_INHERIT || source = RTS_STATIC) && (is_public() || (is_private() && (net.len != 32))) && (net !~ [0.0.0.0/0]) then
accept;
reject;
}
filter local_pr_subnet {
if (source = RTS_INHERIT) && is_private() && (net.len != 32) && (net !~ [ 2.92.40.0/21+ ] ) then
accept;
reject;
}
filter mcpe_proto_import {
if net ~ [10.255.102.224/28] then
accept;
reject;
}
filter mcpe_proto_export {
if proto = "INETstatic" then
accept;
reject;
}
protocol kernel {
ipv4 {
table master4;
import all;
export all;
};
learn;
}
protocol kernel k_grt {
ipv4 {
table GRT;
import all;
export all;
};
learn;
kernel table 200;
}
protocol kernel k_local {
ipv4 {
table LOCAL;
import all;
export all;
};
learn;
kernel table 203;
}
protocol kernel k_inet {
ipv4 {
table INET;
import all;
export all;
};
learn;
kernel table 202;
}
protocol kernel k_static {
ipv4 {
table STATIC;
import all;
export all;
};
learn;
kernel table 204;
}
protocol kernel k_iptv {
ipv4 {
table IPTV;
import all;
export all;
};
learn;
kernel table 201;
}
protocol static masterstatic {
ipv4 {table master4;};
# route via
route 0.0.0.0/0 via 172.16.25.168 ;
route 192.168.10.5/32 via 169.254.228.1;
}
protocol static GRTstatic {
ipv4 {table GRT;}; # Again, IPv4 channel with default options
route 0.0.0.0/0 via 172.16.25.168 ;
}
protocol static LOCALstatic {
ipv4 {table LOCAL;}; # Again, IPv4 channel with default options
route 172.16.12.0/24 via "rib-w";
route 172.16.13.0/24 via "rib-w";
}
protocol static IPTVstatic {
ipv4 {table IPTV;}; # Again, IPv4 channel with default options
route 172.16.11.0/24 via "rib-w";
}
protocol static INETstatic {
ipv4 {table INET;}; # Again, IPv4 channel with default options
route 172.16.10.0/24 via "rib-w";
}
protocol bgp uplink1 {
debug { states };
description "to uplink1";
local 192.168.27.101 as 65000;
neighbor 172.16.25.168 as 65000 internal;
multihop;
ipv4 {
next hop self;
table GRT;
import all;
export filter local_pub_and_pr_subnet;
};
}
protocol pipe grt_iptv {
table GRT;
peer table IPTV;
import filter local_pub_and_pr_subnet;
export filter default_gw;
}
protocol pipe grt_inet {
table GRT;
peer table INET;
import filter local_pub_and_pr_subnet;
export filter default_gw;
}
protocol pipe grt_static {
table GRT;
peer table STATIC;
import filter local_pub_and_pr_subnet;
export filter default_gw;
}
protocol pipe grt_local {
table GRT;
peer table LOCAL;
import filter local_pub_and_pr_subnet;
export filter default_gw;
}
===== Пример настройки СКАТ без VRF =====
Роутер можно настроить как без VRF, так и с VRF. Если секции ''router_vrf'' не заданы, СКАТ работает с одной VRF по умолчанию: её netns и таблицу маршрутизации задают параметры ''router_netns'' и ''router_kernel_table''.
Файл: ''/etc/dpi/fastdpi.conf''. Минимальная конфигурация роутера для примера с veth-интерфейсами выше — в ''fastdpi.conf'' добавить:
in_dev=41-00.0
out_dev=41-00.1
router=1
router_netns=router
router_kernel_table=1
bras_arp_mac=00:E0:ED:43:84:42
bras_arp_ip=188.227.73.40
router_device {
device=41-00.1
tap=bng-w
peer=rib-w
subnet=10.0.0.0/24
}
Роут-демон должен строить таблицу маршрутизации ядра с тем же номером: в BIRD — ''kernel table 1'' в протоколе ''kernel''.
===== Пример настройки VRF в СКАТ =====
Файл: /etc/dpi/fastdpi.conf. Пример полной конфигурации с включённым роутером и двумя VRF (добавляется целиком или используется как основа для своей конфигурации):
in_dev=0b-00.0
out_dev=13-00.0
scale_factor=1
ctrl_port=29000
ctrl_dev=lo
federal_black_list=0
black_list_sm=1
black_list_redirect=http://vasexperts.ru/test/blocked.php
num_threads=1
router=1
router_vrf {
id=ROUTER
netns=router
kernel_table=100
neighbor_cache=shared
}
router_vrf {
id=ROUTER2
netns=router
kernel_table=101
neighbor_cache=shared
}
router_device {
device=13-00.0
vrf=ROUTER
tap=dpi_ospf
peer=rib_ospf
subnet=224.0.0.5/30
subnet=192.168.123.69/32
}
router_device {
device=13-00.0
vrf=ROUTER2
tap=dpi_bgp
peer=rib_bgp
subnet=192.168.123.70/32
}
router_subs_announce=6
enable_auth=1
auth_servers=127.0.0.1%lo:29002
bras_enable=1
bras_arp_ip=10.10.102.189
bras_arp_mac=00:0c:29:f5:85:47
bras_dhcp_mode=1
bras_dhcp_server=10.10.99.3%ens256;reply_port=67
bras_pppoe_enable=1
bras_pppoe_session=100
bras_ppp_auth_list=2,3,1
enable_acct=1
netflow=4
netflow_timeout=300
bras_pppoe_service_name=demoDPI
===== Простой пример: BGP и статические маршруты =====
Простой пример BGP:
filter public_subnets {
if (net ~ [172.16.0.0/12+] || net ~ [192.168.0.0/16+] || net ~ [10.0.0.0/8+] || net ~ [127.0.0.0/8+] || net ~ [169.254.0.0/16+]) then reject;
accept;
}
protocol bgp bgp_ipv4 {
description "To border";
local 192.168.27.8 as 65000;
neighbor 192.168.27.1 as 65000;
direct;
ipv4 {
import all;
export filter public_subnets;
}
}
Простой статический протокол, когда нужно объявить широкую абонентскую подсеть целиком:
protocol static {
ipv4;
route 100.69.0.0/16 blackhole;
}
===== Пример настройки BIRD (OSPF + VRF) =====
В примере приведен частный случай, за дополнительной информацией обратитесь к документации конкретного роут-демона. В контексте VRF Lite архитектуре Linux, на которой работает СКАТ, больше подходит BIRD.
# Указать дополнительные функции для проверки:
# Любой публичный адрес
function is_public() {
if net !~ [ 10.0.0.0/8+, 172.16.0.0/12+, 192.168.0.0/16+, 100.64.0.0/10+ ] then
return true;
return false;
}
# Любой приватный адрес
function is_private() {
if net ~ [ 10.0.0.0/8+, 172.16.0.0/12+, 192.168.0.0/16+, 100.64.0.0/10+ ] then
return true;
return false;
}
# Шлюз по умолчанию
filter default_gw {
if net ~ [0.0.0.0/0] then
accept;
reject;
}
# Описать фильтры:
# Маршруты, которые не получены из других протоколов маршрутизации (и префикс не /32)
filter exclude_external_routes {
if (source = RTS_INHERIT) && (net.len != 32) then
accept;
reject;
}
# Исключить маршруты из других протоколов маршрутизации, публичные подсети, приватные - не /32
filter exclude_ext_1_ip {
if (source = RTS_INHERIT) && (is_public() || (is_private() && (net.len != 32))) then
accept;
reject;
}
log "/var/log/bird.log" all;
router id 192.168.123.65;
debug protocols all;
# Описать таблицы
ipv4 table grt;
ipv4 table bird00;
ipv4 table bird01;
protocol device {
}
protocol direct {
disabled; # Отключено по умолчанию
ipv4; # Подключение к таблице IPv4 по умолчанию
ipv6; # ... и к таблице IPv6 по умолчанию
}
# Описать "протоколы" kernel
protocol kernel kernel_grt {
ipv4 { # Подключить протокол к таблице IPv4 по каналу
table grt;
import all; # Импорт в таблицу, по умолчанию - импортировать все
export all; # Экспорт в протокол. Значение по умолчанию - экспорт отсутствует
};
scan time 5;
learn; # Изучить пришедшие маршруты из kernel-таблицы
kernel table 99; # Kernel-таблица для синхронизации с (по умолчанию: основная)
}
protocol kernel kernel_bird00 {
ipv4 { # Подключить протокол к таблице IPv4 по каналу
table bird00;
import all; # Импорт в таблицу, по умолчанию - импортировать все
export all; # Экспорт в протокол. Значение по умолчанию - экспорт отсутствует
};
scan time 5;
learn; # Изучить пришедшие маршруты из kernel-таблицы
kernel table 100; # Kernel-таблица для синхронизации с (по умолчанию: основная)
}
protocol kernel kernel_bird01 {
ipv4 { # Подключить протокол к таблице IPv4 по каналу
table bird01;
import all; # Импорт в таблицу, по умолчанию - импортировать все
export all; # Экспорт в протокол. Значение по умолчанию - экспорт отсутствует
};
scan time 20;
learn; # Изучить пришедшие маршруты из kernel-таблицы
kernel table 101; # Kernel-таблица для синхронизации с (по умолчанию: основная)
}
# Другой экземпляр для IPv6, пропускающий параметры по умолчанию
protocol kernel {
ipv6 { export all; };
}
protocol static {
ipv4; # Снова канал IPv4 с параметрами по умолчанию
}
# Протоколы OSPF (каждый инстанс со своей таблицей)
protocol ospf v2 ospf_grt {
tick 1;
rfc1583compat no;
stub router no;
ecmp yes limit 16;
ipv4 {
table grt;
import all;
export all;
};
area 0.0.0.0 {
networks {
192.168.123.64/30;
};
interface "rib.102" {
cost 1;
rx buffer large;
type broadcast;
authentication none;
};
};
};
protocol ospf v2 ospf_bird01 {
tick 1;
rfc1583compat no;
ecmp yes limit 16;
ipv4 {
table bird01;
import all;
export all;
#export filter exclude_ext_1_ip;
};
area 0.0.0.0 {
networks {
192.168.123.68/30;
};
interface "rib.202" {
cost 1;
rx buffer large;
type broadcast;
authentication none;
};
};
}
# Описать "протоколы" маршрутизации, которые предназначены для "переливания" маршрутов между таблицами (с использованием фильтров)
protocol pipe grt_bird00 {
table grt;
peer table bird00;
import all;
export filter default_gw;
}
protocol pipe grt_bird01 {
table grt;
peer table bird01;
import all; # filter exclude_ext_1_ip;
export all; #filter default_gw;
}