meta data for this page
  •  

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
integracao_mikrotik [2019/01/11 10:33]
raylan
integracao_mikrotik [2022/11/23 15:32]
gabriel
Linha 1: Linha 1:
 ====== Integração com MikroTik ====== ====== Integração com MikroTik ======
 Para integrar o MikroTik ao sistema acesse-o através de SSH ou, Winbox e Execute os seguintes comandos: Para integrar o MikroTik ao sistema acesse-o através de SSH ou, Winbox e Execute os seguintes comandos:
-<​note ​important>+<​note ​importante>
 Substitua as seguintes variáveis nos comandos abaixo de acordo com sua configuração:​ Substitua as seguintes variáveis nos comandos abaixo de acordo com sua configuração:​
-  * **IP_DO_SGP** - IP que o SGP usará para conectar-se ao MikroTikSe estiver utilizando VPN do SGP, verifique a configuração ​de VPN com o suporte ​do SGP+  * **AUC** - Porta do accounting, se o SGP for LOCAL a porta é padrão 1812 se for Nuvem consultar SUPORTE. 
-  * **PORTA_BLOQUEIO** - Porta em que a página de bloqueio será exibida. Consulte a [[tabela_variaveis|tabela de variáveis]]. +  * **ACC** ​Porta do authentication,​ se o SGP for LOCAL a porta é padrão 1813 se for Nuvem consultar SUPORTE. 
-  * **PORTA_BLOQUEIO_AVISO** - Porta em que a página de aviso de bloqueio será exibida. Consulte a [[tabela_variaveis|tabela de variáveis]]. +  * **LINKDOSGP** - URL do SGP (ex: http://​meusgplocal.com.br:​8000 ou https://​meusgpnuvem.sgp.net.br) 
-  * **PASSWORD_USUARIO_SGP** - Password que o SGP Utilizará para acessar o NAS. Recomendamos que seja gerada por mecanismos de geração de password com um tamanho ​minimo ​de 15 caracteres. Armazene essa senha em um local seguro, ela será necessária para configurar o SGP.+  * **TOKEN** - Token mikrotik do SGP. 
 +  * **RADIUS** - IP que o SGP respondeem caso de Nuvem será IP que responde ou o gateway da VPN fornecida pelo suporte. 
 +  * **BLQ** - Porta em que a página de bloqueio será exibida ​se o SGP for LOCAL é padrão 6403. Consulte a [[tabela_variaveis|tabela de variáveis]] ​para ver o conteúdo da pagina
 +  * **AVS** - Porta em que a página de aviso de bloqueio será exibida ​se o SGP for LOCAL é padrão 6403. Consulte a [[tabela_variaveis|tabela de variáveis]] ​para ver o conteúdo da pagina
 +  * **PASSVPNUSER** - Password que o SGP Utilizará para acessar o NAS. Recomendamos que seja gerada ​(se usar VPN usa-se a mesma senha) ​por mecanismos de geração de password com um tamanho ​mínimo ​de 15 caracteres. Armazene essa senha em um local seguro, ela será necessária para configurar o SGP. No Linux, é possível criar a senha com o comando **openssl rand - -hex 15**.
 </​note>​ </​note>​
  
Linha 14: Linha 18:
  
 <​code>​ <​code>​
-/radius incoming set accept=yes 
  
-/ip service set api address=IP_DO_SGP disabled=no port=3540 +:global USERVPN "​LOGIN_VPN"​ 
-/user add name=SGP group=full address=IP_DO_SGP comment="USUARIO QUE O SGP UTILIZA PARA LOGAR NA RB" ​password=PASSWORD_USUARIO_SGP+:global AUC "​x812"​ 
 +:global ACC "​x813"​ 
 +:global AVS "​64xx"​ 
 +:global BLQ "​64xx"​ 
 +:global PASSVPNUSER "​PASSWORD_FORT"​ 
 +:global RADIUS "​172.16.116.1"​ 
 +:global TOKEN "​2a5fadc1-aadd-486a-954b-12041f16cb0b"​ 
 +:global LINKDOSGP "​https:​//​linkdosgp.sgp.net.br"​ 
 +:global IPSGP "177.52.36.x"
  
 +:global NAS "​IP_NAS"​
 +
 +
 +/system backup save name=BACKUP_ANTES_DO_SGP
 +/export file=BACKUP_ANTES_DO_SGP_TXT
 +# AJUSTES NO MIKROTIK
 +/system ntp client set enabled=yes primary-ntp=200.160.0.8
 +/system clock set time-zone-name=America/​Recife
 +/radius incoming set accept=yes
 +/ip service set api disabled=no port=3540 address="​$RADIUS,​$IPSGP"​
 /user aaa set use-radius=yes /user aaa set use-radius=yes
 /ppp aaa set interim-update=5m use-radius=yes /ppp aaa set interim-update=5m use-radius=yes
 +/snmp community disable public
 +/snmp community add addresses="​$RADIUS,​$IPSGP"​ name=SGP-GRAPHICs
 +/snmp set enabled=yes trap-community=SGP-GRAPHICs trap-version=2
 +/ppp secret set service=any [find .id!=999]
 +/user add name=SGP comment="​NAO MUDAR SENHA E NÃO ALTERAR NADA, USUARIO QUE O SERVIDOR SGP ACESSA A RB" \
 +    group=full password=$PASSVPNUSER
 +/system logging set 0 action=memory disabled=no prefix=""​ topics=info,​!account
 +/radius
 +add comment="​RADIUS SGP" secret=sgp@radius service=ppp,​dhcp,​login address=$RADIUS accounting-port=$ACC \
 +    authentication-port=$AUC timeout=00:​00:​03 src-address=$NAS
 +    ​
 +/ppp profile add name=VPN-SGP use-encryption=yes
 +/interface pptp-client add connect-to=$IPSGP user=$USERVPN password=$PASSVPNUSER ​ name="​SGP-PPTP"​\
 +    disabled=no comment=SGP-PPTP profile=VPN-SGP keepalive-timeout=30
 +    ​
 +/​interface ​ l2tp-client add connect-to=$IPSGP user=$USERVPN password=$PASSVPNUSER name="​SGP-L2TP"​\
 +    disabled=no profile=VPN-SGP comment=SGP-L2TP keepalive-timeout=30
  
-/tool graphing set page-refresh=300 store-every=5min +/interface ovpn-client 
-/tool graphing interface ​add allow-address=0.0.0.0/0 disabled=no interface=all store-on-disk=yes +add connect-to=$IPSGP user=$USERVPN password=$PASSVPNUSER profile=VPN-SGP name="SGP-OVPN"​\ 
-/tool graphing queue add allow-address=0.0.0.0/0 allow-target=yes ​disabled=no ​simple-queue=all store-on-disk=yes +    ​disabled=no ​comment=SGP-OVPN 
-/tool graphing resource add allow-address=0.0.0.0/​0 disabled=no store-on-disk=yes+# REGRAS DE AVISO E BLOQUEIO
  
-/ip firewall address-list add address=IP_DO_SGP ​list=SITES-LIBERADOS +/ip firewall address-list ​ 
-/ip firewall ​address-list add address=208.67.222.222 list=SITES-LIBERADOS +add address=$RADIUS ​list=SITES-LIBERADOS 
-/ip firewall address-list ​add address=208.67.222.220 list=SITES-LIBERADOS +add address=$IPSGP ​list=SITES-LIBERADOS 
-/ip firewall address-list ​add address=8.8.8.8 list=SITES-LIBERADOS +add address=208.67.222.222 list=SITES-LIBERADOS 
-/ip firewall address-list ​add address=8.8.4.4 list=SITES-LIBERADOS +add address=208.67.222.220 list=SITES-LIBERADOS 
-/ip firewall address-list ​add address=1.1.1.1 list=SITES-LIBERADOS +add address=8.8.8.8 list=SITES-LIBERADOS 
-/ip firewall address-list add address=172.16.100.2 list=SITES-LIBERADOS +add address=8.8.4.4 list=SITES-LIBERADOS 
-/ip firewall address-list add address=172.16.150.2 list=SITES-LIBERADOS +add address=1.1.1.1 list=SITES-LIBERADOS 
-/ip firewall address-list ​add address=10.24.0.0/​22 list=BLOQUEADOS+add address=10.24.0.0/​20 list=BLOQUEADOS
  
-/ip firewall filter add action=drop chain=forward ​dst-address-list=!SITES-LIBERADOS src-address-list=BLOQUEADOS comment="​SGP REGRAS"​ +/ip firewall filter 
-/ip firewall ​filter ​add chain=forward ​connection-mark=BLOQUEIO-AVISAR action=add-src-to-address-list ​address-list=BLOQUEIO-AVISADOS ​address-list-timeout=2h comment="​SGP REGRAS"​ dst-address=IP_DO_SGP ​dst-port=PORTA_BLOQUEIO_AVISO ​protocol=tcp+add chain=forward connection-mark=BLOQUEIO-AVISAR ​action=add-src-to-address-list \ 
 +    address-list=BLOQUEIO-AVISADOS address-list-timeout=00:​01:​00 comment="​SGP REGRAS"​ dst-address=$IPSGP \ 
 +    dst-port=$AVS protocol=tcp 
 +/ip firewall nat 
 +add action=masquerade ​chain=srcnat comment="​SGP REGRAS" ​dst-address-list=
 +    SITES-LIBERADOS src-address-list=BLOQUEADOS 
 +add action=dst-nat chain=dstnat comment="​SGP REGRAS"​ dst-address-list=\ 
 +    ​!SITES-LIBERADOS ​dst-port=80,​443 log-prefix=""​ protocol=tcp \ 
 +    ​src-address-list=BLOQUEADOS ​to-addresses=$IPSGP to-ports=$BLQ  
 +add action=dst-nat chain=dstnat ​comment="​SGP REGRAS" ​connection-mark=\ 
 +    BLOQUEIO-AVISAR log-prefix=""​ protocol=tcp to-addresses=$IPSGP to-ports=$AVS 
 +/ip firewall ​mangle 
 +add chain=prerouting ​connection-state=new src-address-list=BLOQUEIO-AVISAR ​protocol=tcp dst-port=80,​443 \ 
 +    ​action=mark-connection new-connection-mark=BLOQUEIO-VERIFICAR passthrough=yes comment="​SGP REGRAS"​  
 +add chain=prerouting connection-mark=BLOQUEIO-VERIFICAR src-address-list=!BLOQUEIO-AVISADOS ​
 +    action=mark-connection new-connection-mark=BLOQUEIO-AVISAR ​comment="​SGP REGRAS" ​ 
 +/ip firewall raw 
 +add action=notrack chain=output comment="​SGP NAO FAZER NAT PARA O RADIUS"​ \ 
 +    ​dst-address=$RADIUS ​dst-port="​$AUC-$ACC,​3799" ​protocol=udp 
 +add action=drop chain=prerouting comment="​SGP BLOQUEIO"​ dst-address-list=\ 
 +    !SITES-LIBERADOS src-address-list=BLOQUEADOS 
 +/system scheduler 
 +add interval=4h name=sgp-aviso on-event=sgp-aviso policy=\ 
 +    ftp,​reboot,​read,​write,​policy,​test,​password,​sniff,​sensitive start-time=01:​00:​00 disabled=yes 
 +/system script 
 +add name=sgp-aviso policy=\ 
 +    ftp,​reboot,​read,​write,​policy,​test,​password,​sniff,​sensitive source=":​log info\ 
 +    \_\"​sgp aviso\";​\r\ 
 +    \n/file remove [find where name=sgp_aviso.rsc]\r\ 
 +    \n/tool fetch url=\"​$LINKDOSGP/​ws/​mikrotik/​aviso/​pendencia/​\\?​token=$TOKEN&​app=mikrotik\"​ dst-path=sgp_aviso.rsc;​\r\ 
 +    \n:delay 30s\r\ 
 +    \nimport file-name=sgp_aviso.rsc;​\r\ 
 +    \n:delay 10s;\r\ 
 +    \n/ip firewall address-list set timeout=00:​15:​00 [/ip firewall address-list find list=BLOQUEIO-AVISAR]";​\ 
 + 
 +# CONFIGURACAO IPv6 MIKROTIK 
 + 
 +:global versao [/system package get number=0 version ]; :global versao2 [:pick $versao 0 [:find "​$versao"​ "​."​ -3]]; 
 +:delay 2s 
 +:put $versao2 
 +:if ($versao2=7) do={ 
 +    :global ipv6 [/ipv6 settings get disable-ipv6] 
 +    :if ($ipv6=false) do={ 
 +    :log info "############​\nTEM IPV6 HABILITADO NESSA RB\n############"​ 
 +    :log info "​CONFIGURANDO O POOL DE BLOQUEIO IPv6"​ 
 +    /ipv6 pool add name=bloqueiov6pd prefix-length=64 prefix=2001:​DB9:​100::/​40 
 +    /ipv6 pool add name=bloqueiov6prefix prefix-length=64 prefix=2001:​DBA:​900::/​40 
 +    :log info "​CONFIGURANDO O SCRIPT NOS PROFILE DOS PPPOE SERVER"​ 
 +    /ppp profile set  on-up=":​local \ 
 +        ipv6pool \"​bloqueiov6pd\"​\r\ 
 +        \n:local prefixo\r\ 
 +        \n:local servername \"<​pppoe-\$user>​\"​\r\ 
 +        \n:delay 30s\r\ 
 +        \n:log info [/ipv6 dhcp-server binding find server=\"​\$servername\"​]\r\ 
 +        \n:foreach binding in=[/ipv6 dhcp-server binding find status=\"​bound\"​ server=\"​\$servername\"​] do={\r\ 
 +        \n:set prefixo [/ipv6 dhcp-server binding get \$binding address]\r\ 
 +        \n:log info \"​FETCH $LINKDOSGP/​ws/​radius/​ipv6/​update/​\\\?​token=$TOKEN&​username=\$user&​app=mikrotik&​nas\ 
 +        ip=\$NAS&​pd=\$prefixo\"​\r\ 
 +        \n/tool fetch url=\"​$LINKDOSGP/​ws/​radius/​ipv6/​update/​\\\?​token=$TOKEN&​username=\$user&​app=mikrotik&​nasip=\$NAS&​\ 
 +        pd=\$prefixo\"​ mode=http as-value output=user\r\ 
 +        \n}" [find .id!=999] 
 +    /ppp profile set on-down=":​local servernam\ 
 +        e \"<​pppoe-\$user>​\"​\r\ 
 +        \n/ipv6 dhcp-server binding remove [find server=\$servername]\r\ 
 +        \n:local servername \"<​pppoe-\$user>​\"​\r\ 
 +        \n/ipv6 dhcp-server remove [find numbers=\$user]\r\ 
 +        \n" [find .id!=999] 
 +    } else={ 
 +        :log info "############​\nNAO TEM IPV6 HABILITADO NESSA RB\n############"​ 
 +    } 
 +} else={ 
 +    :if ($versao2=6) do={ 
 +    :global ipv6 [/system package get ipv6 disabled ] 
 +    :if ($ipv6=false) do={ 
 +    :log info "############​\nTEM IPV6 HABILITADO NESSA RB\n############"​ 
 +    :log info "​CONFIGURANDO O POOL DE BLOQUEIO IPv6"​ 
 +    /ipv6 pool add name=bloqueiov6pd prefix-length=64 prefix=2001:​DB9:​100::/​40 
 +    /ipv6 pool add name=bloqueiov6prefix prefix-length=64 prefix=2001:​DBA:​900::/​40 
 +    :log info "​CONFIGURANDO O SCRIPT NOS PROFILE DOS PPPOE SERVER"​ 
 +    /ppp profile set  on-up=":​local \ 
 +        ipv6pool \"​bloqueiov6pd\"​\r\ 
 +        \n:local prefixo\r\ 
 +        \n:local servername \"<​pppoe-\$user>​\"​\r\ 
 +        \n:delay 30s\r\ 
 +        \n:log info [/ipv6 dhcp-server binding find server=\"​\$servername\"​]\r\ 
 +        \n:foreach binding in=[/ipv6 dhcp-server binding find status=\"​bound\"​ server=\"​\$servername\"​] do={\r\ 
 +        \n:set prefixo [/ipv6 dhcp-server binding get \$binding address]\r\ 
 +        \n:log info \"​FETCH $LINKDOSGP/​ws/​radius/​ipv6/​update/​\\\?​token=$TOKEN&​username=\$user&​app=mikrotik&​nas\ 
 +        ip=\$NAS&​pd=\$prefixo\"​\r\ 
 +        \n/tool fetch url=\"​$LINKDOSGP/​ws/​radius/​ipv6/​update/​\\\?​token=$TOKEN&​username=\$user&​app=mikrotik&​nasip=\$NAS&​\ 
 +        pd=\$prefixo\"​ mode=http as-value output=user\r\ 
 +        \n}" [find .id!=999] 
 +    /ppp profile set on-down=":​local servernam\ 
 +        e \"<​pppoe-\$user>​\"​\r\ 
 +        \n/ipv6 dhcp-server binding remove [find server=\$servername]\r\ 
 +        \n:local servername \"<​pppoe-\$user>​\"​\r\ 
 +        \n/ipv6 dhcp-server remove [find numbers=\$user]\r\ 
 +        \n" [find .id!=999] 
 +    } else={ 
 +    :log info "############​\nNAO TEM IPV6 HABILITADO NESSA RB\n############"​ 
 +    } 
 +    } 
 +
 + 
 +# CRIAR BACKUP DOS PPPoEs 
 + 
 +:global wurl "​ws/​mikrotik/​login/​local"​ 
 +/system script 
 +add name=sgp_login_local owner=SGP policy=ftp,​reboot,​read,​write,​policy,​test,​password,​sniff,​sensitive,​romon source=":​global filename \"​sgp_login_local.txt\";​\r\ 
 +    \n/file remove [/file find name=\$filename]\r\ 
 +    \n/tool fetch url=\"​$LINKDOSGP/​$wurl/​\\?​token=$TOKEN&​app=mikrotik&​nas=$NAS&​disabled=1\"​ duration=30 dst-path=\$filename;​\r\ 
 +    \n:delay 32s;\r\ 
 +    \n/import file-name=\$filename;"​ 
 +/system scheduler 
 +add disabled=no interval=6h name=sgp_login_local on-event=sgp_login_local policy=\ 
 +    ftp,​reboot,​read,​write,​policy,​test,​password,​sniff,​sensitive,​romon start-time=12:​00:​00 
 +/tool netwatch 
 +add comment="​ATIVAR O SECRETS CASO O RADIUS PARE" disabled=yes \ 
 +    down-script="/​ppp secret ; :foreach i in [ find comment~\"​SGP:​\ 
 +    \" ] do={ enable \$i }; /ppp active; :foreach p in [find \\ radius=no] do=\ 
 +    { remove \$p; :delay 1};" host=$RADIUS interval=3m timeout=10000ms \ 
 +    up-script="/​ppp secret ; :foreach i in [ find comment~\"​SGP:​\"​ ] do={ disa\ 
 +    ble \$i }; /ppp active; :foreach p in [find \\ radius=no] do={ remove \$p;\ 
 +    \_:delay 1};" 
 + 
 +:log print where message="​TEM IPV6 HABILITADO NESSA RB" or message="​NAO TEM IPV6 HABILITADO NESSA RB" 
 + 
 +#Script Integração 
 +#Systema de Gerenciamento de provedores - SGP
  
-/ip firewall nat add action=masquerade chain=srcnat comment="​SGP REGRAS"​ src-address-list=BLOQUEADOS 
-/ip firewall nat add action=dst-nat chain=dstnat comment="​SGP REGRAS"​ dst-address-list=!SITES-LIBERADOS dst-port=80,​443 log-prefix=""​ protocol=tcp src-address-list=BLOQUEADOS to-addresses=IP_DO_SGP to-ports=PORTA_BLOQUEIO 
-/ip firewall nat add action=dst-nat chain=dstnat comment="​SGP REGRAS"​ connection-mark=BLOQUEIO-AVISAR log-prefix=""​ protocol=tcp to-addresses=IP_DO_SGP ​ to-ports=PORTA_BLOQUEIO_AVISO 
  
-/ip firewall mangle add chain=prerouting connection-state=new src-address-list=BLOQUEIO-AVISAR protocol=tcp dst-port=80 action=mark-connection new-connection-mark=BLOQUEIO-VERIFICAR passthrough=yes comment="​SGP REGRAS"​ 
-/ip firewall mangle add chain=prerouting connection-mark=BLOQUEIO-VERIFICAR src-address-list=!BLOQUEIO-AVISADOS action=mark-connection new-connection-mark=BLOQUEIO-AVISAR comment="​SGP REGRAS"​ 
 </​code>​ </​code>​
  
  
 Feito isso, acesse o menu **Administração >> Cadastros >> Radius(NAS)**,​ clique nem **Cadastrar NAS** no canto superior direito da página e preencha o formulário de acordo com as configurações do MikroTik. Feito isso, acesse o menu **Administração >> Cadastros >> Radius(NAS)**,​ clique nem **Cadastrar NAS** no canto superior direito da página e preencha o formulário de acordo com as configurações do MikroTik.
-{{ :captura_de_tela_de_2018-12-28_13-39-29.png |}}+{{ :cadastronas.png?600 |}}
  
 {{ :​captura_de_tela_de_2018-12-28_14-03-57.png |}} {{ :​captura_de_tela_de_2018-12-28_14-03-57.png |}}
  
-Para verificar a se a conexão ocorreu como esperado, click em **Opções** na NAS cadastrada e escolha a opção **Verificar Sessões**. 
-{{ :​captura_de_tela_de_2018-12-28_14-16-58.png |}} 
  
-Se tudo deu certo, a seguinte página ​irá ser exibida. Caso contrário, verifique os passos novamente e contate a central de atendimentos.+<​html>​ 
 + 
 +<​head>​ 
 +    <meta charset="​UTF-8"​ /> 
 +    <meta name="​viewport"​ content="​width=device-widthuser-scalable=0"​ /> 
 + 
 +<style type="​text/​css">​ 
 +  
 +        p { 
 +          text-align: center; 
 +        } 
 + 
 + 
 +        img{ 
 +          display: block; 
 +          margin: 0px auto; 
 +          -webkit-box-shadow:​ 9px 7px 5px rgba(50, 50, 50, 0.5); 
 +        --moz-box-shadow: ​  9px 7px 5px rgba(50, 50, 50, 0.5); 
 +        -box-shadow: ​       9px 7px 5px rgba(50, 50, 50, 0.5); 
 +        } 
 + 
 +</​style>​ 
 + 
 +</​head> ​       
 + 
 + 
 +<​body>​ 
 +          
 +     <​p>​Para verificar se conexão ocorreu como esperado, click no <b> ícone da engrenagem</​b>​ localizada ao lado do IP do NAS. </​p>​ 
 +     
 +        <img id="​shadow-box"​ src="​http://​wiki.sgp.net.br/​lib/​exe/​fetch.php?​media=nas:​verificar_sessoes_1.png"​ alt="​verificar sessoes 1">​ 
 + <​br><​br>​ 
 + 
 +     <​p>​Caso a comunicação via API do SGP ao NAS esteja correta, ​irá ser exibida ​a seguinte mensagem da imagem abaixo em uma nova aba do navegador. Caso contrário, verifique os passos novamente e contate a central de atendimentos.</​p>​ 
 +     <​br>​ 
 + 
 +        <img id="​shadow-box"​ src="​http://​wiki.sgp.net.br/​lib/​exe/​fetch.php?​media=nas:​nas_ok_.png"​ alt="​NAS OK"> ​   
 + 
 + 
 +</​body>​ 
 +</​html>​