ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Juniper: BGP load balancing on 2 links (same ISP)

На одном из маршрутизаторов Juniper появился второй физический линк на того же апстрима, т.к. первый линк уже сильно нагружен. Что по итогу получилось ?

А получилось что мы имеем два линка в одну и ту же ASку (два физических линка и две BGP сессии) и трафик может распределяться по 2 линкам неравномерно.

В своей предыдущей статье «Настройка протокола BGP на оборудовании Juniper» я уже затрагивал тему лоад балансинга, но там load balance применяется ко всем апстримам, а тут у меня появилась немного другая задача, сделать балансинг только на двух этих линках. (уточню, что речь идет ТОЛЬКО про исходящий трафик из моей AS)

Для примера будем считать, что у апстрима номер автономной системы AS100.

Итак начнем, войдем в режим конфигурации:

root@juniper> configure

Как известно, что практический любой вопрос можно решить как минимум двумя способами, подумав, я решил балансить трафик исходя из as-path, поэтому создадим «AS path regular expression «:

[edit]
root@juniper#
set policy-options as-path as100 «100.*»

что означает, что путь должен начинаться с AS номер 100, а что там будет дальше нам все равно, главное что мы обозначили что он идет именно через нашего апстрима.

Далее создадим полиси (в терминах cisco «маршрутную карту» — route-map):

[edit]
root@juniper#
set policy-options policy-statement load-balance-as100 from as-path as100
[edit]
root@juniper#
set policy-options policy-statement load-balance-as100 then load-balance per-packet

в которой мы и указали созданный выше as-path как параметр для матча (совпадение as-path в маршруте)

Ну и осталось применить это к таблице маршрутизации — forwarding-table:

[edit]
root@juniper#
set routing-options forwarding-table export load-balance-as100

Проверим все ли в порядке:

[edit]
root@juniper#
commit check

Если в ответ вы получили сообщение:

configuration check succeeds

значит ошибок в конфигурации нет и вы можете применять её на маршрутизаторе.

Сделаем это и добавим комментарий к этому конфигу:

[edit]
root@juniper#
commit comment «Load balance AS100»

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

Разница конечно будет, не ждите 100% одинаковости трафика по каналам, но в общем целом она перестала различаться в разы и составляет 10-20 Мбит/с.

За балансинг входящего к вам трафик уже отвечает ваш апстрим, но для него это же исходящий трафик 😉

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 4,50 из 5)
Загрузка...
Отправить на почту Отправить на почту
    Не найдено

Возникла задача предоставить сервис для клиентов использующих внешние динамические адреса. Доступ к сервису ограничен правилами IPTABLES.

Клиенты, которым необходимо получить услугу предлагается создать учетную запись на ресурсе dyndns.org, клиент получит доменное имя в виде client.dyndns.org.

При каждом изменении ip адреса клиента мы всегда узнаем его адрес по доменному имени. Если мы добавим правило в iptables для этого доменного имени, правило будет работать только для текущего  ip адреса клиента и при последующем изменении ip адреса, доступ к сервису будет ограничен.

Это статья посвящена решению этой проблемы, и за комментарии, добавления и поправки к статье большое спасибо)

Оригинал решения был найден здесь: http://dave.thehorners.com/content/view/86/65/ , а мы всего лишь доработаем этот скрипт.

Создаем несколько каталогов:

/root/dynhosts/ — общий каталог

/root/dynhosts/zones/ — здесь будем хранить файлы доменных зон клиентов

/root/dynhosts/logs/ — лог файлы работы скрипта

/root/dynhosts/scripts/ — здесь будет находится сам запускаемый скрипт

Создаем лог-файл:

#touch /root/dynhosts/logs/dynhosts.log

Создаем файл зоны клиента:

#touch /root/dynhosts/zones/client.dyndns.org

Создаем сам скрипт:

# vi /root/dynhosts/scripts/firewall-dynhosts.sh

#!/bin/bash
#
# filename: firewall-dynhosts.sh
#
NOW=$(date)
CHAIN="dynamichosts"  # change this to whatever chain you want.
IPTABLES="/sbin/iptables"

# create the chain in iptables.
`$IPTABLES -N $CHAIN`
# insert the chain into the input chain @ the head of the list.
`$IPTABLES -I INPUT 1 -j $CHAIN`
# flush all the rules in the chain
`$IPTABLES -F $CHAIN`

FILES=`ls --format=single-column /root/dynhosts/zones/`

echo $FILES

for file in $FILES
do
HOSTFILE="/root/dynhosts/zones/$file"
echo $HOSTFILE

# lookup host name from dns tables
IP=`/usr/bin/dig +short $file | /usr/bin/tail -n 1`
if [ "${#IP}" = "0" ]; then
echo "$NOW Couldn't lookup hostname for $file, failed." >> /root/dynhosts/logs/dynhosts.log

continue
fi

OLDIP=""
if [ -a $HOSTFILE ]; then
OLDIP=`cat $HOSTFILE`
echo "CAT returned: $?"
fi

# save off new ip.
echo $IP>$HOSTFILE

echo "Updating $file in iptables."
echo "Inserting new rule ($IP)"
`$IPTABLES -A $CHAIN -s $IP/32 -j ACCEPT`

done
exit0

Запускаем скрипт:

# /root/dynhosts/scripts/firewall-dynhosts.sh

iptables: Chain already exists

client.dyndns.org

CAT returned: 0
Updating client.dyndns.org in iptables.
Inserting new rule (213.64.141.6)

Проверяем,

# cat /root/dynhosts/zones/client.dyndns.org
213.64.141.6

#/sbin/iptables -nL dynamichosts

Chain dynamichosts

target     prot opt source               destination
ACCEPT     all  —  213.64.141.6         0.0.0.0/0

Если такого доменного имени не существует в /root/dynhosts/logs/dynhosts.log была бы запись следующего содержания:

Tue Aug 25 09:47:15 MSD 2009 Couldn’t lookup hostname for client.dyndns.org, failed.

После того как контракт с клиентом истек достаточно удалить файл его зоны из /root/dynhosts/zones/.

Осталось добавить выполнение скрипта в крон и предоставлять сервисы этим абонентам.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: zaikini


Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту
    Не найдено

Продолжение статьи о настройке Foundry BigIron 4000.

Из предыдущей статьи мы знаем как создать виланы. Теперь будем настраивать маршрутизацию.
Общий принцип заключен в следующем порядке действий:

BigIron Router(config)#vlan <номер_вилана> by port //Создание вилана
BigIron Router(config-vlan-<номер_вилана>)#tagged ethernet <слот/порт> //Добавляем тегированный порт.
BigIron Router(config-vlan-<номер_вилана>)#router-interface ve <номер> //Указываем номер виртуального интерфейса для роутинга
BigIron Router(config-vlan-<номер_вилана>)#interface ve <номер> //Переходим к настройке того самого маршрутизирующего интефейса
BigIron Router(config-vif-<номер>)#ip address <ip-адрес/CIDR> //ip-адрес вилана на маршрутизаторе и ширину подсети. Адрес вилана будет gw для устройств, находящихся в этом вилане.
BigIron Router(config-vif-<номер>)#ip helper-address 1 <ip-адрес DHCP сервера> //Указываем адрес DHCP-сервера, цифра 1 обозначает порядковый номер DHCP-сервера. Их может быть несколько.
//Далее создаем ACL
BigIron Router(config-vif-<номер>)#access-list <100-199> perm udp any any eq bootps //создаем ACL с номером от 100 до 199 и разрешаем проброс DHCP-пакетов от любого адреса к любому.
BigIron Router(config-vif-<номер>)#access-list <100-199> perm ip <Сеть_в_исходном_вилане/CIDR> <Сеть_в_вилане_назначения/CIDR> //разрешаем хождение трафика из одной подсети в другую
BigIron Router(config-vif-<номер>)#access-list <100-199> perm ip <Сеть_в_исходном_вилане/CIDR> host <ip-адрес_вилана> //Разрешаем хождение трафика из этокого вилана в любой другой через host <ip-адрес_вилана>
BigIron Router(config-vif-<номер>)#access-list <100-199> deny ip any any //Запрещаем хождение трафика из любой подсети в любую, кроме тех, которые были ранее разрешены.
BigIron Router(config-vif-<номер>)#ip access-group <100-199> in //Прикручиваем ACL к интерфейсу, приэтом весь входящий трафик будет подчиняться этим правилам.

Вот пример настройки 1 и 167 вилана:

BigIron Router(config)#vlan 1
BigIron Router(config-vlan-1)#tagged ethe 4/5 ethe 4/14
BigIron Router(config-vlan-1)#router-interface ve 1
BigIron Router(config-vlan-1)#interface ve 1
BigIron Router(config-vif-1)#interface ve 1
BigIron Router(config-vif-1)#ip address 10.10.0.1 255.255.0.0
BigIron Router(config-vif-1)#ip helper-address 1 10.10.254.254

BigIron Router(config)#vlan 167 by port
BigIron Router(config-vlan-167)#tagged ethe 4/5 ethe 4/14
BigIron Router(config-vlan-167)#router-interface ve 167
BigIron Router(config-vlan-167)#interface ve 167
BigIron Router(config-vif-167)#interface ve 167
BigIron Router(config-vif-167)#ip address 10.2.70.1 255.255.255.0
BigIron Router(config-vif-167)#ip helper-address 1 10.10.254.254
BigIron Router(config-vif-167)#access-list 167 perm udp any any eq bootps
BigIron Router(config-vif-167)#access-list 167 perm ip 10.2.70.0 0.0.0.255 10.10.0.0 0.0.255.255
BigIron Router(config-vif-167)#access-list 167 deny ip any any
BigIron Router(config-vif-167)#access-list 167 perm ip 10.2.70.0 0.0.0.255 host 10.2.70.1
BigIron Router(config-vif-167)#ip access-group 167 in

Важно:
1. Если надо добавить несколько портов, то синтаксис будет выглядеть так
tagged ethernet <слот1/порт1> to <слот2/порт5> //Для добавления ряда портов с порт1 по порт5 находящемся в слоте1
tagged ethernet <слот1/порт1> ethernet <слотN/портN> //Для добавления выбранных портов, т.е добавится порт1 из слота1 и портN из слотаN.

2. В маршрутизирующих коммутаторах Foundry BigIron 4000 виланом по умолчанию считается vlan 1, если требуется сменить этот вилан, то следует использовать команду default-vlan-id <номер вилана по умолчанию>.

3. В маршрутизирующих коммутаторах Foundry BigIron 4000 существует ограничение по количеству виланов. У меня по умолчанию было 8 виланов из 256. Проверить это можно выполнив show default values. Изменить максимальное количество виланов можно следующим набором команд:
BigIron Router(config)#system-max vlan 256
BigIron Router(config)#write memory
BigIron Router(config)#exit
BigIron Router#reload

Следует отметить, что команды можно сокращать до нескольких знаков. К примеру команду show можно использовать как sh. А команду ip helper-address 1 10.10.254.254 можно использовать как ip help 1 10.10.254.254.

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 1, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту
    Не найдено

На "правах" заметки

Столкнулся сегодня с задачей создания vlan с номером из диапазона с 1006  по 4094 включительно (extended-range vlan).
Все делается как обычно:


Switch(config)# vlan 1070
Switch(config-vlan)# name EXT_VLAN
Switch(config-vlan)# end

Но есть нюанс: VTP свитча у вас должен быть в режиме transparent, иначе (например, в режиме server) при выходе из режима конфигурирования влана свитч не создаст влан и будет сообщать об ошибке:

% Failed to create VLANs 1070
Failed due to unknown reason.
%Failed to commit extended VLAN(s) changes.
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 4,00 из 5)
Загрузка...
Отправить на почту Отправить на почту
    Не найдено

Сделал очередной портапгрейд… вообщем как обычно:

portsnap fetch update && portupgrade -a

и получил:

startx

Enlightenment found Evas can’t load JPEG files. Check Evas has JPEG
loader support.

вообщем иксы не стартуют больше (что является следствием обновления порта graphics/jpeg до 7 версии)…

Что делать ?

Вот что помогло мне вернуть X11 к жизни:

  • portupgrade -f edje
  • portupgrade -f *evas*
  • pkg_info | grep enlightenment-
    enlightenment-0.16.999.042_2,2 A very artistic X window manager
  • portupgrade -f enlightenment-0.16.999.042_2,2

после пересборки иксы с Enlightenment поднялись и работают

З.Ы. для тех кто не знает что есть portupgrade:

Port:   portupgrade-2.4.6_3,2
Path:   /usr/ports/ports-mgmt/portupgrade
Info:   FreeBSD ports/packages administration and management tool suite
Maint:  ruby@FreeBSD.org
WWW:    http://wiki.freebsd.org/portupgrade

З.З.Ы. Рекомендуется к периодическому прочтению /usr/ports/UPDATING, где можно найти соответствующую инфу:

20090719:
AFFECTS: users of graphics/jpeg
AUTHOR: dinoex@FreeBSD.org

jpeg has been updated to 7.0.
Please rebuild all ports that depends on it.

If you use portmaster please use:
portmaster -r jpeg-
Or if you would prefer a more gradual approach:
portmaster -w jpeg- (Check the man page for more information)
If you use portupgrade please use:
portupgrade -fr graphics/jpeg

З.З.З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (Еще не голосовали)
Загрузка...
Отправить на почту Отправить на почту
    Не найдено