Arquivo da categoria: Mikrotik

Script para download de uma lista dinamica com IPs Maliciosos no Mikrotik

#Cria o address list com o nome: MaliciousIPs

{
:global content;
:local url;
:local addressListName;

:set addressListName “MaliciousIPs”

:set url “https://s3.i02.estaleiro.serpro.gov.br/blocklist/blocklist.txt”

:local result [/tool fetch url=$url as-value output=user];

:if ($result->”status” = “finished”) do={
:set content ($result->”data”);
}
:global contentLen [ :len $content ];
:global lineEnd 0;
:global line “”;
:global lastEnd -1;

/ip firewall address-list remove [find list=$addressListName];

:do {
:set lineEnd [:find $content “\n” $lastEnd ];
:set line [:pick $content $lastEnd $lineEnd];
:set lastEnd ( $lineEnd + 1 );
:if ( [:pick $line 0] = “#” ) do={
} else={

:put $line;

/ip firewall address-list add address=$line list=$addressListName;

#Configura os IPs para serem removidos após 1 dia
/ip firewall address-list set [find list=MaliciousIPs] timeout=24h

}
} while ($lineEnd < $contentLen – 2)
}

Failover simples no Mikrotik

Cenario:
Ether1 – link principal
Ether2 – link secundario
Criar as rotas default:
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 comment=principal

add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 comment=secundario

add dst-address 208.67.222.222 gateway 192.168.1.1 scope=10 comment=Monitor Link Principal check-gateway=ping

add dst-address 1.1.1.1 gateway 192.168.2.1 scope=10 comment=Monitor Link Secundario check-gateway=ping

Colocar no Netwatch:
IP a ser monitorado link principal: 208.67.222.222
UP:
/ip route enable [find comment=”principal”]
/log error “O link principal caiu”

Down:
/ip route disable [find comment=”principal”]
/log error “O link principal caiu”

IP a ser monitorado link secundario: 1.1.1.1
UP:
/ip route enable [find comment=”secundario”]
/log error “O link secundario normalizou”

Down:
/ip route disable [find comment=”secundario”]
/log error “O link secundario caiu”

Atualização automática de DNS Dinâmico no DNS-O-Matic atrás de um NAT no Mikrotik

O script abaixo faz a atualização dos endereços DNS Dinamicos, cadastrados no DNS-O-Matic, caso seu equipamento esteja atrás de um nat, mas caso não esteja, ele também funciona.

Permissões necessárias para execução do Script no Mikrotik:
read, write, policy, test

# DNSoMatic atualização automatica de DNS

#————— Altere as configurações de acordo com sua necessidade ——————

# Dados da conta do DNSoMatic

:local maticuser “usuarioaqui”
:local maticpass “suasenha”

# Insira o endereço ou nome da rede que deverá ser atualizada, essa informação fica depois do (::) na pagina de serviços do DNSoMatic.
# Não é aceito hostname com espaços. Troque os valores abaixo pelo seu hostname.
# Para especificar vários hosts, separe por virgula.
# Use “all.dnsomatic.com” para atualizar todos os itens do dnsomatic para esse IP.

:local matichost “hostname1,hostname2”

# Coloque o nome da interface que possui o ip dinamico.

:local inetinterface “ether1-gateway”

#———————————————————————————–

# Não precisa alterar nada a partir daqui

:global previousIP;

# Pega o IP Valido e salva na memória
:global currentIP [:resolve myip.opendns.com server=208.67.222.222];

#:if ([/interface get $inetinterface value-name=running]) do={
# Pega o endereço IP da Interface, caso não esteja atrás de NAT.
#    :local currentIP [/ip address get [find interface=”$inetinterface” disabled=no] address];

# Strip the net mask off the IP address
:for i from=( [:len $currentIP] – 1) to=0 do={
:if ( [:pick $currentIP $i] = “/”) do={
:set currentIP [:pick $currentIP 0 $i]
}
}

:if ($currentIP != $previousIP) do={
:log info “DNSoMatic: Update needed”
:set previousIP $currentIP

# The update URL. Note the “\3F” is hex for question mark (?). Required since ? is a special character in commands.
:local url “http://updates.dnsomatic.com/nic/update\3Fmyip=$currentIP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG”
:local matichostarray;
:set matichostarray [:toarray $matichost];
:foreach host in=$matichostarray do={
:log info “DNSoMatic: Sending update for $host”
/tool fetch url=($url . “&hostname=$host”) user=$maticuser password=$maticpass mode=http dst-path=(“dnsomaticupdate-” . $host . “.txt”)
:log info “DNSoMatic: Host $host updated on DNSoMatic with IP $currentIP”
}
}  else={
:log info “DNSoMatic: Previous IP $previousIP and current IP equal, no update need”
}
} else={
:log info “DNSoMatic: $inetinterface is not currently running, so therefore will not update.”
}