Gå til innhold
Trenger du hjelp med internett og nettverk? Still spørsmål her ×

Domeneshop DDNS API, oppsett av server for oppdatering av IP


Anbefalte innlegg

Prøver å sette opp DDNS via api’et til Domeneshop.no. Klarer ikke finne ut av dette i det hele tatt.

Grunnen til å gjøre dette, er for å komme bort fra no-ip.com og disse gratis tjenestene.

 

Koding og slikt som dette, har jeg ikke gjort stort av. Prøvd å google en del, men klarer ikke skjønne dette i det hele tatt. Ikke klart og finne eksempler for hvordan løse dette, da jeg ikke skjønner eksemplene i deres API beskrivelse en gang. ☹️

 

Er det noen her som brukt dette via Domeneshop.no og er villig til å hjelpe meg?

 

Er ingen superbruker, men har satt opp Reverse Proxy, for sikkerheten, så dette skal være i boks.  Jeg har også ordnet meg "token" og "secret" for å kunne utføre dette.

Jeg vil som sagt bort fra alle disse gratis tjenestene, så jeg har ikke lyst til å videresende mitt domene til et annet. Da blir liksom litt av poenget borte. 

 

Server kjøres på en Win11 maskin.

 

API forklaring:

https://api.domeneshop.no/docs/#tag/ddns

 

Domeshop på GitHub:

https://github.com/domeneshop/


 

Petter

Lenke til kommentar
Videoannonse
Annonse

Okey, du kan bruke et powershell-script på Windows 11 serveren for å oppdatere ddns. Du må sette opp Task Scheduler til å kjøre det med jevne mellomrom.

Powershell-script forslag:

$Request_uri = "https://{token}:{secret}@api.domeneshop.no/v0/dyndns/update?hostname=example.com&myip="+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -uri $Request_uri

 

Lenke til kommentar
mobile999 skrev (1 time siden):

Dette kan brukes på routere med ddns funksjonalitet. Jeg ser ikke noe ddns relevant på GitHub linken.

Hvilke routere har du som kan ha ddns funksjonalitet?

D-Link Covr 2200, har ikke klart og finne denne muligheten på dette mesh systemet....

mobile999 skrev (36 minutter siden):

Okey, du kan bruke et powershell-script på Windows 11 serveren for å oppdatere ddns. Du må sette opp Task Scheduler til å kjøre det med jevne mellomrom.

Powershell-script forslag:

$Request_uri = "https://{token}:{secret}@api.domeneshop.no/v0/dyndns/update?hostname=example.com&myip="+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -uri $Request_uri

 

Når jeg legger inn mitt token/secret (prøvd både med og uten {} ) og byttet til mitt host name får jeg bare error:

PS C:\> .\DDNS.ps1
Invoke-WebRequest : {"code": "request:headerMissing", "help": "See documentation at https://api.domeneshop.no/docs/"}
At C:\DDNS.ps1:2 char:1
+ Invoke-WebRequest -uri $Request_uri
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Kan det være dette med

"$Request uri" og "+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -uri" 

Eller er dette der for å få det til å fungere i det hele tatt?

Unnskyld for rare spm, men prøver å lære litt i samme slengen 🙂

Lenke til kommentar
-=Petter=- skrev (59 minutter siden):

Kan det være dette med

"$Request uri" og "+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -uri"

iwr takler ikke url'en.

I mitt hode skal følgende fungere, men jeg får ikke testet. Du må bytte ut token, secret og example.com med "ditt".

$user = 'token'
$pass = 'secret'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
	Authorization = $basicAuthValue
}
$Request_uri = "https://api.domeneshop.no/v0/dyndns/update?hostname=example.com&myip="+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -Uri $Request_uri -Headers $Headers

 

Lenke til kommentar
3 hours ago, mobile999 said:

Okey, du kan bruke et powershell-script på Windows 11 serveren for å oppdatere ddns. Du må sette opp Task Scheduler til å kjøre det med jevne mellomrom.

Powershell-script forslag:

$Request_uri = "https://{token}:{secret}@api.domeneshop.no/v0/dyndns/update?hostname=example.com&myip="+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -uri $Request_uri

 

I utgangspunktet ville jeg vel lagt opp til et skript som kun bruker API-et når IP-adressen endrer seg. F.eks. med at man gjør et oppslag mot ipconfig.me, ser det opp i mot IP-en man hadde fra forrige kall mot tjenesten, og så evt. gjør operasjon mot Domeneshop sitt API om IP har endret seg.

I tilfelle ifconfig.me er nede, ville jeg vel også ha lagt inn en sekundær kilde til IP-adresse. Dette trenger nødvendigvis ikke være en webserver, men en del DNS-servere har også mulighet til å returnere ip-adressen som spør (eks. prøv nslookup myip.opendns.com resolver1.opendns.com)

 

 

Lenke til kommentar
NULL skrev (6 minutter siden):

I utgangspunktet ville jeg vel lagt opp til et skript som kun bruker API-et når IP-adressen endrer seg. F.eks. med at man gjør et oppslag mot ipconfig.me, ser det opp i mot IP-en man hadde fra forrige kall mot tjenesten, og så evt. gjør operasjon mot Domeneshop sitt API om IP har endret seg.

I tilfelle ifconfig.me er nede, ville jeg vel også ha lagt inn en sekundær kilde til IP-adresse. Dette trenger nødvendigvis ikke være en webserver, men en del DNS-servere har også mulighet til å returnere ip-adressen som spør (eks. prøv nslookup myip.opendns.com resolver1.opendns.com)

 

 

