ip-up.d - ручной запуск скриптов

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

ip-up.d - ручной запуск скриптов

Сообщение TonnyBennet »

Здравствуйте.

Настроен 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 интерфейсы клиентов уже подняты?
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: ip-up.d - ручной запуск скриптов

Сообщение TonnyBennet »

Написал скрипт, который в принципе решает мою проблему. Но охарактеризовать его можно несколькими фразами:

Забивание гвоздей микроскопом и Батенька, вы знаете толк в извращениях.

Код:

#получаем список 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 - ручной запуск скриптов

Сообщение sash-kan »

TonnyBennet писал(а):
24.03.2012 15:02
ip route flush
мне кажется, без этого можно обойтись·
заодно отпадёт и вопрос, ради которого создана тема·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: ip-up.d - ручной запуск скриптов

Сообщение TonnyBennet »

sash-kan писал(а):
26.03.2012 12:29
TonnyBennet писал(а):
24.03.2012 15:02
ip route flush
мне кажется, без этого можно обойтись·
заодно отпадёт и вопрос, ради которого создана тема·


Компьютер, на котором работают данные скрипты, поделючен к двум провайдерам. И я могу часть лоальной сети отправить в Интернет через одного провайдера, а часть через другого. В системе есть 2 файла subnets.ppp0.list и subnets.eth2.list в которых содержатся адреса подсетей локальной сети для каждого из провайдеров. При запуске скрипта он считывает информацию из файлов и создаёт правила. Что бы не заморачиваться с изменением маршрутов по-моему проще всё удалить и потом всё заново создать. Если из скрипта убрать ip route flush то может получится задвоение маршрутов с одинаковыми метриками что не есть хорошо!
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: ip-up.d - ручной запуск скриптов

Сообщение sash-kan »

TonnyBennet писал(а):
27.03.2012 17:12
метриками
метрики? так вы пользуетесь динамической маршрутизацией? 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 - ручной запуск скриптов

Сообщение Ленивая Бестолочь »

sash-kan писал(а):
27.03.2012 20:06
afaik, метрики (metrics) учитываются только при дин.маршрутизации·

:-O
правда?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: ip-up.d - ручной запуск скриптов

Сообщение sash-kan »

Ленивая Бестолоч... писал(а):
28.03.2012 00:39
правда?
afaik = насколько я знаю
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: ip-up.d - ручной запуск скриптов

Сообщение TonnyBennet »

sash-kan писал(а):
27.03.2012 20:06
TonnyBennet писал(а):
27.03.2012 17:12
метриками
метрики? так вы пользуетесь динамической маршрутизацией? afaik, метрики (metrics) учитываются только при дин.маршрутизации·



ну, если опасаетесь бесхозных маршрутов, так пометьте маршруты, которые заносите·
realm, вроде бы, при статической маршрутизации не должен ни на что влиять (но вы проверьте, конечно)·
по умолчанию realm равен 0:
$ ip r sh realm 0 table <tid>
покажет _все_ маршруты таблицы <tid>·
вот и помечайте те маршруты, что вам нужно удалять flush-ем, каким-нибудь realm-ом (например, 1)·
тогда их удалить можно будет, не затрагивая остальные маршруты:
$ sudo ip r flush realm 1


В принципе использование realm может решить мою проблему. Попробую и отпишусь. Спасибо за совет
Спасибо сказали: