1

Temat: OpenDNS a DyDNS

Witam, może ktoś mi pomoże jak skonfigurować DyDNS w OPENWRT Luci CC konto w OpenDNS. Posiadam jedynie login w postaci adresu mailowego i hasło. Jakoś nie chce mi ruszyć aktualizacja adresu.

2 (edytowany przez build000 2015-07-06 09:39:15)

Odp: OpenDNS a DyDNS

To raz działa, raz nie (z wielu przyczyn niezależnych od openwrt i klienta ddns w nim). Ja to obchodzę trochę na okrągło sprawdzonym sposobem, czyli skryptem wywoływanym z crona:

#!/bin/sh
wget -q --user=<mejl, którym możesz się zalogować na opendns, jako login> --password=<wiadomo - na opendns...> 'https://updates.opendns.com/nic/update?hostname=<podana nazwa połączenia z opendns - nie ma w darmowej wersji opcji hostname, którą umie obsłużyć openwrt>&myip=' -O -

Działa od strzału i zawsze, również pod linuchem - wymaga pełnej wersji wget z wkompilowaną obsługą ssl.
Możesz sobie echo na powłokę dorobić, wtedy będziesz miał potwierdzenie w logach (logread).

3

Odp: OpenDNS a DyDNS

tak ale co wpisać w polu "hostname"

4 (edytowany przez build000 2015-07-06 09:42:42)

Odp: OpenDNS a DyDNS

No już Ci pisałem - wejdź na opendns i wszystko się rozjaśni - wpisujesz nazwę połączenia, jak ją zadeklarowałeś w konfiguracji - ta nazwa to nie nazwa domenowa - to tu tkwi błąd w rozumowaniu - opendns nie dostarcza w wersji darmowej domen - to jest umowna nazwa, jaką zna opendns, ale nie umie jej obsłużyć openwrt.

5

Odp: OpenDNS a DyDNS

oto co mi wyskakuje:
-ash: can't open mariusz.i@interia.pl: no such file

6

Odp: OpenDNS a DyDNS

(...)
wget -q --user=mariusz.i@interia.pl 
(...)

7 (edytowany przez hanti 2015-07-07 11:29:06)

Odp: OpenDNS a DyDNS

tez mialem z tym problem, musialem pokombinowac ze skryptami
na poczatek musisz zainstalowac pelny wget
opkg update
opkg install wget

/etc/config/ddns
zmienic tylko option domain, option username, option password na swoje dane

config service 'OpenDNS'
    option enabled '1'
    option update_url 'http://[USERNAME]:[PASSWORD]@updates.opendns.com/nic/update?hostname=[DOMAIN]'
    option domain 'nazwasieciwopendns'
    option username 'mail'
    option password 'haslo'
    option use_https '1'
    option cacert 'IGNORE'
    option interface 'wan'
    option use_syslog '2'
    option use_logfile '1'
    option ip_source 'network'
    option ip_network 'wan'

Teraz trzeba zmienic plik /usr/lib/ddns/dynamic_dns_functions.sh

tam w sekcji get_registered_ip zmien wszystko na

get_registered_ip() {
    local __CNT=0
    local __ERR=255
    local __REGEX  __PROG  __RUNPROG  __DATA
    [ $# -lt 1 -o $# -gt 2 ] && write_log 12 "Error calling 'get_registered_ip()' - wrong number of parameters"
    write_log 7 "Detect registered/public IP"
    [ $use_ipv6 -eq 0 ] && __REGEX="$IPV4_REGEX" || __REGEX="$IPV6_REGEX"
    if [ -x /usr/bin/host ]; then
        __PROG="/usr/bin/host"
        [ $use_ipv6 -eq 0 ] && __PROG="$__PROG -t A"  || __PROG="$__PROG -t AAAA"
        if [ $force_ipversion -eq 1 ]; then
            [ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4"  || __PROG="$__PROG -6"
        fi
        [ $force_dnstcp -eq 1 ] && __PROG="$__PROG -T"
        __RUNPROG="$__PROG $domain $dns_server >$DATFILE 2>$ERRFILE"
        __PROG="BIND host"
    elif [ -x /usr/bin/wget ]; then
        [ $force_ipversion -ne 0 -o $force_dnstcp -ne 0 ] && \
            write_log 14 "Busybox wget - no support to 'force IP Version' or 'DNS over TCP'"
        __RUNPROG="/usr/bin/wget -q --no-check-certificate --no-proxy 'https://mail%40mail.com:haslo@updates.opendns.com/nic/update?hostname=nazwasieciwopendns' -O - | grep -oe '\(\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9][0-9]\?\)\(\.\|$\)\)\{4\}' >$DATFILE 2>$ERRFILE"
        __PROG="BusyBox wget"
    else
        write_log 12 "Error in 'get_registered_ip()' - no supported Name Server lookup software accessible"
    fi
    while : ; do
        write_log 7 "#> $__RUNPROG"
        eval $__RUNPROG
        __ERR=$?
        if [ $__ERR -ne 0 ]; then
            write_log 3 "$__PROG error: '$__ERR'"
            write_log 7 "$(cat $ERRFILE)"
        else
            if [ "$__PROG" = "BIND host" ]; then
                __DATA=$(cat $DATFILE | awk -F "address " '/has/ {print $2; exit}' )
            else
                __DATA=$(cat $DATFILE )
            fi
            [ -n "$__DATA" ] && {
                write_log 7 "Registered IP '$__DATA' detected"
                eval "$1=\"$__DATA\""
                return 0
            }
            write_log 4 "NO valid IP found"
            __ERR=127
        fi
        [ $LUCI_HELPER ] && return $__ERR
        [ -n "$2" ] && return $__ERR
        [ $VERBOSE_MODE -gt 1 ] && {
            write_log 4 "Get registered/public IP for '$domain' failed - Verbose Mode: $VERBOSE_MODE - NO retry on error"
            return $__ERR
        }
        __CNT=$(( $__CNT + 1 ))
        [ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
            write_log 14 "Get registered/public IP for '$domain' failed after $retry_count retries"
        write_log 4 "Get registered/public IP for '$domain' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
        sleep $RETRY_SECONDS &
        PID_SLEEP=$!
        wait $PID_SLEEP
        PID_SLEEP=0
    done
    write_log 12 "Error in 'get_registered_ip()' - program coding error"

https://mail%40mail.com:haslo@updates.opendns.com/nic/update?hostname=nazwasieciwopendns zmien na swoje dane (%40 to znak @ więc tego nie usuwaj)

Po tej operacji juz normalnie bedzie dzialac aktualizowanie ip w opendns

PS to byc moze popsuje dzialanie innych normalnych ddnsow jesli ktos uzywa. (ale moze bedzie dzialac nie wiem nie sprawdzalem)
Ja nie jestem programista i tak to wykombinowalem, ale jesli ktos ma jakis sposob na ulepszenie tego skryptu to chodzi o to ze teraz w CC skrypt chce sprawdzac to co sie poda jako domene... a ze w opendns domena to nazwa sieci to wyskakuje error ze nie znaleziono zadnego IP.