1

Temat: Dynamiczny DNS

Witam serdecznie,

Jak dodać do Usługi Dynamiczny DNS nowego operatora usługi. Chciałbym dodać dtdns.com którego na liście nie widzę. Dodanie dtdns.com (nazwa, hasło itd) pod inną nazwą operatora usługi nie działa.

Pozdrawiam

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

2

Odp: Dynamiczny DNS

Plik /etc/ddns_providers.conf, tam są definicje operatorów.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Dynamiczny DNS

Dzięki. Widzę że jest kilka rodzai konfiguracji, zapisu operatorów, próbować po kolei który zadziała z dtdns.com czy może wskażesz któryś jako przykład.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

4

Odp: Dynamiczny DNS

Nie mam pojęcia czy ten twój dtdns.com  ma jakiś url do aktualizacji. Najpierw znajdź jak taki url wygląda dla tego operatora.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Dynamiczny DNS

znalazłem coś takiego,
dtdns.com
DTDNS uses a simple URI based updater, none of the form fields matter except the Server but dd-wrt requires them, this configuration works for me.
DDNS Service: Custom
DYNDNS Server: www.dtdns.com
Username: xx
Password: xx
Host Name: xx
URL: /api/autodns.cfm?id={your hostname}&pw={your hostname's password}&client=dd-wrt
oraz http://www.dtdns.com/dtsite/updatespec

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

6

Odp: Dynamiczny DNS

No tak, masz tam przykład. Więc możesz zmodyfikować jeden z istniejących, changeip.com. Dostosuj url, zobacz też co zwraca jak poprawnie zaktualizujesz dane.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Dynamiczny DNS

Zmodyfikowałem tak
service    dtdns.com
    url_template            https://[[USERNAME]]:[[PASSWORD]]@dtdns.com/api/autodns.cfm?=[[USERNAME]]&p=[[PASSWORD]]&cmd=update&hostname=[[DOMAIN]]&ip=[[IP]]
    required_variables        domain username password
    required_variable_names        Nazwa domeny,Nazwa uĹĽytkownika,HasĹ‚o
    success_regexp            /Successful Update/

ale gdzieś robię błąd, nie chce się zaktualizować, w polu ostatnia aktualizacja wyświetla NaN.NaN NaN:NaN:NaN

PS czy to normalne że edytując plik ddns_providers.conf vi lub WinSCP nie ma polskich znaków?

Pozdr.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

8

Odp: Dynamiczny DNS

wget https://[[USERNAME]]:[[PASSWORD]]@dtdns.com/api/autodns.cfm?=[[USERNAME]]&p=[[PASSWORD]]&cmd=update&hostname=[[DOMAIN]]&ip=[[IP]]

Zamiast zmiennych podstaw swoje dane i zobacz czy się zaktualizuje.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Dynamiczny DNS

Wybacz mi jeśli moje pytania są banalne, ale chcę się upewnić czy za Tobą nadążam. wget https://[[USERNAME]]:[[PASSWORD]]@dtdns.com/api/autodns.cfm?=[[USERNAME]]&p=[[PASSWORD]]&cmd=update&hostname=[[DOMAIN]]&ip=[[IP]] miałem wpisać w konsolę i za [USERNAME oraz PASSWORD podstawić swoje dane. Zrobiłem tak i odp  wget: not an http or ftp url: https:// itd...

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

10

Odp: Dynamiczny DNS

Zainstaluj pełną wersję wgeta

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez krynio 2012-06-22 18:46:04)

Odp: Dynamiczny DNS

Zainstalowałem i oto wynik
--2012-06-22 19:38:48--  https://%5B%5Bkrynio%5D%5D:*password*@dtdns.com/api/autodns.cfm?=[[krynio]]
Resolving dtdns.com... 209.240.78.125
Connecting to dtdns.com|209.240.78.125|:443... connected.
ERROR: cannot verify dtdns.com's certificate, issued by `/C=US/O=Network Solutions L.L.C./CN=Network Solutions DV Server CA':
  Self-signed certificate encountered.
ERROR: no certificate subject alternative name matches
        requested host name `dtdns.com'.
To connect to dtdns.com insecurely, use `--no-check-certificate'.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

12

Odp: Dynamiczny DNS

Ehh, no dokładnie to co napisał dodaj: --no-check-certificate

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13 (edytowany przez krynio 2012-06-22 20:41:55)

Odp: Dynamiczny DNS

tyle też wyczytałem :-), czy to oznacza że nie da się tego przeskoczyć? może zamiast https użyć http ?

sorki źle zrozumiałem Twoją odpowiedź, już dopisuję...

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

14

Odp: Dynamiczny DNS

Dodaj opcję i nie bedzie sprawdzał, czemu miałbyś nie przeskoczyć.

O ile dtdns.com obsługuje też http to możesz. To od nich zależy nie od Ciebie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: Dynamiczny DNS

Jak dokładnie to zapisać? i rozumiem że mam to dodać np. pod success_regexp            /Successful Update/

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

16

Odp: Dynamiczny DNS

Nie, do wgeta wywoływanego z ręki. Dodaj to i zobacz czy działa aktualizacja.

Gagroyle korzysta z ewget po swojemu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Dynamiczny DNS

Efekt taki
--2012-06-22 22:12:47--  https://%5B%5Bkrynio%5D%5D:*password*@dtdns.com/api/autodns.cfm?=[[krynio]]
Resolving dtdns.com... 209.240.78.125
Connecting to dtdns.com|209.240.78.125|:443... connected.
WARNING: cannot verify dtdns.com's certificate, issued by `/C=US/O=Network Solutions L.L.C./CN=Network Solutions DV Server CA':
  Self-signed certificate encountered.
WARNING: no certificate subject alternative name matches
        requested host name `dtdns.com'.
HTTP request sent, awaiting response... 302 Found
Location: https://www.dtdns.com/api/autodns.cfm?= … ynio%5d%5d [following]
--2012-06-22 22:12:49--  https://www.dtdns.com/api/autodns.cfm?= … ynio%5d%5d
Resolving www.dtdns.com... 209.240.78.125
Connecting to www.dtdns.com|209.240.78.125|:443... connected.
WARNING: cannot verify www.dtdns.com's certificate, issued by `/C=US/O=Network Solutions L.L.C./CN=Network Solutions DV Server CA':
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 23 [text/plain]
Saving to: `autodns.cfm?=[[krynio]]'

100%[=======================================================================================================================================>] 23          --.-K/s   in 0s

2012-06-22 22:12:51 (102 KB/s) - `autodns.cfm?=[[krynio]]' saved [23/23]

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

18

Odp: Dynamiczny DNS

Samodzielności trochę smile. Teraz zobacz czy zaktualizować adres i co masz w tym zapisanym pliku. Jak wszystko gra to teraz albo dostosuj sobie gargoyle do tych reguł albo po prostu wywołuj sobie w cronie tego wgeta.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19 (edytowany przez krynio 2012-06-22 22:38:13)

Odp: Dynamiczny DNS

Staram się i bardzo mnie to wciąga, ale czasem to jest tak jakbyś niewidomemu o kolorach opowiadał. Rozumiem iż z tego zapisu wynika że wyłączając sprawdzanie certyfikatu jest dobrze. Wolałbym dostosować ddns_providers.conf ale przyznaje że nie wiem jak. Porównywałem inne wpisy w ddns_providers.conf lecz nie bardzo widzę podobieństwa. Pomimo tego próbowałem różnych ustawień lecz niestety bez powodzenia.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

20

Odp: Dynamiczny DNS

Więc zrób sobie wpis w cronie po prostu i tyle.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21

Odp: Dynamiczny DNS

OK, czy taki wpis w crontabs\root   będzie poprawny?
*/15 * * * * wget --no-check-certificate https://[[USERNAME]]:[[PASSWORD]]@dtdns.com/api/autodns.cfm?=[[USERNAME]]&p=[[kontodyndns4]]&cmd=update&hostname=[[DOMAIN]]&ip=[[IP]]

sprawdzanie co 15 min, nie za często. Nie wiem czy i jak tu ująć Okres wymuszonej aktualizacji: 3 dni.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

22

Odp: Dynamiczny DNS

Tu będzie po prostu aktualizował co 15min. Tego okresu nie musisz ustawiać, nie w tym przypadku.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

23 (edytowany przez migos 2012-11-28 20:27:05)

Odp: Dynamiczny DNS

Mam problem z aktualizacją dyndns-a.
Na routerku mam czyste Backfire bez GUI pobrałem ddns-script
Przy ręcznym aktualizowaniu z palca wget http://nazwa:hasło@members.dyndns.org/nic/update?hostname=nazwa.dyndns.org&myip=[IP]
aktualizacja przebeiga pomyślnie.
Poprzez skrypt niestety nieaktualizuje mi się dyndns
Router podłączony do innego routera ADSL
Proszę o sprawdzenie configu co za błąd popełniam
Przy aktualizacji z palca dynamic_dns_updater dostaje odpowiedź złej konfiguracji
ERRROR: You must specify a service id (the section name in the /etc/config/ddns file) to initialize dynamic DNS

