MikroTik: Unterschied zwischen den Versionen

Aus Nicki Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
== Lokale Domain mit Namensauflösung ==
== Lokale Domain mit Namensauflösung ==
1. DNS Settings:  
1. DNS Settings:  
* Severs: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
* Severs: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
* Allow Remote Requests Haken setzen
* <code>Allow Remote Requests</code> Haken setzen
2. DHCP Server -> Networks -> doppelklick auf das Netz
2. DHCP Server -> Networks -> doppelklick auf das Netz
* DNS Serves: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
* DNS Serves: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
* Domain: gewünschte lokale Domain eintragen z.B. local
* Domain: gewünschte lokale Domain eintragen z.B. <code>local</code>
3. DHCP Server -> DHCP -> doppelklick auf das Interface -> Script
3. DHCP Server -> DHCP -> doppelklick auf das Interface -> Script
* Lease Script: scriptname eintragen z.B. dhcp-lease-script
* Lease Script: scriptname eintragen z.B. <code>dhcp-lease-script</code>
4. System -> Scripts -> +
4. System -> Scripts -> +
<code>
* Script den vorher erstellten Namen geben: z.B. <code>dhcp-lease-script</code>
* In Source: nochfolgenden Codeschnipsel eintragen:
<pre>
:local DHCPtag
:local DHCPtag
:set DHCPtag "#DHCP"
:set DHCPtag "#DHCP"
Zeile 81: Zeile 83:
     /
     /
}
}
</code>
</pre>
* Angepasster Script in dem als erstes der Kommentar als Hostname verwendet wird, wenn leer dann der original Hostname:
<pre>
:local DHCPtag
:set DHCPtag "#DHCP"
 
:if ( [ :len $leaseActIP ] <= 0 ) do={ :error "empty lease address" }
 
