Saudações invocadores,
Inicialmente quero parabenizar pela iniciativa de todos. Sou muito auto-didata e devo confessar que este site ajudou e muito ao resolver problemas que envolve o Mikrotik. Com o título proposto deste tópico quero ajudar aos interessados que passam ou passarão pelos mesmos problemas que passei.
Topologia de rede: Tenho dois IPS funcionando no mikrotik em Failover com um Script e netwatch. Cada uma desta IPS são modens roteados. IPS 1 na porta ether1, IPS 2 na porta ether3, local na porta ether2
Problema: Tenho um sistema de CFTV que preciso acessar via WEB. Os dois IPS não possuem IP fixo e portanto precisei usar o No-IP como solução de DDNS. Ao buscar no fórum e na internet só encontrei soluções que informam a porta (ether1, ether2 e etc) em um mikrotik em modo brigde atualizando seus respectivos IPs no No-IP. Mas... sempre tem este mas... a atualização informava o IP da porta roteada pelos modens.
Solução: Usei alguns scripts achados no wiki da própria MK e algumas informações sobre programação de scripts também na wiki MK. Eis o script em questão totalmente funcional e traduzido:
Código :# No-IP Dynamic DNS - Atualização Automática #--------------- MODIFIQUE APENAS OS VALORES ONDE É SOLICITADO CONSERVANDO SUA SINTAXE ------------------ # No-IP Informações de conta :local noipuser "DIGITE_O_USUARIO" :local noippass "DIGITE_A_SENHA" # Informe o Hostname da conta No-IP que será atualizada # Hostnames com espaços não são suportados. # Para especificar vários hosts, separe-os com vírgulas. :local noiphost "DIGITE_SEU_HOSTNAME" # MODIFICADO: obtém a interface ativa no momento. :global inetinterface "ether1" :if ([/ip route get [find comment="COMENTARIO_DA_INTERFACE"] disabled]=true) do={ :global inetinterface "ether3"} :global ddnsip [ /ip address get [/ip address find interface="$inetinterface" ] address ] # Busca o IP corrente da internet (em caso de double-nat) /tool fetch mode=http address="checkip.ddns.com.br" src-path="/" dst-path="/dyndns.checkip.html" :delay 1 :local result [/file get dyndns.checkip.html contents] # parse the current IP result :local resultLen [:len $result] :local startLoc [:find $result ": " -1] :set startLoc ($startLoc + 2) :local endLoc [:find $result "</body>" -1] :local currentIP [:pick $result $startLoc $endLoc] # Registra no log as informações :log info "IP WEB obtido na porta $inetinterface: $currentIP" #------------------------------------------------------------------------------------ # Nenhuma modicação será nescessária :global previousIP :if ($currentIP != $previousIP) do={ :log info "No-IP: O IP atual $currentIP não é igual ao IP anterior, atualização nescessária" :set previousIP $currentIP # Atualização de URL :local url "http://dynupdate.no-ip.com/nic/update\3Fmyip=$currentIP" :local noiphostarray :set noiphostarray [:toarray $noiphost] :foreach host in=$noiphostarray do={ :log info "No-IP: Atualizando o $host" /tool fetch url=($url . "&hostname=$host") user=$noipuser password=$noippass mode=http dst-path=("no-ip_ddns_update-" . $host . ".txt") :log info "No-IP: Host $host atualizado no No-IP com o IP $currentIP" } } else={ :log info "No-IP: IP anterior,$previousIP, é igual ao atual IP. Atualização não se faz nescessária" } } else={ :log info "No-IP: $inetinterface não está funcionando corretamente, portanto não será atualizado." }
Lembrando que a verificação se faz por um Scheduler sendo o mesmo um trigger time ao gosto.
Espero ter sido útil em minha primeira publicação! E vai desculpando se fiz algo errado... sou novato