config 'service' 'myddns'
    option 'interface' 'wan'
    option 'force_interval' '72'
    option 'force_unit' 'hours'
    option 'check_interval' '10'
    option 'check_unit' 'minutes'
    option 'enabled' '1'
    option 'ip_source' 'web'
    option 'ip_network' "http://www.whatismyip.com/automation/n09230945.asp"
    option 'update_url' "http://[nazwa]:[hasło]@members.dyndns.org/nic/update?hostname=[nazwa.dyndns.org]&myip=[IP]"
    option 'service_name' 'dyndns.com'
    option 'domain' 'nazwa.dyndns.org'
    option 'password' 'hasło'
    option 'username' 'nazwa'

24

Odp: Dynamiczny DNS

Musisz pokać dynamic_dns_updater myddns

Ten url masz zły. Tam masz mieć [USERNAME]:[PASSWORD] itd, bo w te wartości są podstawiane zmienne. Nie możesz ich dowolnie nazwać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

25

Odp: Dynamiczny DNS

Czyli
http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]
i hostname również ma być DOMAIN a nie moja?

#!/bin/sh
# /usr/lib/dynamic_dns/dynamic_dns_updater.sh
#
# Written by Eric Paul Bishop, Janary 2008
# Distributed under the terms of the GNU General Public License (GPL) version 2.0
#
# This script is (loosely) based on the one posted by exobyte in the forums here:
# http://forum.openwrt.org/viewtopic.php?id=14040
#

. /usr/lib/ddns/dynamic_dns_functions.sh


service_id=$1
if [ -z "$service_id" ]
then
    echo "ERRROR: You must specify a service id (the section name in the /etc/config/ddns file) to initialize dynamic DNS."
    return 1
fi

#default mode is verbose_mode, but easily turned off with second parameter
verbose_mode="1"
if [ -n "$2" ]
then
    verbose_mode="$2"
fi

###############################################################
# Leave this comment here, to clearly document variable names
# that are expected/possible
#
# Now use load_all_config_options to load config
# options, which is a much more flexible solution.
#
#
#config_load "ddns"
#
#config_get enabled $service_id enabled
#config_get service_name $service_id service_name
#config_get update_url $service_id update_url
#
#
#config_get username $service_id username
#config_get password $service_id password
#config_get domain $service_id domain
#
#
#config_get use_https $service_id use_https
#config_get cacert $service_id cacert
#
#config_get ip_source $service_id ip_source
#config_get ip_interface $service_id ip_interface
#config_get ip_network $service_id ip_network
#config_get ip_url $service_id ip_url
#
#config_get force_interval $service_id force_interval
#config_get force_unit $service_id force_unit
#
#config_get check_interval $service_id check_interval
#config_get check_unit $service_id check_unit
#########################################################
load_all_config_options "ddns" "$service_id"


#some defaults
if [ -z "$check_interval" ]
then
    check_interval=600
fi

if [ -z "$check_unit" ]
then
    check_unit="seconds"
fi


if [ -z "$force_interval" ]
then
    force_interval=72
fi

if [ -z "$force_unit" ]
then
    force_unit="hours"
fi

if [ -z "$use_https" ]
then
    use_https=0
fi



#some constants

if [ "x$use_https" = "x1" ]
then
    retrieve_prog="/usr/bin/curl "
    if [ -f "$cacert" ]
    then
        retrieve_prog="${retrieve_prog}--cacert $cacert "
    elif [ -d "$cacert" ]
    then
        retrieve_prog="${retrieve_prog}--capath $cacert "
    fi
else
    retrieve_prog="/usr/bin/wget -O - ";
fi

service_file="/usr/lib/ddns/services"

ip_regex="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

NEWLINE_IFS='
'


#determine what update url we're using if the service_name is supplied
if [ -n "$service_name" ]
then
    #remove any lines not containing data, and then make sure fields are enclosed in double quotes
    quoted_services=$(cat $service_file |  grep "^[\t ]*[^#]" |  awk ' gsub("\x27", "\"") { if ($1~/^[^\"]*$/) $1="\""$1"\"" }; { if ( $NF~/^[^\"]*$/) $NF="\""$NF"\""  }; { print $0 }' )


    #echo "quoted_services = $quoted_services"
    OLD_IFS=$IFS
    IFS=$NEWLINE_IFS
    for service_line in $quoted_services
    do
        #grep out proper parts of data and use echo to remove quotes
        next_name=$(echo $service_line | grep -o "^[\t ]*\"[^\"]*\"" | xargs -r -n1 echo)
        next_url=$(echo $service_line | grep -o "\"[^\"]*\"[\t ]*$" | xargs -r -n1 echo)

        if [ "$next_name" = "$service_name" ]
        then
            update_url=$next_url
        fi
    done
    IFS=$OLD_IFS
fi

if [ "x$use_https" = x1 ]
then
    update_url=$(echo $update_url | sed -e 's/^http:/https:/')
fi


verbose_echo "update_url=$update_url"



#if this service isn't enabled then quit
if [ "$enabled" != "1" ] 
then
    return 0