:if ( $leaseBound = 1 ) do={
    :local ttl
    :local domain
    :local hostname
    :local dnsname
    :local fqdn
    :local leaseId
    :local comment
    :local devicename
    :local convert ({})
    :local validChars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-"
 
    /ip dhcp-server
    :set ttl [ get [ find name=$leaseServerName ] lease-time ]
    network
    :set domain [ get [ find $leaseActIP in address ] domain ]
 
    .. lease
    :set leaseId [ find address=$leaseActIP ]
 
    # Check for multiple active leases for the same IP address. It's weird and it shouldn't be, but just in case.
    :if ( [ :len $leaseId ] != 1) do={
        :log info "DHCP2DNS: not registering domain name for address $leaseActIP because of multiple active leases for $leaseActIP"
        :error "multiple active leases for $leaseActIP"
    }
 
    :set hostname [ get $leaseId host-name ]
    :set comment [ get $leaseId comment ]
    /
 
    # Namen für Gerät ermittlen
    :set devicename $comment
    :if ( [ :len $devicename ] <= 0 ) do={
        :set devicename $hostname
    }
 
    # Gerätenamen auf ungültige Zeichen prüfen
    :for validCharsIndex from=0 to=([:len $validChars] - 1) do={
        :local validChar [:pick $validChars $validCharsIndex]
        :set ($convert->($validChar)) ($validChar)
    }
    :set ($convert->("_")) ("-")
    :set ($convert->(" ")) ("-")
 
    :for i from=0 to=([:len $devicename] - 1) do={
        :local char [:pick $devicename $i]
        :local converted ($convert->"$char")
        :local convertedType [:typeof $converted]
 
        :if ($convertedType = "str") do={
            :set $char $converted
        } else={
            :set $char ""
        }
        :set dnsname ($dnsname.$char)
    }
 
    # FQDN festlegen
    :if ( [ :len $dnsname ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty lease host-name or comment"
        :error "empty lease host-name or comment"
    }
    :if ( [ :len $domain ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty network domain name"
        :error "empty network domain name"
    }
 
    :set fqdn "$dnsname.$domain"
 
    /ip dns static
    :if ( [ :len [ find name=$fqdn and address=$leaseActIP and disabled=no ] ] = 0 ) do={
        :log info "DHCP2DNS: registering static domain name $fqdn for address $leaseActIP with ttl $ttl"
        add address=$leaseActIP name=$fqdn ttl=$ttl comment=$DHCPtag disabled=no
    } else={
        :log error "DHCP2DNS: not registering domain name $fqdn for address $leaseActIP because of existing active static DNS entry with this name or address"
    }
    /
} else={
    /ip dns static
    :local dnsDhcpId
    :set dnsDhcpId [ find address=$leaseActIP and comment=$DHCPtag ]
 
    :if ( [ :len $dnsDhcpId ] > 0 ) do={
        :log info "DHCP2DNS: removing static domain name(s) for address $leaseActIP"
        remove $dnsDhcpId
    }
    /
}
</pre>
=== Quelle ====
https://indibit.de/mikrotik-dns-namensaufloesung-fqdn/

Aktuelle Version vom 5. Dezember 2024, 07:21 Uhr

MikroTik Hilfen

WiFi

  • Antennenverstärkung auf maximum setzen (Region ändern z.B. Mexico) Terminal:
interface wireless set antenna-gain=0

- Überprüfen:

interface wireless print advanced

Lokale Domain mit Namensauflösung

1. DNS Settings:

  • Severs: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
  • Allow Remote Requests Haken setzen

2. DHCP Server -> Networks -> doppelklick auf das Netz

  • DNS Serves: Router Adresse (10.0.0.1 oder 192.168.178.1) und 9.9.9.9
  • Domain: gewünschte lokale Domain eintragen z.B. local

3. DHCP Server -> DHCP -> doppelklick auf das Interface -> Script

  • Lease Script: scriptname eintragen z.B. dhcp-lease-script

4. System -> Scripts -> +

  • Script den vorher erstellten Namen geben: z.B. dhcp-lease-script
  • In Source: nochfolgenden Codeschnipsel eintragen:
:local DHCPtag
:set DHCPtag "#DHCP"

:if ( [ :len $leaseActIP ] <= 0 ) do={ :error "empty lease address" }

:if ( $leaseBound = 1 ) do=\
{
    :local ttl
    :local domain
    :local hostname
    :local fqdn
    :local leaseId
    :local comment

    /ip dhcp-server
    :set ttl [ get [ find name=$leaseServerName ] lease-time ]
    network 
    :set domain [ get [ find $leaseActIP in address ] domain ]

    .. lease
    :set leaseId [ find address=$leaseActIP ]

    # Check for multiple active leases for the same IP address. It's weird and it shouldn't be, but just in case.

    :if ( [ :len $leaseId ] != 1) do={
        :log info "DHCP2DNS: not registering domain name for address $leaseActIP because of multiple active leases for $leaseActIP"
        :error "multiple active leases for $leaseActIP"
    }  

    :set hostname [ get $leaseId host-name ]
    :set comment [ get $leaseId comment ]
    /

    :if ( [ :len $hostname ] <= 0 ) do={ :set hostname $comment }

    :if ( [ :len $hostname ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty lease host-name or comment"
        :error "empty lease host-name or comment"
    }
    :if ( [ :len $domain ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty network domain name"
        :error "empty network domain name"
    }

    :set fqdn "$hostname.$domain"

    /ip dns static
    :if ( [ :len [ find name=$fqdn and address=$leaseActIP and disabled=no ] ] = 0 ) do={
        :log info "DHCP2DNS: registering static domain name $fqdn for address $leaseActIP with ttl $ttl"
        add address=$leaseActIP name=$fqdn ttl=$ttl comment=$DHCPtag disabled=no
    } else={
        :log error "DHCP2DNS: not registering domain name $fqdn for address $leaseActIP because of existing active static DNS entry with this name or address"
    }
    /
} else={
    /ip dns static
    :local dnsDhcpId
    :set dnsDhcpId [ find address=$leaseActIP and comment=$DHCPtag ]
    :if ( [ :len $dnsDhcpId ] > 0 ) do={
        :log info "DHCP2DNS: removing static domain name(s) for address $leaseActIP"
        remove $dnsDhcpId
    }
    /
}
  • Angepasster Script in dem als erstes der Kommentar als Hostname verwendet wird, wenn leer dann der original Hostname:
:local DHCPtag
:set DHCPtag "#DHCP"

:if ( [ :len $leaseActIP ] <= 0 ) do={ :error "empty lease address" }

:if ( $leaseBound = 1 ) do={
    :local ttl
    :local domain
    :local hostname
    :local dnsname
    :local fqdn
    :local leaseId
    :local comment
    :local devicename
    :local convert ({})
    :local validChars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-"

    /ip dhcp-server
    :set ttl [ get [ find name=$leaseServerName ] lease-time ]
    network 
    :set domain [ get [ find $leaseActIP in address ] domain ]

    .. lease
    :set leaseId [ find address=$leaseActIP ]

    # Check for multiple active leases for the same IP address. It's weird and it shouldn't be, but just in case.
    :if ( [ :len $leaseId ] != 1) do={
        :log info "DHCP2DNS: not registering domain name for address $leaseActIP because of multiple active leases for $leaseActIP"
        :error "multiple active leases for $leaseActIP"
    }

    :set hostname [ get $leaseId host-name ]
    :set comment [ get $leaseId comment ]
    /

    # Namen für Gerät ermittlen
    :set devicename $comment
    :if ( [ :len $devicename ] <= 0 ) do={
        :set devicename $hostname
    }

    # Gerätenamen auf ungültige Zeichen prüfen
    :for validCharsIndex from=0 to=([:len $validChars] - 1) do={
        :local validChar [:pick $validChars $validCharsIndex]
        :set ($convert->($validChar)) ($validChar)
    }
    :set ($convert->("_")) ("-")
    :set ($convert->(" ")) ("-")

    :for i from=0 to=([:len $devicename] - 1) do={
        :local char [:pick $devicename $i]
        :local converted ($convert->"$char")
        :local convertedType [:typeof $converted]

        :if ($convertedType = "str") do={
            :set $char $converted
        } else={
            :set $char ""
        }
        :set dnsname ($dnsname.$char)
    }

    # FQDN festlegen
    :if ( [ :len $dnsname ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty lease host-name or comment"
        :error "empty lease host-name or comment"
    }
    :if ( [ :len $domain ] <= 0 ) do={
        :log error "DHCP2DNS: not registering domain name for address $leaseActIP because of empty network domain name"
        :error "empty network domain name"
    }

    :set fqdn "$dnsname.$domain"

    /ip dns static
    :if ( [ :len [ find name=$fqdn and address=$leaseActIP and disabled=no ] ] = 0 ) do={
        :log info "DHCP2DNS: registering static domain name $fqdn for address $leaseActIP with ttl $ttl"
        add address=$leaseActIP name=$fqdn ttl=$ttl comment=$DHCPtag disabled=no
    } else={
        :log error "DHCP2DNS: not registering domain name $fqdn for address $leaseActIP because of existing active static DNS entry with this name or address"
    }
    /
} else={
    /ip dns static
    :local dnsDhcpId
    :set dnsDhcpId [ find address=$leaseActIP and comment=$DHCPtag ]

    :if ( [ :len $dnsDhcpId ] > 0 ) do={
        :log info "DHCP2DNS: removing static domain name(s) for address $leaseActIP"
        remove $dnsDhcpId
    }
    /
}

Quelle =

https://indibit.de/mikrotik-dns-namensaufloesung-fqdn/