demon.pmi.basnet.by - авторская страница разработчика сайтов.

Гостевые ресурсы - (пиринг) сетей byfly

...или что такое "Продвинутая маршрутизация"


Отдельным пунктом рассмотрим настройку доступа к гостевым ресурсам (пиринг) сетей byfly. Обратите внимание на строчки в файлах /etc/ppp/peers/ppp0 и /etc/ppp/peers/ppp0_guest в предыдущей моей статье Настройка pppoe (ADSL от byfly в режиме Bridge)


86.57.245.XXX: # НАШ статический IP
defaultroute # использовать ppp0 как шлюз по умолчанию
replacedefaultroute # заменить им любой существующий шлюз по умолчанию
и
noipdefault # если у вас Динамический IP
nodefaultroute # не использовать его как шлюз по умолчанию
noreplacedefaultroute # не заменять существующий шлюз по умолчанию


Вариант №1 – простой:

Проверить, установлен ли в системе пакет продвинутой маршрутизации Iproute2, выполнив команду:


server:/# ip -V

ip utility, iproute2-ss080725

По умолчанию этот пакет в Lenny уже установлен, в Etch скорее всего – нет. Если пакет не установлен – установите его:


server:/# apt-get install iproute

Оставить в платном соединении как указано выше. Тогда шлюз будет настроен автоматически. Написать скрипт /etc/iproute2/piring


server:/# touch /etc/iproute2/piring
server:/# chown root:root /etc/iproute2/piring
server:/# vim /etc/iproute2/piring

следующего содержания:

#!/bin/bash
# For ByFly

ip route $1 86.57.251.28 dev ppp1 &> /dev/null
ip route $1 86.57.151.3 dev ppp1 &> /dev/null
ip route $1 86.57.253.1 dev ppp1 &> /dev/null
ip route $1 91.149.189.0/25 dev ppp1 &> /dev/null
ip route $1 91.149.189.128/26 dev ppp1 &> /dev/null
ip route $1 93.125.53.0/24 dev ppp1 &> /dev/null
ip route $1 82.209.240.241 dev ppp1 &> /dev/null
ip route $1 193.232.248.79 dev ppp1 &> /dev/null
ip route $1 193.232.248.80 dev ppp1 &> /dev/null
ip route $1 82.209.245.151 dev ppp1 &> /dev/null
ip route $1 86.57.250.0/23 dev ppp1 &> /dev/null
ip route $1 86.57.246.0/24 dev ppp1 &> /dev/null
ip route $1 93.84.112.0/21 dev ppp1 &> /dev/null
ip route $1 82.209.240.241 dev ppp1 &> /dev/null
ip route $1 82.209.243.241 dev ppp1 &> /dev/null

Сделать его исполняемым:


server:/# chmod +x /etc/iproute2/piring

Добавить его в старт при автозагрузке любым доступным способом. Например, через /etc/rc.local, добавив строку:

/etc/iproute2/piring add

Аналогично Вы можете в любой момент выгрузить весь пиринг из таблиц маршрутизации командой:


server:/# /etc/iproute2/piring del

Вот и все! Теперь у Вас настроены гостевые ресурсы, доступные в пиринге на высоких скоростях.


Вариант №2 – функциональный:


Убедились, что пакет iproute в системе присутствует… Теперь вкратце обрисую ситуацию: представьте, что из-за сбоя в сетях коммуникаций или на сервере провайдера у вас произошел разрыв соединения ppp. Debian отреагирует однозначно – удалит все «неживые» маршруты из таблиц маршрутизации и даже если демон PPP восстановив связь – маршруты будут утрачены и интернета у вас больше не будет.

Решаем задачку в лоб: по расписанию запускаем скрипт, который проверяет «живучесть» канала и восстанавливает маршруты.

Но для этого поправьте в обоих файлах etc/ppp/peers/ppp0 и /etc/ppp/peers/ppp0_guest

nodefaultroute # не использовать его как шлюз по умолчанию
noreplacedefaultroute # не заменять существующий шлюз по умолчанию

Создадим ...


server:/# touch /etc/iproute2/balance
server:/# chown root:root /etc/iproute2/balance
server:/# vim /etc/iproute2/balance

и рассмотрим сам скрипт

#!/bin/bash
sleep 5
# Задаем интерфейсы и локальную сеть
IFIN=eth0 # Local Network
IFOUT=ppp0 # byFly Canal
LOCALNET=192.168.1.0/24 # Local network

# Определяем IP и GATEWAY наших интерфейсов
IPIN=`ifconfig ${IFIN}|grep "inet addr"|awk '{print $2}'|cut -d ':' -f 2`
IPOUT=`ifconfig ${IFOUT}|grep "inet addr"|awk '{print $2}'|cut -d ':' -f 2`
GW=`ifconfig ${IFOUT}|grep "inet addr"|awk '{print $3}'|cut -d ':' -f 2`

echo "Метрики сети ppp0 - Canal byfly"
echo $IPOUT $GW
# Принимаем за правило что интерфейс в локалку (eth0) всегда UP, поэтому проверяем наличие только ppp интерфейсов
# Если наш ppp поднят - задаем его шлюз по умолчанию
if [ `ip link show ${IFOUT}|grep "UP"|awk '{print $3}'|cut -d ',' -f 4` ] && [ "UP" ];then
# Если интерфейс поднят ppp0
echo "Canal up"
/etc/iproute2/piring del
/sbin/route del default gw 192.168.1.1 &> /dev/null

# и делаем маршрут по умолчанию через ppp0 интерфейс
/sbin/route add default gw ${GW} &> /dev/null
/etc/iproute2/piring add

echo "Маршруты для локальной сети (опционально)"
/sbin/ip route add ${LOCALNET} dev ${IFIN}
/sbin/ip route add 127.0.0.0/8 dev lo
fi

exit 0

Делаем его исполняемым:


server:/# chmod +x /etc/iproute2/balance

Этот простой скрипт поможет Вам не потерять интернет более чем на время между его запусками по расписанию Cron. Добавим его в Cron на исполнение каждые 30 мин? Добавив в файл /etc/crontab. Такую же операцию можно сделать через webmin.

# m h dom mon dow user command
30 * * * * root /etc/iproute2/balance

А также добавим первоначальный старт скрипта в автозагрузку любым доступным способом. Например, через /etc/rc.local, добавив строку:

/etc/iproute2/balance

Любопытным гражданам оставлю задачу переписать скрипт таким образом, чтобы замена маршрутов происходила ТОЛЬКО при необходимости.


Ваши предложения

Представьтесь, пожалуйста
Электронная почта
Оставьте Ваше сообщение:
#2 No_body
А вот мне было очень полезно. Спасибо.
#1 Сергей
Прошу меня простить?! но я даже не знаю что такое byfly! Вы о чем?