Indice   FAQ  
Iscriviti  Login
Indice RouterOS RouterOS

DDNS script

Tutto su questo sistema operativo linux based - Configurazioni, dubbi, problematiche &....

DDNS script

Messaggioda jerrino77 » lun 17 ago 2020, 19:51

Ciao a tutti, ho un problema che vorrei mi aiutaste a risolvere. Ho preso un DDNS con dynv6 e ho trovato in rete uno script per aggiornare l'IP su Mikrotik. Il problema è che il mio RB750Gr3 non ha direttamente la connessione PPP, ma è in cascata al router TIM (configurazione necessaria per non perdere il telefono fisso) e questo script mi aggiorna l'IP come 192.168.1.2 (linterfaccia WAN) non con il mio IP pubblico. Come risolvo?
Lo script è questo
Codice: Seleziona tutto
# Define User Variables
:global ddnspass "xx"
:global ddnshost "xx"
#:global ddnspool "pool0"
#:global ddnsinterface "bridge"
#:global ddnsinterface "6to4-henet"
#:global ddnsinterface "pppoe-out1"
#:global ddnsinterface "ether1"

# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }


# Define Local Variables
:local int

# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:if ([ :typeof $ddnsinterface ] != "str" ) do={
  :foreach int in=[ /ipv6 address find global ] do={
    :local testip [ /ipv6 address get $int address ]
    :if ($testip in "fe80::/10" || $testip in "fc00::/7") do={
    } else={
      :global ddnsip $testip
    }
  }
} else={
  :if ([ :typeof $ddnspool ] != "str" ) do={
    # Grab the current Global IP address on that interface.
    :foreach int in=[ /ipv6 address find interface=$ddnsinterface global ] do={
      :local testip [ /ipv6 address get $int address ]
      :if ($testip in "fe80::/10" || $testip in "fc00::/7") do={
      } else={
        :global ddnsip $testip
      }
    }
  } else={
    # Grab the current Global IP address on that interface from spec ip pool.
    :global ddnsip [ /ipv6 address get [ /ipv6 address find interface=$ddnsinterface  from-pool=$ddnspool ] address ]
  }
}

# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
   :log info ("DynDNS: No ip address present on please check.")
} else={
  :log info ("DynDNS: check IPv6 UPDATE " . $ddnsip)
  :if ($ddnsip != $ddnslastip) do={
    :log info "DynDNS: Sending IPv6 UPDATE!"
    :local str "api/update\?hostname=$ddnshost&ipv6=$ddnsip&token=$ddnspass"
    /tool fetch address="dynv6.com" host="dynv6.com" src-path="$str" mode=https dst-path=("/dynv6.".$ddnshost)
    :delay 1
    :local str [/file find name="dynv6.$ddnshost"];
    /file remove $str
    :global ddnslastip $ddnsip
  }
}

# legacy IPv4
# Define Global Variables
:global ddnsip4
:global ddnslastip4
:global ddnsinterface4
:if ([ :typeof $ddnslastip4 ] = nil ) do={ :global ddnslastip4 "0" }

# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:local intfinder ""
:foreach int in=[/ip route find dst-address=0.0.0.0/0 active=yes ] do={
  :set $intfinder [:tostr [/ip route get $int gateway-status]]
  :set $intfinder [:pick $intfinder ([:find $intfinder "via"]+5) [:len $intfinder]]
  :set $ddnsinterface4 $intfinder
}

# Grab the current IP address on that interface.
:set ddnsip4 [ /ip address get [/ip address find interface=$ddnsinterface4 ] address ]
:set ddnsip4 [:pick $ddnsip4 0 [:find $ddnsip4 "/"] ]

# Did we get an IP address to compare?
:if ([ :typeof $ddnsip4 ] = nil ) do={
  :log info ("DynDNS: No ip address present on " . $ddnsinterface4 . ", please check.")
} else={
  :log info ("DynDNS: check IPv4 UPDATE " . $ddnsip4)
  :if ($ddnsip4 != $ddnslastip4) do={
    :log info "DynDNS: Sending IPv4 UPDATE!"
    :local str "api/update\?hostname=$ddnshost&ipv4=$ddnsip4&token=$ddnspass"
    /tool fetch address="dynv6.com" host="dynv6.com" src-path="$str" mode=https dst-path=("/dynv6.".$ddnshost)
    :delay 1
    :local str [/file find name="DynDNS.$ddnshost"];
    /file remove $str
    :global ddnslastip4 $ddnsip4
  }
}


Grazie
Avatar utente
jerrino77
Mikrotik-User 7° Liv
Mikrotik-User 7° Liv
 
Messaggi: 139
Iscritto il: gio 26 mag 2016, 23:52
Uso routerOS dalla Versione: v5.x

Re: DDNS script

Messaggioda figheras » gio 20 ago 2020, 8:33

Puoi usare il ddns mikrotik GRATIS, basta attivarlo nel menu cloud, fai prima!
Siamo tutti ignoranti. Ma non tutti ignoriamo le stesse cose! - Einstein -
Avatar utente
figheras
Staff rosIT
Staff rosIT
 
Messaggi: 1218
Iscritto il: sab 19 set 2009, 20:09
Uso routerOS dalla Versione: v2.9.x
Certificazioni Mikrotik: MTCNA, MTCRE, MTCWE
Altre certificazioni: Cisco CCNA, KalliopePBX
Preferred Training Centre: Grifonline

Re: DDNS script

Messaggioda jerrino77 » gio 20 ago 2020, 9:32

si, ok, ma a quello purtroppo non posso cambiare nome, a questo si...
Avatar utente
jerrino77
Mikrotik-User 7° Liv
Mikrotik-User 7° Liv
 
Messaggi: 139
Iscritto il: gio 26 mag 2016, 23:52
Uso routerOS dalla Versione: v5.x

Re: DDNS script

Messaggioda OSmike » sab 29 ago 2020, 10:41

figheras ha scritto:Puoi usare il ddns mikrotik GRATIS, basta attivarlo nel menu cloud, fai prima!


Vero. Funziona egregiamente.
Oppure devi per forza installare gli script o seguire le indicazioni per le impostazioni fornite dagli stessi servizi su device interni su cui è installato linux o pfsense ad esempio.
OSmike
Mikrotik-User 10° Liv
Mikrotik-User 10° Liv
 
Messaggi: 16
Iscritto il: mar 9 lug 2019, 23:26
Uso routerOS dalla Versione: v6.x



Torna a RouterOS

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti