Гостевые ресурсы - (пиринг) сетей 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
Любопытным гражданам оставлю задачу переписать скрипт таким образом, чтобы замена маршрутов происходила ТОЛЬКО при необходимости.