...или что такое "Продвинутая маршрутизация"
Постановка задачи: Отдельным пунктом рассмотрим настройку доступа к гостевым ресурсам (пиринг) сетей byfly. Обратите внимание на строчки в файлах /etc/ppp/peers/ppp0 и /etc/ppp/peers/ppp0_guest в предыдущей моей статье Настройка pppoe под Linux (ADSL от byfly в режиме Bridge)
... 86.57.245.XXX: # НАШ статический IP defaultroute # использовать ppp0 как шлюз по умолчанию replacedefaultroute # заменить им любой существующий шлюз по умолчанию ...
и
... noipdefault # если у вас Динамический IP nodefaultroute # не использовать его как шлюз по умолчанию noreplacedefaultroute # не заменять существующий шлюз по умолчанию ...
Если Вы укажите defaultroute, то интерфейс ppp0 будет использоваться как шлюз по умолчанию на время его подключения. В случае отключения будет восстановлен предыдущий маршрут по умолчанию.
Вариант №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, добавив строку:
server:/# /etc/iproute2/piring add
Аналогично Вы можете в любой момент выгрузить весь пиринг из таблиц маршрутизации командой:
server:/# /etc/iproute2/piring del
Вот и все! Теперь у Вас настроены гостевые ресурсы, доступные в пиринге на высоких скоростях.
Замечание: У нашего горячо любимого провайдера в принципе с 2011 года нету больше "гостя"(гостевого соединения). Технически всё осталось как есть - можно создавать два соединения и подключаться например только по гостевому, однако относится ли IP к гостевому или не относится - решает биллинговая система у провайдера, а не статические маршруты у вас (на компе, на сервере, в роутере). И 2 соединения в принципе больше не нужны, и эти маршруты тоже... Создали одно в роутере, подключились к роутеру, вылезли в Интернет - всё. Дальше уже всё раскладывается на биллинге. НО есть и другие провайдеры, возможно это кому-то еще будет полезно!
Вариант №2 – функциональный:
Убедились, что пакет iproute в системе присутствует… Теперь вкратце обрисую ситуацию: представьте, что из-за сбоя в сетях коммуникаций или на сервере провайдера у вас произошел разрыв соединения ppp. Debian отреагирует однозначно – удалит все «неживые» маршруты из таблиц маршрутизации и даже если демон PPP восстановив связь – маршруты будут утрачены и интернета у вас больше не будет.
Решаем задачку в лоб: по расписанию запускаем скрипт, который проверяет «живучесть» канала и восстанавливает маршруты. Скрипт может быть переделан по Вашему усмотрению...
Создадим ...
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, добавив строку:
server:~# /etc/iproute2/balance
Любопытным гражданам оставлю задачу переписать скрипт таким образом, чтобы замена маршрутов происходила ТОЛЬКО при необходимости.
Комментарии 3
- 1
Денис — Nov 14, 2011 at 09:22 PM
С этого года нету больше гостевого подключения у буфла. Всё решает биллинговая система у провайдера, а не статические маршруты . Эти два разных соединения в принципе больше не нужны как и эти маршруты тоже...
No_body — Apr 23, 2010 at 12:50 PM
А вот мне было очень полезно. Спасибо.
Cергей — Oct 22, 2009 at 11:32 AM
Прошу меня простить?! но я даже не знаю что такое byfly! Вы о чем?