Jeg har gjort akkurat dette, men da må man enten hardkode nåværende ip-adresse og manuelt oppdatere denne ved endring (en mail kan f.eks. varsle om dette), eller at nåværende ip-adresse lagres på disk på et vis og leses/oppdateres av skriptet selv.

Lenke til kommentar
oddeh skrev (21 minutter siden):

Jeg har gjort akkurat dette, men da må man enten hardkode nåværende ip-adresse og manuelt oppdatere denne ved endring (en mail kan f.eks. varsle om dette), eller at nåværende ip-adresse lagres på disk på et vis og leses/oppdateres av skriptet selv.

Lag skriptet så det sjekker hvilke IP domenet peker til når det kjører, sjekk opp i mot f.eks ifconfig.co, hvis det er missmatch så oppdater via APIet? Sett opp en cronjob til å kjøre det med passende intervall.

Lenke til kommentar
mobile999 skrev (På 21.1.2025 den 19.27):

iwr takler ikke url'en.

I mitt hode skal følgende fungere, men jeg får ikke testet. Du må bytte ut token, secret og example.com med "ditt".

$user = 'token'
$pass = 'secret'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
	Authorization = $basicAuthValue
}
$Request_uri = "https://api.domeneshop.no/v0/dyndns/update?hostname=example.com&myip="+(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Invoke-WebRequest -Uri $Request_uri -Headers $Headers

 

Tusen hjertelig takk. Denne ser ut til å fungere. Den oppdaterte IP til Domeneshop, så da er vi på god vei.

Kode jeg fikk tilbake var:

StatusCode        : 204
StatusDescription : No Content
Content           : {}
RawContent        : HTTP/1.1 204 No Content
                    Connection: keep-alive
                    Date: Thu, 23 Jan 2025 07:19:54 GMT
                    Server: nginx


Headers           : {[Connection, keep-alive], [Date, Thu, 23 Jan 2025 07:19:54 GMT], [Server, nginx]}
RawContentLength  : 0

Om dette er riktig eller ikke, kan ikke jeg svare på 🙂

Takk igjen.

Lenke til kommentar
NULL skrev (På 21.1.2025 den 21.20):

I utgangspunktet ville jeg vel lagt opp til et skript som kun bruker API-et når IP-adressen endrer seg. F.eks. med at man gjør et oppslag mot ipconfig.me, ser det opp i mot IP-en man hadde fra forrige kall mot tjenesten, og så evt. gjør operasjon mot Domeneshop sitt API om IP har endret seg.

I tilfelle ifconfig.me er nede, ville jeg vel også ha lagt inn en sekundær kilde til IP-adresse. Dette trenger nødvendigvis ikke være en webserver, men en del DNS-servere har også mulighet til å returnere ip-adressen som spør (eks. prøv nslookup myip.opendns.com resolver1.opendns.com)

 

 

 

oddeh skrev (På 21.1.2025 den 21.28):

Jeg har gjort akkurat dette, men da må man enten hardkode nåværende ip-adresse og manuelt oppdatere denne ved endring (en mail kan f.eks. varsle om dette), eller at nåværende ip-adresse lagres på disk på et vis og leses/oppdateres av skriptet selv.

 

Håvard skrev (På 21.1.2025 den 21.53):

Lag skriptet så det sjekker hvilke IP domenet peker til når det kjører, sjekk opp i mot f.eks ifconfig.co, hvis det er missmatch så oppdater via APIet? Sett opp en cronjob til å kjøre det med passende intervall.

Høres jo genialt ut, for å ikke kjøre for hardt mot serveren til Domene shop. Prøve å Google litt på det og se om jeg kan klare å skjønne det også. 🙃

Lenke til kommentar
5 minutes ago, -=Petter=- said:

Høres jo genialt ut, for å ikke kjøre for hardt mot serveren til Domene shop. Prøve å Google litt på det og se om jeg kan klare å skjønne det også. 🙃

Prøv f.eks. ChatGPT for å lage koden basert på beskrivelse. Såklart, en god prompt her vil være sentralt og kan kreve litt forståelse i utgangspunktet.

Lenke til kommentar
NULL skrev (21 minutter siden):

Prøv f.eks. ChatGPT for å lage koden basert på beskrivelse. Såklart, en god prompt her vil være sentralt og kan kreve litt forståelse i utgangspunktet.

 

NULL skrev (11 minutter siden):

Husk ellers at du kanskje også ønsker IPv6-støtte for dette?

Skal prøve ChatGPT, brukt det litt før. Prøvde også til selve håndteringen av oppdateringen. Men det scriptet virket veldig mye mer komplekst enn det som jeg fikk over her. 

Forståelsen min er ikke veldig god da det gjelder scripting, skal prøve å se hva ChatGPT kan hjelpe til med.

Oppdateringen ser i hvert fall ut til å fungere. Og det er pr nå det viktigste. 

Lenke til kommentar
-=Petter=- skrev (3 timer siden):

Oppdateringen ser i hvert fall ut til å fungere. Og det er pr nå det viktigste.

👍

Scriptet kan utvides med en sjekk om alt er i orden før evt. oppdatering av ddns. Nåværende dns oppføring kan sammenlignes med nåværende ipadresse. Noe slik (utestet):

Sitat

$current_ip = Invoke-WebRequest ifconfig.me/ip).Content.Trim()
$records = Resolve-DnsName -Name example.com -Type A
if ($curren_ip -ne $records[0].IPAddress) {
   <oppdater ddns>
}

Så kan man legge til sjekk om ipconfig.me er nede, alternativer og bla,bla,bla...
 

Vet du at cloudflare har gratis ipv6 gateway slik at du kan slippe ddns?

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...