OpenWrt - Dynamic DNS
Konfiguracja DDNS (DynDNS, Dynamic DNS)Ostatnia zmiana: 2013-01-05 18:55
1. Instalacja
2. Konfiguracja
2.1. Okres aktualizacji danych
2.2. Źródła adresu
2.3. Własna metoda aktualizacji
3. Zakończenie
Dynamic DNS jest usługą pozwalającą przypisanie (czy raczej aktualizację) adresu IP do nazwy. Dzięki temu jeżeli jesteśmy podłączeni do sieci która za każdym razem przydziela inny adres IP, możemy mieć stałą nazwę rutera i nie musimy pamiętać tego adresu. W sieci istnieje wiele serwisów które umożliwiają rejestrację adresu, wystarczy skorzystać z jednego z nich i uruchomić swoje konto. Najpopularniejszy jest serwis dyndns.org oferujący możliwość rejestracji w kilkunastu różnych domenach.
W OpenWrt dostępne jest kilka różnych pakietów realizujących tą funkcję; w OpenWrt oficjalnie używany jest pakiet ddns-scripts. W chwili pisania tego poradnika skrypt obsługiwał aktualizację domen w następujących serwisach:
- dyndns.org
- changeip.com
- zoneedit.com
- no-ip.com
- noip.com
- freedns.afraid.org
- dnsmax.com
- thatip.com
- he.net
- dnsdynamic.org
- ovh.com
- dnsomatic.com
- 3322.org
- namecheap.com
- easydns.com
UWAGA2: standardowo polscy operatory komórkowi blokują porty wejściowe, więc nawet przy poprawnym ustawieniu DDNS nie będzie można dostać się do routera/komputera jeżeli połączeniem WAN jest modem 3G. Niektórzy operatorzy oferują odblokowanie portów za dodatkową opłatą.
Instalacja
# opkg update
# opkg install ddns-scripts
Konfiguracja
Plik konfiguracyjny umieszczony w /etc/config/ddns. Pierwsza ustawienie to podanie danych niezbędnych do aktualizacji serwisu
# uci set ddns.myddns.enabled=1
# uci set ddns.myddns.service_name=dyndns.org
# uci set ddns.myddns.domain=host.dyndns.org
# uci set ddns.myddns.password=password
# uci set ddns.myddns.username=username
# uci commit ddns
Okres aktualizacji danych
Sam skrypt ddns-scripts ma dużo większą funkcjonalność. Można określić np. częstotliwość aktualizacji
# uci set ddns.myddns.force_interval=72
# uci set ddns.myddns.force_unit=hours
# uci set ddns.myddns.check_interval=10
# uci set ddns.myddns.check_unit=minutes
# uci commit ddns
UWAGA: Zbyt częsta aktualizacja danych może spowodować zablokowanie konta w serwisie dyndns.org. Domyślne wartości są zwykle właściwe i raczej nie powinno ich się zmieniać.
Źródła adresu
Dostępna jest także metoda pozyskania adresu:- z sekcji konfiguracyjnej
# uci set ddns.myddns.ip_source=network
# uci set ddns.myddns.ip_network=wan
# uci commit ddns
- z interfejsu
# uci set ddns.myddns.ip_source=interface
# uci set ddns.myddns.ip_network=eth0.2
# uci commit ddns
- ze skryptu
# uci set ddns.myddns.ip_source=script
# uci set ddns.myddns.ip_script=/usr/bin/get_my_ip.sh
# uci commit ddns
- z internetu
# uci set ddns.myddns.ip_source=web
# uci set ddns.myddns.ip_network=http://www.whatismyip.com/automation/n09230945.asp
# uci commit ddns
Własna metoda aktualizacji
Skrypt ddns-script posiada predefiowane metody aktualizacji danych dla kilku popularnych serwisów (patrz wyżej). Jeżeli jednak korzystamy z innego serwisu można samodzielnie napisać odpowiednie polecenie, które będzie potrafiło zaktualizować adres. Poniżej przykładowa opcja dla serwisu dyndns:
# uci set ddns.myddns.update_url="http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
# uci commit ddns
Zakończenie
A tak naprawdę, każdy z w/w serwisów umożliwia aktualizację przez wywołanie odpowiedniego skonstruowanego adresu URL. Więc można wywołanie wget z takim URL umieścić po prostu w cronie.