Здравствуйте.
Настроен VPN сервер на UbuntuServer. В папке /etc/ppp/ip-up.d лежит скрипт vpn в котором обрабатывается маршрутизация для нескольких таблиц (ip route2) всех vpn сетей.
Есть основной скрипт маршрутизации, который обрабатывает маршруты в локальные сети и маршруты к провайдерам. Начинается этот скрипт с сброса всех таблиц по очереди ip route flush table ну и потом он же добавляет маршруты в локальные подсети к провайдерам и т.д. И если соединение с VPN клиентами было установлено до сброса таблиц то они все остаются. И соответственно маршрутов в их сети в таблицах нет. Скрипт /etc/ppp/ip-up.d/vpn выполняется только при поднятии VPN интерфейса.
Скажите пожалуйста реально ли как нибудь повторно запустить скрипт со всеми параметрами /etc/ppp/ip-up.d/vpn когда VPN интерфейсы клиентов уже подняты?
ip-up.d - ручной запуск скриптов
Модераторы: SLEDopit, Модераторы разделов
-
TonnyBennet
- Сообщения: 230
- ОС: Ubuntu Server 9.10
-
TonnyBennet
- Сообщения: 230
- ОС: Ubuntu Server 9.10
Re: ip-up.d - ручной запуск скриптов
Написал скрипт, который в принципе решает мою проблему. Но охарактеризовать его можно несколькими фразами:
Забивание гвоздей микроскопом и Батенька, вы знаете толк в извращениях.
P.S. Тема не закрыта... я в поисках более изящного метода
Забивание гвоздей микроскопом и Батенька, вы знаете толк в извращениях.
Код:
#получаем список VPN интерфейсов
ppp_interfaces=`ifconfig | grep -o -E ppp[1-9]`
for iface in $ppp_interfaces
do
#адрес клиента соответствующий текущему интерфейсу
client_addr=`ifconfig | grep -A 1 $iface | grep -E -o 192\.168\.2\.[2-5]\{1,3\}`
#последний октет адреса соответствует предпоследнему октету адреса подсети клинета
client_net=`echo $client_addr | grep -E -o [2-9]\{1,3\}$`
if [ ! -z $client_addr ]
then
ip route add 192.168.$client_net.0/24 dev $iface via $client_addr table inet_enforta
fi
done
P.S. Тема не закрыта... я в поисках более изящного метода
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: ip-up.d - ручной запуск скриптов
мне кажется, без этого можно обойтись·
заодно отпадёт и вопрос, ради которого создана тема·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
TonnyBennet
- Сообщения: 230
- ОС: Ubuntu Server 9.10
Re: ip-up.d - ручной запуск скриптов
Компьютер, на котором работают данные скрипты, поделючен к двум провайдерам. И я могу часть лоальной сети отправить в Интернет через одного провайдера, а часть через другого. В системе есть 2 файла subnets.ppp0.list и subnets.eth2.list в которых содержатся адреса подсетей локальной сети для каждого из провайдеров. При запуске скрипта он считывает информацию из файлов и создаёт правила. Что бы не заморачиваться с изменением маршрутов по-моему проще всё удалить и потом всё заново создать. Если из скрипта убрать ip route flush то может получится задвоение маршрутов с одинаковыми метриками что не есть хорошо!
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: ip-up.d - ручной запуск скриптов
метрики? так вы пользуетесь динамической маршрутизацией? afaik, метрики (metrics) учитываются только при дин.маршрутизации·
ну, если опасаетесь бесхозных маршрутов, так пометьте маршруты, которые заносите·
realm, вроде бы, при статической маршрутизации не должен ни на что влиять (но вы проверьте, конечно)·
по умолчанию realm равен 0:
$ ip r sh realm 0 table <tid>
покажет _все_ маршруты таблицы <tid>·
вот и помечайте те маршруты, что вам нужно удалять flush-ем, каким-нибудь realm-ом (например, 1)·
тогда их удалить можно будет, не затрагивая остальные маршруты:
$ sudo ip r flush realm 1
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: ip-up.d - ручной запуск скриптов
:-O
правда?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: ip-up.d - ручной запуск скриптов
afaik = насколько я знаю
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
TonnyBennet
- Сообщения: 230
- ОС: Ubuntu Server 9.10
Re: ip-up.d - ручной запуск скриптов
sash-kan писал(а): ↑27.03.2012 20:06метрики? так вы пользуетесь динамической маршрутизацией? afaik, метрики (metrics) учитываются только при дин.маршрутизации·
ну, если опасаетесь бесхозных маршрутов, так пометьте маршруты, которые заносите·
realm, вроде бы, при статической маршрутизации не должен ни на что влиять (но вы проверьте, конечно)·
по умолчанию realm равен 0:
$ ip r sh realm 0 table <tid>
покажет _все_ маршруты таблицы <tid>·
вот и помечайте те маршруты, что вам нужно удалять flush-ем, каким-нибудь realm-ом (например, 1)·
тогда их удалить можно будет, не затрагивая остальные маршруты:
$ sudo ip r flush realm 1
В принципе использование realm может решить мою проблему. Попробую и отпишусь. Спасибо за совет