fi





#compute update interval in seconds
case "$force_unit" in
    "days" )
        force_interval_seconds=$(($force_interval*60*60*24))
        ;;
    "hours" )
        force_interval_seconds=$(($force_interval*60*60))
        ;;
    "minutes" )
        force_interval_seconds=$(($force_interval*60))
        ;;
    "seconds" )
        force_interval_seconds=$force_interval
        ;;
    * )
        #default is hours
        force_interval_seconds=$(($force_interval*60*60))
        ;;
esac



#compute check interval in seconds
case "$check_unit" in
    "days" )
        check_interval_seconds=$(($check_interval*60*60*24))
        ;;
    "hours" )
        check_interval_seconds=$(($check_interval*60*60))
        ;;
    "minutes" )
        check_interval_seconds=$(($check_interval*60))
        ;;
    "seconds" )
        check_interval_seconds=$check_interval
        ;;
    * )
        #default is seconds
        check_interval_seconds=$check_interval
        ;;
esac



verbose_echo "force seconds = $force_interval_seconds"
verbose_echo "check seconds = $check_interval_seconds"

#kill old process if it exists & set new pid file
if [ -d /var/run/dynamic_dns ]
then
    #if process is already running, stop it
    if [ -e "/var/run/dynamic_dns/$service_id.pid" ]
    then
        old_pid=$(cat /var/run/dynamic_dns/$service_id.pid)
        test_match=$(ps | grep "^[\t ]*$old_pid")
        verbose_echo "old process id (if it exists) = \"$test_match\""
        if [ -n  "$test_match" ]
        then
            kill $old_pid
        fi
    fi

else
    #make dir since it doesn't exist
    mkdir /var/run/dynamic_dns
fi
echo $$ > /var/run/dynamic_dns/$service_id.pid




#determine when the last update was
current_time=$(monotonic_time)
last_update=$(( $current_time - (2*$force_interval_seconds) ))
if [ -e "/var/run/dynamic_dns/$service_id.update" ]
then
    last_update=$(cat /var/run/dynamic_dns/$service_id.update)
fi
time_since_update=$(($current_time - $last_update))


human_time_since_update=$(( $time_since_update / ( 60 * 60 ) ))
verbose_echo "time_since_update = $human_time_since_update hours"




registered_ip=$(echo $(nslookup "$domain" 2>/dev/null) |  grep -o "Name:.*" | grep -o "$ip_regex")


#do update and then loop endlessly, checking ip every check_interval and forcing an updating once every force_interval

while [ true ]
do
    current_ip=$(get_current_ip)


    current_time=$(monotonic_time)
    time_since_update=$(($current_time - $last_update))


    verbose_echo "Running IP check..."
    verbose_echo "current system ip = $current_ip"
    verbose_echo "registered domain ip = $registered_ip"


    if [ "$current_ip" != "$registered_ip" ]  || [ $force_interval_seconds -lt $time_since_update ]
    then
        verbose_echo "update necessary, performing update ..."

        #do replacement
        final_url=$update_url
        for option_var in $ALL_OPTION_VARIABLES
        do
            if [ "$option_var" != "update_url" ]
            then
                replace_name=$(echo "\[$option_var\]" | tr 'a-z' 'A-Z')
                replace_value=$(eval echo "\$$option_var")
                replace_value=$(echo $replace_value | sed -f /usr/lib/ddns/url_escape.sed)
                final_url=$(echo $final_url | sed s^"$replace_name"^"$replace_value"^g )
            fi
        done
        final_url=$(echo $final_url | sed s/"\[HTTPAUTH\]"/"$username${password:+:$password}"/g )
        final_url=$(echo $final_url | sed s/"\[IP\]"/"$current_ip"/g )


        verbose_echo "updating with url=\"$final_url\""

        #here we actually connect, and perform the update
        update_output=$( $retrieve_prog "$final_url" )

        verbose_echo "Update Output:"
        verbose_echo "$update_output"
        verbose_echo ""

        #save the time of the update
        current_time=$(monotonic_time)
        last_update=$current_time
        time_since_update='0'
        registered_ip=$current_ip

        human_time=$(date)
        verbose_echo "update complete, time is: $human_time"

        echo "$last_update" > "/var/run/dynamic_dns/$service_id.update"
    else
        human_time=$(date)
        human_time_since_update=$(( $time_since_update / ( 60 * 60 ) ))
        verbose_echo "update unnecessary"
        verbose_echo "time since last update = $human_time_since_update hours"
        verbose_echo "the time is now $human_time"
    fi

    #sleep for 10 minutes, then re-check ip && time since last update
    sleep $check_interval_seconds
done

#should never get here since we're a daemon, but I'll throw it in anyway
return 0