Просмотр Исходного

h2. Маршрутизация по протоколу и маршруту


h3. Перенаправление трафика

Для перенаправления трафика по определенному порту на второй интерфейс нужно использовать файл дополнительных настроек [ics_tune.sh |asrdocnew:Нестандартные настройки при помощи ics_tune.sh]и возможность маршрутизации по NAT адресу.

Например: есть два канала:  123.123.123.123 и 231.231.231.231, основной трафик идет через 123.123.123.123, а  трафик уходящий на порты 2020-3030 нужно пускать через канал с адресом 231.231.231.231.

Решение: 

1. Включить пункт в консольном Меню-Конфигурирование сервера-Конфигурирование сети-Маршрутизировать по NAT адресу 

2. В ics_tune.sh добавляем содержимое:

{code}
#!/bin/bash
if [ "$1" = "firewall.sh" ]; then
iptables -t nat -I POSTROUTING -p tcp --dport 2020:3030 -j SNAT --to-source 231.231.231.231
iptables -t nat -I POSTROUTING -p udp --dport 2020:3030 -j SNAT --to-source 231.231.231.231
fi
{code}

3. Выполняем команду
{code}
/usr/local/ics/bin/ics_tune.sh firewall.sh
{code}

h3.  Балансировка

 
Для перенаправления сетевых пакетов с учетом протокола, маршрута, а так же базовых функций балансировки канала применяется система маршрутизации.
!worddav4416f04338fede51166ab55cf47c792b.png|height=112,width=666!

Введите маршрут в формате:
*\[src cеть/маска\[:порт\]\] <dst cеть/маска\[:порт\]> <шлюз или номер интерфейса> \[опции\]*
Параметры в квадратных скобках являются обязательными, параметры в угловых скобках можно опустить.
В качестве опций можно указать через пробел:
* Протокол: TCP, UDP, GRE или ICMP
* Флаги SNAT и FORCE
* SNAT - подставлять IP адрес интерфейса от которого пользователи будут выходить в Интернет
* FORCE - маршрутизировать независимо от маски интерфейсов (использовать не рекомендуется)
* Вероятность срабатывания, например, 50% (для балансировки каналов).

&nbsp;
*Примеры:*
!worddav5b2f2be6b5cfcc40e275030a361b96e2.png|height=208,width=630!
*10.0.0.0/255.128.0.0 &nbsp; 10.0.0.15* \- любой трафик идущий в подсеть 10.0.0.0/255.128.0.0 направлять на шлюз 10.0.0.15.
*10.200.0.0/24 &nbsp; 0.0.0.0/0 &nbsp; 195.64.206.20* \- любой трафик приходящий из подсети 10.200.0.0/24, идущий на любой адрес, направлять на шлюз 195.64.206.20 &nbsp; &nbsp;.
*10.200.0.34 &nbsp; 0.0.0.0/0 &nbsp; 3* \- любой трафик приходящий от компьютера 10.200.0.34 и идущий на любой адрес направлять на интерфейс №3.
*10.200.0.0/24 &nbsp; 0.0.0.0/0:80 &nbsp; 3 &nbsp; TCP &nbsp; SNAT* \- весь TCP трафик подсети 10.200.0.0/24 идущий на 80 порт для любого адреса, направлять на интерфейс №3.
*10.200.0.0/24 &nbsp; 0.0.0.0/0:80 &nbsp; 10.2.2.2 &nbsp; TCP &nbsp; SNAT* \- весь TCP трафик подсети 10.200.0.0/24 идущий на 80 порт для любого адреса, направлять на шлюз 10.2.2.2.
*10.0.0.0/8 &nbsp; 0.0.0.0/0 &nbsp; 50% &nbsp; 3 &nbsp; TCP &nbsp; SNAT* \- балансировка канала. 50% TCP трафика пользователей подсети 10.0.0.0/8 будет направлено на интерфейс №3.
*192.168.1.0/24 &nbsp; 0.0.0.0/0 &nbsp; 50% &nbsp; 10.0.0.4 &nbsp; SNAT* \- балансировка канала. 50% трафика пользователей подсети 192.168.1.0/24 будет направлено на шлюз 10.0.0.4.
&nbsp;
*Примечание*: *\!Важно*: Если маршрутизировать нужно на Ethernet интерфейс, то в качестве маршрута указывается *адреса шлюза*. Если же маршрутизируется на виртуальный (РРТР, РРРоЕ, CIPE, OpenVPN, IPSec), то в качестве маршрута указывается *номера интерфейса*.
&nbsp;

h2. Сервер динамической маршрутизации (BGP, OSPF, RIP)

!zebra.png|border=1!

