@Scheuble

Как отключить одного IP-клиента при выходе из сети другого клиента DD-WRT Dlink-DIR615?

Всем привет! У меня не совсем простой вопрос...

Есть у меня VOIP-номер, который по умолчанию перенаправляется voip-провайдером на мобильник. Перенаправление происходит только тогда, когда voip-провайдер не видит зарегистрированных ip-телефонов. Если зарегистрированные ip-телефоны есть, то вначале звенят они, а по истечении Х секунд звонок уже перенаправляется на мобилку.

Имеется роутер Router Dlink-DIR615 rev d
Firmware DD-WRT v24-sp2 (03/25/13) std - build 21061
Kernel Linux 3.2.41-svn21039 #101 Mon Mar 25 10:30:36 CET 2013 mips
к которому я подключил IP-телефон и к которому коннектится моя мобилка по WiFi, когда я дома.

Мне нужно настроить так, чтобы при моем нахождении дома, звонки шли на IP-телефон подключенный к роутеру по LAN, а при моем отсутствии дома перенаправлялись на мобильник без задержек (для этого домашний IP-телефон должен быть оффлайн).

Единственным вариантом я представляю себе такое решение:
Нужно как то запрограммировать DD-WRT, чтобы при нахождении мобильника в WiFi роутера (=я дома), IP-телефон получал полный доступ к интернет, а в случае прерывании связи WiFi с мобилой (=я вне дома), то IP-телефон теряет доступ к интеренет и этим самым отключается от VOIP-провайдера, так звонки без задержек будут перенаправляться на мобилку.

Извиняюсь за возможную сумбурность, но кто нибудь знает, как это осуществить?
Заранее благодарствую за любую идею!
  • Вопрос задан
  • 891 просмотр
Пригласить эксперта
Ответы на вопрос 1
pklyuev
@pklyuev
DevOps Engineer
Скрипт на маршрутизаторе, который включает\отключает интерфейс, в который подключен VoIP-девайс, при наличии\отсутствии ответа от заданного узла, в данном случае, мобильного телефона (следует предварительно создать резервацию на DHCP-сервере).

Пример скрипта на bash: stackoverflow.com/questions/10243845/bash-script-t...

#!/bin/bash

timeout=5         # delay between checks
pingip='8.8.8.8'   # what to ping
iface="eth0"
LOG_FILE="/var/log/syslog"
isdown=0            # indicate whether the interface is up or down
                   # start assuming interface is up

while true; do
    LOG_TIME=`date +%b' '%d' '%T`
    if ping -q -c 2 "$pingip" >> /dev/null ; then      # ping is good - bring iface up
        if [ "$isdown" -ne 0 ] ; then
            ifup $iface && isdown=0
            printf "$LOG_TIME $0: Interface brought up: %s\n" "$iface" | tee -a $LOG_FILE
        fi
    else                                 # ping is bad - bring iface down
        beep -f 4000
        if [ "$isdown" -ne 1 ] ;  then
            ifdown $iface && isdown=1
            printf "$LOG_TIME $0: Interface brought down: %s\n" "$iface" | tee -a $LOG_FILE
        fi
    fi
    sleep "$timeout"
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы