Маршрутизация по протоколу и маршруту
Перенаправление трафика
Для перенаправления трафика по определенному порту на второй интерфейс нужно использовать файл дополнительных настроек 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 добавляем содержимое:
#!/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
3. Выполняем команду
/usr/local/ics/bin/ics_tune.sh firewall.sh
Балансировка
Для перенаправления сетевых пакетов с учетом протокола, маршрута, а так же базовых функций балансировки канала применяется система маршрутизации.
Введите маршрут в формате:
[src cеть/маска[:порт]] <dst cеть/маска[:порт]> <шлюз или номер интерфейса> [опции]
Параметры в квадратных скобках являются обязательными, параметры в угловых скобках можно опустить.
В качестве опций можно указать через пробел:
- Протокол: TCP, UDP, GRE или ICMP
- Флаги SNAT и FORCE
- SNAT - подставлять IP адрес интерфейса от которого пользователи будут выходить в Интернет
- FORCE - маршрутизировать независимо от маски интерфейсов (использовать не рекомендуется)
- Вероятность срабатывания, например, 50% (для балансировки каналов).
Примеры:
10.0.0.0/255.128.0.0 10.0.0.15 - любой трафик идущий в подсеть 10.0.0.0/255.128.0.0 направлять на шлюз 10.0.0.15.
10.200.0.0/24 0.0.0.0/0 195.64.206.20 - любой трафик приходящий из подсети 10.200.0.0/24, идущий на любой адрес, направлять на шлюз 195.64.206.20 .
10.200.0.34 0.0.0.0/0 3 - любой трафик приходящий от компьютера 10.200.0.34 и идущий на любой адрес направлять на интерфейс №3.
10.200.0.0/24 0.0.0.0/0:80 3 TCP SNAT - весь TCP трафик подсети 10.200.0.0/24 идущий на 80 порт для любого адреса, направлять на интерфейс №3.
10.200.0.0/24 0.0.0.0/0:80 10.2.2.2 TCP SNAT - весь TCP трафик подсети 10.200.0.0/24 идущий на 80 порт для любого адреса, направлять на шлюз 10.2.2.2.
10.0.0.0/8 0.0.0.0/0 50% 3 TCP SNAT - балансировка канала. 50% TCP трафика пользователей подсети 10.0.0.0/8 будет направлено на интерфейс №3.
192.168.1.0/24 0.0.0.0/0 50% 10.0.0.4 SNAT - балансировка канала. 50% трафика пользователей подсети 192.168.1.0/24 будет направлено на шлюз 10.0.0.4.
Примечание: !Важно: Если маршрутизировать нужно на Ethernet интерфейс, то в качестве маршрута указывается адреса шлюза. Если же маршрутизируется на виртуальный (РРТР, РРРоЕ, CIPE, OpenVPN, IPSec), то в качестве маршрута указывается номера интерфейса.
Сервер динамической маршрутизации (BGP, OSPF, RIP)
- Включить ROUTING-сервер - при включении этой опции активируется сервис динамической маршрутизации, после чего сервер сможет обмениваться маршрутами по протоколам BGP, OSPF, RIP
- Пароль для терминального доступа - терминальный доступ осуществляется при помощи данного пароля на IP-адрес (внешний или локальный) сервера по протоколу telnet на порт соответствующего сервиса 2601, 2602, 2604, 2605 (zebra, ripd, ospfd, bgpd). Если пароль не задан, то терминальный доступ запрещен.
- Пароль для привилегированного доступа - данный пароль позволяет производить привилегированные операции через терминальный доступ, а именно конфигурацию сервисов. Если пароль не задан, то привилегированный доступ запрещен.
- Включить поддержку BGP - укажите, чтобы включить поддержку BGP
- Включить поддержку OSPF - укажите, чтобы включить поддержку OSPF
- Включить поддержку RIP - укажите, чтобы включить поддержку RIP
- сохранить текущую конфигурацию - выберите после конфигурации сервисов через терминальный доступ.
Внимание!
Использовать в пароле для терминального/привелегированного доступа можно только цифры и буквы английского алфавита. Использование (даже единоразовое) спецсимволов в этих паролях может привести к необходимости от имени удаленного помощника вручную править пароль в следующих файлах:
- /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 через терминальный доступ ниже:
Настройка BGP через терминальный доступ
Чтобы была возможна настройка BGP через терминальный доступ должны быть обязательно заданы пароли для терминального и привилегированного доступа.
Подключитесь по протоколу telnet на IP-адрес вашего сервера к порту 2605.
Введите пароль для терминального доступа.
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>
Введите команду enable. Сервер запросит пароль для привилегированных операций.
Carbon-bgpd> enable Password: Carbon-bgpd#
Для начала конфигурации введите команду configure terminal.
Выполните конфигурацию, например, как показано ниже.
65530 - обозначение AS (Autonomous system)
network 192.168.88.0/24 - подсеть которую обслуживает данная AS.
Когда конфигурация закончена, введите команду end.
Выполните сохранение командой write.
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
После этого выберите в локальном меню сервера пункт "Конфигурирование сервера"->"ROUTING-сервер" и нажмите сохранить текущую конфигурацию.
Полезный совет: Любую команду можно отменить используя no в начале строки.
Например:
no network 192.168.88.0/24
Теперь 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 для таблицы main. Это нужно поскольку маршруты zebra считаются более приоритетными по отношению к системным маршрутам.
BGP Настройка и раздача адресов
Для раздачи анонсированный по BGP адресов достаточно прописать один из адресов на локальном интерфейсе с вашей маской.
В данном примере это 192.168.88.1/24
Остальные адреса можно раздавать абонентам, маска как на локальном интерфейсе, шлюзом будет адрес локального интерфейса.
BGP. Несколько соседей
При использовании BGP стыков с несколькими вышестоящими операторами, может потребоваться дополнительная настройка, в зависимости от индивидуальных особенностей.
Ее должен проводить ваш специалист по BGP. Ему может помочь статья на портале opennet:http://www.opennet.ru/docs/RUS/bgp_rus/
BGP не поддерживает 32 битные AS
После ввода номера AS идет ошибка unknown command, если вводим 16бит.
Самый быстрый путь решения, это сменить битность через RIPE