* Включить ROUTING-сервер - при включении этой опции активируется сервис динамической маршрутизации, после чего сервер сможет обмениваться маршрутами по протоколам BGP, OSPF, RIP
* Пароль для терминального доступа - терминальный доступ осуществляется при помощи данного пароля на IP-адрес (внешний или локальный) сервера по протоколу telnet на порт соответствующего сервиса 2601, 2602, 2604, 2605 (zebra, ripd, ospfd, bgpd). Если пароль не задан, то терминальный доступ запрещен.
* Пароль для привилегированного доступа - данный пароль позволяет производить привилегированные операции через терминальный доступ, а именно конфигурацию сервисов. Если пароль не задан, то привилегированный доступ запрещен.
* Включить поддержку BGP - укажите, чтобы включить поддержку BGP
* Включить поддержку OSPF - укажите, чтобы включить поддержку OSPF
* Включить поддержку RIP - укажите, чтобы включить поддержку RIP
* сохранить текущую конфигурацию - выберите *после* конфигурации сервисов через терминальный доступ.


h5. Внимание\!

Использовать в пароле для терминального/привелегированного доступа можно только цифры и буквы английского алфавита. Использование (даже единоразовое) спецсимволов в этих паролях может привести к необходимости от имени удаленного помощника вручную править пароль в следующих файлах:

* /mnt/ro_disc/chroot_zebra/etc/zebra/zebra.conf
* /mnt/ro_disc/chroot_zebra/etc/zebra/zebra_bgpd.conf
* /mnt/ro_disc/chroot_zebra/etc/zebra/zebra_ospfd.conf
* /mnt/ro_disc/chroot_zebra/etc/zebra/zebra_ripd.conf

Информация по настройке BGP через терминальный доступ ниже:

h2. Настройка BGP через терминальный доступ

Чтобы была возможна настройка BGP через терминальный доступ должны быть обязательно заданы пароли для терминального и привилегированного доступа.

Подключитесь по протоколу telnet на IP-адрес вашего сервера к порту 2605.

Введите пароль для терминального доступа.
{noformat}telnet 192.168.0.1 2605
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^\]'.

Hello, this is zebra (version 0.95a).
Copyright 1996-2004 Kunihiro Ishiguro.

User Access Verification

Password:
Carbon-bgpd>{noformat}

Введите команду enable. Сервер запросит пароль для привилегированных операций.

{noformat}Carbon-bgpd> enable
Password:
Carbon-bgpd#{noformat}


Для начала конфигурации введите команду configure terminal.

Выполните конфигурацию, например, как показано ниже.

65530 - обозначение AS (Autonomous system)

network 192.168.88.0/24 - подсеть которую обслуживает данная AS.

Когда конфигурация закончена, введите команду end.

Выполните сохранение командой write.
{noformat}Carbon-bgpd# configure terminal
Carbon-bgpd(config)# router bgp 65530
Carbon-bgpd(config)# bgp router-id 192.168.0.1
Carbon-bgpd(config-router)# network 192.168.88.0/24
Carbon-bgpd(config-router)# neighbor 192.168.0.5 remote-as 65532
Carbon-bgpd(config-router)# neighbor 192.168.0.5 soft-reconfiguration inbound
Carbon-bgpd(config-router)# end
Carbon-bgpd# write
Configuration saved to /etc/zebra/bgpd.conf{noformat}После этого выберите в локальном меню сервера пункт "Конфигурирование сервера"->"ROUTING-сервер" и нажмите *сохранить текущую конфигурацию*.

*Полезный совет:* Любую команду можно отменить используя *no* в начале строки.
Например:
{noformat}
no network 192.168.88.0/24
{noformat}

Теперь ROUTING-сервер будет обмениваться маршрутами с bgp-сервером 192.168.0.5.

Проверить состояние можно через терминальный доступ командой *show ip bgp summary*.

Проверить конфигурацию можно командой *show running-config*

Настройка RIPd, OSPFd производится аналогичным образом.

[http://www.opennet.ru/base/net/zebra_doc.txt.html]

*Внимание\! Если использовались белые адреса соседних провайдеров, нужно прописать* *[маршруты в ics_tune.sh|asrdocnew:Специфичные маршруты для нестандартных сетевых конфигураций]* *для таблицы main.&nbsp;*{*}Это нужно поскольку маршруты zebra считаются более приоритетными по отношению к системным маршрутам.*

h2. *BGP Настройка и раздача адресов*

Для раздачи анонсированный по BGP адресов достаточно прописать один из адресов на локальном интерфейсе с вашей маской.

В данном примере это 192.168.88.1/24

Остальные адреса можно раздавать абонентам, маска как на локальном интерфейсе, шлюзом будет адрес локального интерфейса.

h2. BGP. Несколько соседей

При использовании BGP стыков с несколькими вышестоящими операторами, может потребоваться дополнительная настройка, в зависимости от индивидуальных особенностей.

Ее должен проводить ваш специалист по BGP. Ему может помочь статья на портале opennet:http://www.opennet.ru/docs/RUS/bgp_rus/

h2. BGP не поддерживает 32 битные AS

После ввода номера AS идет ошибка unknown command, если вводим 16бит.

Самый быстрый путь решения, это сменить битность через RIPE