Форум Зейского сообщества любителей ОС Linux и Unix
Тематические обсуждения *nix => Сеть => Тема начата: Vena от Вторник, 24 Февраля, 2015, 16:08:51
-
Вот что-то не разберусь пока, как правильно сделать?
Имею debian8, 3G модем и vpn hamachi.
Автостарт ppp0 от 3G модема, а так же восстановление ppp0 после выдёргивания/вставки модема или обрыва/восстановления связи я добился. Старт hamachi тоже
sudo update-rc.d logmein-hamachi defaultsВот только видимо он стартует не в то время, так как в ifconfig ham0 (интерфейс от хамачи) появляется, а не работает, пока его не перезапущу
sudo /etc/init.d/logmein-hamachi restartтогда vpn работает.
Потом выдёргиваю модем, ppp0 отваливает, а ham0 нет. Вставляю модем обратно, через некоторое время ppp0 восстанавливается, а через ham0 данные идти не хотят до перезапуска
sudo /etc/init.d/logmein-hamachi restartМне нужно, чтобы данный vpn "следил" за состоянием модема и переконекчивался после поднятия ppp0, как и в начале работы нужно запускать хамачи после поднятия ppp0.
Пока тупик :(
-
А если создать скрипт рестарта нужных вещей и поместить его в один из каталогов?
/etc/ppp/ip-down.d
/etc/ppp/ip-up.d
-
Это мысль. Надо попробовать.
-
В /etc/ppp/ip-up.d
#!/bin/sh
sleep 30s
/etc/init.d/logmein-hamachi restart
30s опытным путём
В /etc/ppp/ip-down.d
#!/bin/sh
/etc/init.d/logmein-hamachi stop
Проверка показала, что теперь всё как надо, огромное спасибо. Все как говорится рядом, знать бы где посмотреть. Продолжаю настройку :)
-
/etc/ppp/ip-up.d
#!/bin/sh
sleep 30s
/etc/init.d/logmein-hamachi restart
Если не принципиально, то скрипт выполняется всегда при старте любого интерфейса, будь то ppp* или lo или eth* . Если нужно, чтобы скрипт выполнял какие-то действия только для определённого интерфейса, то нужно в скрипт вставить обработку входящего параметра - в данном случае это имени интерфейса. В примере ниже дан вариант запуска строк только если активирующийся интерфейс = ppp0
Пример:
#!/bin/sh
if [[ $PPP_IFACE = "ppp0" ]]; then
sleep 30s
/etc/init.d/logmein-hamachi restart
fi
Суть: при старте любого интерфейса, его параметры помещаются в переменные, среди которых $PPP_IFACE (подробности - в /etc/ppp/ip-up ) . Далее подсистема управления интерфейсами поочерёдно запускает все скрипты, находящиеся в /etc/ppp/ip-up.d , а они в свою очередь берут параметры из этих переменных и обрабатывают их. Если ppp-интерфейсов много, то с помощью параметра unit (http://www.nixzeya.ru.net/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pppoe-%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_debian_squeeze) в конфиге ppp указывается фиксированный номер каждому интерфейсу и в скрипте в /etc/ppp/ip-up.d можно для конкретного отфильтровать действия.
-
Спасибо.
скрипт выполняется всегда при старте любого интерфейса, будь то ppp* или lo или eth*
Я предполагал, что в папке /etc/ppp/ip-up.d не может идти "речь" о eth0, например.
По аналогии, получается, что в /etc/ppp/ip-down.d мой второй скрипт должен отключить ham0 при выдёргивании сетевухи, хотя vpn создан мобилкой (3G).
Проверить пока не могу, но ночью обязательно попробую.
Но у меня есть еще вопрос в тему.
Я выполнил проброс порта утилитой rinetd. После установки в /etc/ppp/ip-up.d появился скрипт
#! /bin/sh
set -e
if [ -x /usr/sbin/rinetd ]; then
/etc/init.d/rinetd reload > /dev/null
fi
Этот rinetd тоже после полного поднятия ham0 надо перестартовать, тогда все работает. Я по аналогии, поставил в этом скрипте sleep 1m в начале, полагая, что 30 сек в предыдущем скрипте перезапустят ham0, он пока устаканится и тд.
Но так как выполнение поочерёдное, а скрипт по алфавиту идёт последним (он на букву начинается, а перед ним на цифирь), то вероятно надо слип уменьшить до 10 сек например? Так как 30 сек в предыдущем были? И судя по информации о том, что всё это касаемо всех интерфейсов, а не только ppp0, то стоит тоже условие и тут задать?
#! /bin/sh
sleep 1m
set -e
if [ -x /usr/sbin/rinetd ]; then
/etc/init.d/rinetd reload > /dev/null
fi
-
Спасибо.
скрипт выполняется всегда при старте любого интерфейса, будь то ppp* или lo или eth*
Я предполагал, что в папке /etc/ppp/ip-up.d не может идти "речь" о eth0, например.
По аналогии, получается, что в /etc/ppp/ip-down.d мой второй скрипт должен отключить ham0 при выдёргивании сетевухи, хотя vpn создан мобилкой (3G).
Проверить пока не могу, но ночью обязательно попробую.
Да, верно, для ppp - другая система инициализации интерфейсов, отличная от eth*-интерфейсов базовой системы и все ppp*-интерфейсы (pppoe, pptp, ppp) управляются из /etc/ppp/
Но у меня есть еще вопрос в тему.
....
Можно скомбинировать всё в один скрипт, а можно - разными скриптами с установкой разных задержек:
#!/bin/sh
#rinetd init script
set -e
if [ -x /usr/sbin/rinetd ]; then
sleep 1m
/etc/init.d/rinetd reload > /dev/null
fi
#!/bin/sh
#hamachi init script
sleep 30s
/etc/init.d/logmein-hamachi restart
или в одном скрипте:
#!/bin/sh
set -e
sleep 30s
/etc/init.d/logmein-hamachi restart
sleep 30s
if [ -x /usr/sbin/rinetd ]; then
/etc/init.d/rinetd reload > /dev/null
fi
На счёт проверки на ppp0 - дело вкуса. Если не планируется более никаких ppp-соединений запускать кроме существующего,
или
связку hamachi + rinetd нужно запускать при активации любого ppp-соединения, то фильтр можно не ставить в принципе.
Мне на своей машине приходилось иногда запускать и pppoe и pptp одновременно и для каждого нужно было активировать свою процедуру маршрутизации. Кроме как назначением фиксированного номера pppN и фильтрации, нет способа сделать автоматизацию.