Поиск по этому блогу

суббота, 13 февраля 2010 г.

Обновление таблицы роутинга для «гостевого» подключения ByFly

Описывая настройку двух PPPoE-соединений на ByFly, я привёл пример скрипта guest_route.sh для изменения таблицы роутинга при «поднятии» второго, «гостевого» соединения.
Недавно, совершенно случайно, узнал, что в него нужно внести незначительные изменения.

Чтобы сэкономить время в будущем, написал скрипт change_routing.sh и поместил его в /opt/etc/ppp на роутере

#!/bin/sh
# change_routing.sh
# Created by Lupo Alberto mr.lupoalberto@gmail.com at 2010.02.12
# Change work dir
cd /opt/etc/ppp
# Backup existing file
mv guest_route.sh guest_route.sh.bak
# Get new bat-file with the table of routing

# But it work only for Gomel. Just change it!
wget http://ftp.byfly.by/byfly/routing/guest_gomel.bat
# Convert it for Linux
sed -e '1i \#!/bin/sh' \
-e '2i sleep 3' \
-e '/\@echo off/d' \
-e 's/rem/\#/g' \
-e 's/p/net/g' \
-e 's/mask/netmask/g' \
-e 's/192\.168\.1\.1/dev \$1/g' \
-e '$a iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE' guest_gomel.bat > raw_guest_route.sh
# ...and remove bad windows control sequencies
tr -d '\r' < raw_guest_route.sh > guest_route.sh
# Make it executable
chmod 755 guest_route.sh
# Cleaning...
rm guest_gomel.bat guest_route.sh.bak raw_guest_route.sh
# Re-run pppd with new routing table
killall pppd && ./run_ppp.sh


Сначала сделал его «по-красивее», но shell на роутере сильно урезан и команда sed -e 's/\r$//g' для исправления windows-окончания строк там не работает.

Так как у меня настроен беспарольный, с использованием ключей, вход на роутер, для внесения необходимых изменений достаточно выполнить

% ssh asus /opt/etc/ppp/change_routing.sh

Комментариев нет: