Problemas com SNMP sobre OSPF
Bom dia,
Tenho duas RB450G configuradas com OSPF fazendo um link wireless full duplex simulado (manipulando o cost nas interfaces) e também como redundância, caso um ptp wireless fique off por algum motivo.
O problema que tá ocorrendo é o seguinte:
1. Quando o OSPF tá ativo com os 2 links, o SNMP da RB450G da outra ponta (final do ptp) pára de funcionar (a porta 161 fica filtered no nmap);
2. Quando o OSPF tá ativo com apenas 1 link (simulando uma falha em um dos links), o SNMP volta a funcionar normalmente.
Alguém já passou por um problema parecido?
Porque os demais serviços dessa RB (ssh, ftp...) continuam funcionando nas 2 situações?
Seria alguma limitação do UDP (pelo fato de ir por um lado e voltar por outro)?
Servidor Linux --- RB450G === 2 PTPs Wireless (bridge) === RB450G (outra ponta) --- Link Operadora
Re: Problemas com SNMP sobre OSPF
Citação:
Postado originalmente por
loxxxa
O problema que tá ocorrendo é o seguinte:
1. Quando o OSPF tá ativo com os 2 links, o SNMP da RB450G da outra ponta (final do ptp) pára de funcionar (a porta 161 fica filtered no nmap);
2. Quando o OSPF tá ativo com apenas 1 link (simulando uma falha em um dos links), o SNMP volta a funcionar normalmente.
Alguém já passou por um problema parecido?
Bom dia Diego.
Você constatou esse problema usando o endereço da interface loopback ou o endereço de uma das interfaces físicas?
Pelo comportamento que está tendo aí, parece não estar em uso o endereço de loopback. Leia a afirmação abaixo, extraída do Wiki[1] Oficial da MikroTik.
Citação:
The benefits are that loopback address is always up (active) and can’t be down as physical interface.
Citação:
Postado originalmente por
loxxxa
Porque os demais serviços dessa RB (ssh, ftp...) continuam funcionando nas 2 situações?
Seria alguma limitação do UDP (pelo fato de ir por um lado e voltar por outro)?
Essa é a parte estranha, pois deveria parar nos demais serviços. Mas enfim, vamos por partes. Primeiro vamos ver se há endereços loopback, e como fica o comportamento do SNMP com endereço de loopback.
[1] http://wiki.mikrotik.com/wiki/Manual:OSPF-examples
Saudações,
Trober
-
-
-
-
-
Re: Problemas com SNMP sobre OSPF
Em todos os ips da outra ponta, tanto no ip da loopback (1.1.1.2) quanto no ip interface q faz o ospf (10.254.254.253). Também tentei pelo ip da operadora que fica na RB... qualquer um dá como porta filtrada, e não responde ao snmpwalk (-v1 ou -v2c ou -v3).
Já revisei o exemplo no link que você passou, e minha loopback tá setada corretamente.
Estranho mesmo que só o SNMP parou...
Estava com mk 5.8, atualizei pra 5.14, mas não resolveu...
Citação:
Postado originalmente por
trober
Bom dia Diego.
Você constatou esse problema usando o endereço da
interface loopback ou o endereço de uma das
interfaces físicas?
Pelo comportamento que está tendo aí, parece não estar em uso o endereço de
loopback. Leia a afirmação abaixo, extraída do
Wiki[1] Oficial da
MikroTik.
Essa é a parte estranha, pois deveria parar nos demais serviços. Mas enfim, vamos por partes. Primeiro vamos ver se há endereços
loopback, e como fica o comportamento do SNMP com endereço de
loopback.
[1]
Manual:OSPF-examples - MikroTik Wiki
Saudações,
Trober
-
-
-
-
-
Re: Problemas com SNMP sobre OSPF
Citação:
Postado originalmente por
loxxxa
os demais serviços dessa RB (ssh, ftp...) continuam funcionando nas 2 situações?
Seria alguma limitação do UDP (pelo fato de ir por um lado e voltar por outro)?
Citação:
Postado originalmente por
loxxxa
Já revisei o exemplo no link que você passou, e minha loopback tá setada corretamente.
Estranho mesmo que só o SNMP parou...
Grato pelas informações.
Diego, você comentou sobre SSH e FTP estarem operantes. Esses são serviços TCP. O serviço SNMP é UDP. Por acaso, você não tem alguma regra de firewall, daquelas que nega acesso de tudo que for UDP, diferente de 53 (DNS), daquelas tipicamente usadas para filtrar P2P? Se sim, o SNMP não funcionará, já que o protocolo usa 161 UDP.
Se não for problema para você, informe as seguintes saídas dos comandos abaixos (só funcionam em RouterOS 5.12 ou superior).
Código :
/ip address export compact
/ip route export compact
/routing ospf export compact
/routing filter export compact
/ip firewall export compact
/ip service export compact
Saudações,
Trober
-
-
-
-
-
Re: Problemas com SNMP sobre OSPF
Não tenho firewall desse tipo, mesmo porque como citei o serviço SNMP funciona legal com apenas 1 link ativo, sem mexer em mais nada.
Segue abaixo as configs solicitadas:
Código :
/ip address
add address=172.16.8.2/30 comment="Gateway Remoto" interface=remote0
add address=10.254.254.253/24 comment="OSPF PTP Antigo" interface=ospf-wlan0
add address=10.254.253.253/24 comment="OSPF PTP Novo" interface=ospf-wlan1
add address=1.1.1.2/32 comment=Loopback interface=loopback network=1.1.1.2
add address=172.27.2.1/30 comment="VPN Autosales" interface=vpn-autosales
Código :
/ip route
add distance=1 gateway=172.16.8.1
add comment="VPN Autosales" distance=1 dst-address=172.27.2.4/30 gateway=\
x.x.x.x
Código :
/routing ospf instance
set [ find default=yes ] distribute-default=always-as-type-1 \
redistribute-connected=as-type-1 redistribute-static=as-type-1 router-id=\
1.1.1.2
/routing ospf interface
add authentication=md5 authentication-key=xxxxxxxxxxx cost=100 interface=\
ospf-wlan0 network-type=ptmp
add authentication=md5 authentication-key=xxxxxxxxxxx interface=ospf-wlan1 \
network-type=ptmp
/routing ospf network
add area=backbone network=10.254.254.0/24
add area=backbone network=10.254.253.0/24
Código :
# apr/04/2012 13:05:41 by RouterOS 5.14
# software id = xxxx-xxxx
#
/routing filter export compact
Código :
/ip firewall address-list
add address=x.x.x.x/25 comment="liberados para ssh" list=ssh_free
/ip firewall filter
add action=drop chain=input comment="drop ssh brute forcers" dst-port=22 \
protocol=tcp src-address-list=ssh_blacklist
add action=add-src-to-address-list address-list=ssh_blacklist \
address-list-timeout=1w3d chain=input connection-state=new dst-port=22 \
protocol=tcp src-address-list=ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 \
address-list-timeout=1m chain=input connection-state=new dst-port=22 \
protocol=tcp src-address-list=ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 \
address-list-timeout=1m chain=input connection-state=new dst-port=22 \
protocol=tcp src-address-list=ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 \
address-list-timeout=1m chain=input connection-state=new dst-port=22 \
protocol=tcp src-address-list=!ssh_free
Código :
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set winbox disabled=yes
Re: Problemas com SNMP sobre OSPF
Citação:
Postado originalmente por
loxxxa
Código :
/routing ospf instance
set [ find default=yes ] distribute-default=always-as-type-1 \
redistribute-connected=as-type-1 redistribute-static=as-type-1 router-id=\
1.1.1.2
/routing ospf network
add area=backbone network=10.254.254.0/24
add area=backbone network=10.254.253.0/24
Oi Diego,
Há algumas inconsistências no OSPF, mas não justificam o problema do SNMP. Muito estranho tudo isso :(
Quando me refiro às inconsistências, são a fatores como:
1) Em /routing ospf network, seu endereço de loopback não está anunciado (como passivo)[1].
2) Em /routing ospf network, seu endereço de link não está anunciado (como passivo)[1].
3) A rota padrão está sendo propagada. Essa funcionalidade deve só ser feita na RB450 que está conectada à operadora (link).
4) As rotas conectadas estão sendo anunciadas. Essa não é uma boa prática[2].
Apesar das referências serem da Cisco, o protocolo OSPF é aberto, regido pelo RFC2328[3], não havendo diferença entre as funcionalidades básicas da implementação MikroTik e Cisco, salvo as "firulas" proprietárias, se tiver. E claro, a documentação da Cisco é violentamente mais completa que os simplórios wikis da MikroTik.
Mas ainda assim, pelo fato de funcionar SSH e FTP, por ambos enlaces, o SNMP deveria também ter funcionado :(
Pergunto: Se fizer um Torch, quando você conecta em SSH e FTP, a origem da conexão (source address) também é igual à origem do SNMP, independente de qual enlace está ativo?
[1] http://www.cisco.com/en/US/docs/ios/...de/defint.html
[2] https://supportforums.cisco.com/thread/153064
[3] http://www.ietf.org/rfc/rfc2328.txt
Saudações,
Trober
-
-
-
-
-
Re: Problemas com SNMP sobre OSPF
As configs que te passei vieram da RB que está ligada a operadora + uma vpn de um cliente que fica na mesma localidade aonde pego meu link (então fiz um acordo com ele, e deixo ele utilizar a estrutura pra fazer uma vpn)
Bom... vamos para as inconsistências primeiro:
1) como deveria ficar então a interface loopback (add interface=loopback passive=yes) (sem cost, sem network-type?) e em /routing ospf network, devo acrescentar uma area especifica pra loopback?
2) mesma coisa com a interface do link? (add interface=remote0 passive=yes) e uma area especifica pro link?
3) A rota padrão que está sendo propagada é da RB que está conectada à operadora (isso mesmo... a operadora utiliza um ip não válido para rotear minhas faixas de ips reais = 172.16.8.1), e está sendo redistribuída na outra RB.
4) quais rotas que estão sendo anunciadas que não deveriam ser (lembre-se que esta é a RB que está ligada na operadora)?
Agora o torch: o src-address é sempre o mesmo, tanto no ssh, quanto no snmp, estando os 2 enlaces ativos ou apenas 1 (qualquer um deles)....
Você prefere que eu anexe as configs de cada uma RB para você ver como estou fazendo meu ospf?
Re: Problemas com SNMP sobre OSPF
Citação:
Postado originalmente por
loxxxa
1) como deveria ficar então a interface loopback (add interface=loopback passive=yes) (sem cost, sem network-type?) e em /routing ospf network, devo acrescentar uma area especifica pra loopback?
Sim. Tem um exemplo do Greg Sowell[1] que descreve o uso de loopback, em modo passivo. O parâmetro network-type não precisa ser definido, uma vez que em modo passivo, a interface não "conversará" OSPF.
Citação:
Postado originalmente por
loxxxa
2) mesma coisa com a interface do link? (add interface=remote0 passive=yes) e uma area especifica pro link?
Sim. Você declara a interface como passiva, para não correr o risco[2] de anunciar uma rede que faça sua interface pública "subir", e assim "conversar" OSPF.
"OSPF has a feature to avoid border interfaces to participate in OSPF domain - passive mode"[2]
Citação:
Postado originalmente por
loxxxa
3) A rota padrão que está sendo propagada é da RB que está conectada à operadora (isso mesmo... a operadora utiliza um ip não válido para rotear minhas faixas de ips reais = 172.16.8.1), e está sendo redistribuída na outra RB.
Sim, a redistribuição de rota padrão só ocorre na RB conectada ao link externo. As demais RBs não propagam rota padrão. A exceção seria se você tive dois links de internet, mas não é aplicável aqui. Então, na sua rede, só uma RB anunciará a rota padrão. Todas os demais roteadores (que conversam OSPF) receberão essa rota :)
Citação:
Postado originalmente por
loxxxa
4) quais rotas que estão sendo anunciadas que não deveriam ser (lembre-se que esta é a RB que está ligada na operadora)?
Abaixo o código para desativar a redistribuição (anúncio - propagação) de rotas conectadas. No seu caso, está "as-type-1".
Código :
/routing ospf instance set 0 redistribute-connected=no
Citação:
Postado originalmente por
loxxxa
Agora o torch: o src-address é sempre o mesmo, tanto no ssh, quanto no snmp, estando os 2 enlaces ativos ou apenas 1 (qualquer um deles)....
Ok. Com isso, elimina-se a possibilidade da existência de um NAT no meio do caminho.
Citação:
Postado originalmente por
loxxxa
Você prefere que eu anexe as configs de cada uma RB para você ver como estou fazendo meu ospf?
Pode ser. Use a opção "compact", para não serem exportadas sobras desnecessárias, facilitando assim a análise das configurações.
Ainda assim, se funciona com SSH e FTP, deveria funcionar o SNMP também. Acredito que logo mais desarmamos o problema :)
[1] http://gregsowell.com/?p=2493
[2] http://mum.mikrotik.com/presentations/BR11/1_Maia.pdf
Saudações,
Trober
-
-
-
-
-
2 Anexo(s)
Re: Problemas com SNMP sobre OSPF
Obrigado pela paciência e pelo material encaminhado!
No exemplo de Greg Sowell[1],não encontrei a parte que cita sobre a interface loopback setando como passiva... mas mesmo assim, já setei, como você vai poder ver na config.
Mas mesmo setando as interfaces como passivas, e desabilitando a redistribuição das rotas na RB que está ligada no link, o SNMP continua parado...
Em anexo, as configs das duas RBs para uma analise mais detalhada...
Re: Problemas com SNMP sobre OSPF
Citação:
Postado originalmente por
loxxxa
Obrigado pela paciência e pelo material encaminhado!
No exemplo de Greg Sowell[1],não encontrei a parte que cita sobre a interface loopback setando como passiva... mas mesmo assim, já setei, como você vai poder ver na config.
Mas mesmo setando as interfaces como passivas, e desabilitando a redistribuição das rotas na RB que está ligada no link, o SNMP continua parado...
Boa noite Diego.
Tenho duas notícias: Uma é boa, a outra vair depender do seu ponto de vista.
Envio para você como ficaram os scripts das RBs, contendo alguns ajustes. Redefini o nome de algumas interfaces, para eu não me perder na topologia. Faça os ajustes para seu cenário.
Fiz os teste duas MikroTik RB750G e quatro Ubiquiti AirGrid, simulando seus enlaces. Funcionou 100%. Tem uma coisa que não fiz, que foi usar bridge ao invés de atuar diretamente com OSPF nas interfaces, mas vamos deixar isso para um outro momento :)
Aqui tem o código para usar em SANTA TERESA.
Código :
#Definir nome
/system identity set name=ROUTER_STA-SRC
#Redefinir nome de interfaces
/interface ethernet set 0 name=ether1-link
/interface ethernet set 1 name=ether2-vpn-autosales
/interface ethernet set 2 name=ether3
/interface ethernet set 3 name=ether4-enlace-antigo
/interface ethernet set 4 name=ether5-enlace-novo
#Adicionar interface loopback
/interface bridge add name=loopback
#Definir enderecos IP
/ip address add interface=loopback address=1.1.1.2/32 comment="Loopback"
/ip address add interface=ether1-link address=172.16.8.2/30 comment="Gateway Remoto"
/ip address add interface=ether4-enlace-antigo address=10.254.254.253/24 comment="OSPF PTP Antigo"
/ip address add interface=ether5-enlace-novo address=10.254.253.253/24 comment="OSPF PTP Novo"
/ip address add interface=ether2-vpn-autosales address=172.27.2.1/30 comment="VPN Autosales"
#Adicionar rotas estaticas (o gateway da segunda regra eh hipotetico)
/ip route add distance=1 gateway=172.16.8.1
/ip route add distance=1 dst-address=172.27.2.4/30 gateway=100.100.100.1 comment="VPN Autosales"
#Adicionar interfaces no OSPF
/routing ospf interface add interface=loopback passive=yes
/routing ospf interface add interface=ether1-link passive=yes
/routing ospf interface add interface=ether2-vpn-autosales passive=yes
/routing ospf interface add interface=ether3 passive=yes
/routing ospf interface add interface=ether4-enlace-antigo authentication=md5 authentication-key=SenhaDiego network-type=ptmp cost=100
/routing ospf interface add interface=ether5-enlace-novo authentication=md5 authentication-key=SenhaDiego network-type=ptmp
#Definir a instancia
#Esse roteador DEVE redistribuir a rota padrao, pois estah na BORDA.
/routing ospf instance set [ find default=yes ] distribute-default=always-as-type-1 router-id=1.1.1.2
#Adicionar redes a serem anunciadas pelo OSPF (veja, loopback anunciada!!!)
/routing ospf network add area=backbone network=1.1.1.2/32
/routing ospf network add area=backbone network=10.254.254.0/24
/routing ospf network add area=backbone network=10.254.253.0/24
#Definir SNMP
/snmp community set [ find default=yes ] name=public
/snmp set contact=Loxxxa enabled=yes location="Autosales - Santa Teresa" trap-community=public trap-version=2
#Definir timezone (uma boa pratica de logs eh usar UTC, mas nem esquenta a cabeca com isso, pelo menos agora)
/system clock set time-zone-name=America/Sao_Paulo
#Definir servidor de NTP (endereco hipotetico)
/system ntp client set enabled=yes mode=unicast primary-ntp=150.150.150.1
#Desativando servicos (descomentar para desativar)
#/ip service set telnet disabled=yes
#/ip service set ftp disabled=yes
#/ip service set www disabled=yes
#/ip service set winbox disabled=yes
E aqui tem o código para usar em MORRO ARISTIDES.
Código :
#Definir nome
/system identity set name=ROUTER_SRC-STA
#Redefinir nome de interfaces
/interface ethernet set 0 name=ether1-local-0
/interface ethernet set 1 name=ether2-local-1
/interface ethernet set 2 name=ether3-local-2
/interface ethernet set 3 name=ether4-wlan0
/interface ethernet set 4 name=ether5-wlan1
#Adicionar interface loopback
/interface bridge add name=loopback
/interface bridge add name=bridge1
/interface bridge port add bridge=bridge1 interface=ether1-local-0
/interface bridge port add bridge=bridge1 interface=ether2-local-1
/interface bridge port add bridge=bridge1 interface=ether3-local-2
#Definir enderecos IP (bridge1 com endereco hipotetico)
/ip address add interface=loopback address=1.1.1.1/32 comment=Loopback
/ip address add interface=ether4-wlan0 address=10.254.254.254/24 comment="OSPF PTP Antigo"
/ip address add interface=ether5-wlan1 address=10.254.253.254/24 comment="OSPF PTP Novo"
/ip address add interface=bridge1 address=200.200.200.1/25 comment="Gateway Local"
#Adicionar rotas estaticas (todos os enderecos de gateway sao hipoteticos)
/ip route add distance=1 dst-address=172.27.2.4/30 gateway=200.200.200.3 comment="Rota vpn autosales"
/ip route add distance=1 dst-address=50.50.50.128/25 gateway=200.200.200.2 comment="Rotas Clientes"
/ip route add distance=1 dst-address=51.51.51.0/24 gateway=200.200.200.2 comment="Rotas Clientes"
/ip route add distance=1 dst-address=52.52.52.0/24 gateway=200.200.200.2 comment="Rotas Clientes"
#definir servidor DNS
/ip dns set max-udp-packet-size=512 servers=10.99.0.98
#Adicionar interfaces no OSPF
/routing ospf interface add interface=loopback passive=yes
/routing ospf interface add interface=bridge1 passive=yes
/routing ospf interface add interface=ether4-wlan0 authentication=md5 authentication-key=SenhaDiego network-type=ptmp
/routing ospf interface add interface=ether5-wlan1 authentication=md5 authentication-key=SenhaDiego network-type=ptmp cost=100
#Definir a instancia
#Esse roteador NAO redistribuir a rota padrao, pois estah na BORDA.
/routing ospf instance set [ find default=yes ] redistribute-static=as-type-1 router-id=1.1.1.1
#Adicionar redes a serem anunciadas pelo OSPF (veja, loopback anunciada!!!)
/routing ospf network add area=backbone network=1.1.1.1/32
/routing ospf network add area=backbone network=10.254.254.0/24
/routing ospf network add area=backbone network=10.254.253.0/24
/routing ospf network add area=backbone network=200.200.200.0/24
#Definir SNMP
/snmp community set [ find default=yes ] name=public
/snmp set contact=Loxxxa enabled=yes location="Morro Aristides - Sao Roque do Canaa" trap-community=public trap-target=0.0.0.0
#Definir timezone (uma boa pratica de logs eh usar UTC, mas nem esquenta a cabeca com isso, pelo menos agora)
/system clock set time-zone-name=America/Sao_Paulo
#Definir servidor de NTP (endereco hipotetico)
/system ntp client set enabled=yes mode=unicast primary-ntp=150.150.150.1
#Desativando servicos (descomentar para desativar)
#/ip service set telnet disabled=yes
#/ip service set ftp disabled=yes
#/ip service set www disabled=yes
#/ip service set winbox disabled=yes
Essa foi a notícia boa. Agora vem a notícia que depende do seu ponto de vista:
Quando uma coisa não tem solução, diz-se que "solucionado está".
Vamos lá então. Conforme rege o RFC1270[1], o SNMP é um protocolo connectionless[1], conforme a afirma a frase abaixo:
"Since the UDP is connectionless, it will generate no overhead traffic of its own (such as TCP SYNs, FINs, and ACKs)."
Veja que mais gente sofre deste mal[2].
O que significa isso? No seu caso, seu roteamento dinâmico tem uma peculiaridade. Você tem dois pesos cruzados nas interfaces, ou seja:
Para quem vai de Santa Teresa para Morro Aristides, o peso é +100 pelo enlace antigo e somente +10 pelo enlace novo.
Para quem volta de Morro Aristides para Santa Teresa, tem um novo caminho, pois o peso é inverso, sendo peso +100 pelo enlace novo, e somente +10 no enlace antigo.
Ou seja, o Diego é um cara inteligente, é está distribuindo o uso dos enlaces :)
Qual o problema disso? Não era para ser uma solução? Sim, é uma solução, mas quando você tem um serviço connectionless[1], terá esse problema.
Quais alternativas então restam?
1) Equalizar pesos em 10 novamente, mas você perde a "circularidade" nos dois enlaces.
2) Atribuir um peso maior para o enlace antigo, seja em Santa Teresa e Morro Aristides. Com isso o enlace novo será primário, somente usando o enlace antigo como backup, quando o novo falhar.
3) Usar "SNMP over TCP"[3]? Tem muitos prós e muitos contras. No MikroTik, acredito que o listen só acontece em UDP :(
Bom, por enquanto é isso. O que tem em mente sobre isso, agora, depois dessa "água fria"?
[1] http://www.ietf.org/rfc/rfc1270.txt
[2] http://stackoverflow.com/questions/7...ver-connection
[3] http://www.ietf.org/proceedings/72/slides/opsarea-2.pdf
Saudações,
Trober
-
-
-
-
-
Re: Problemas com SNMP sobre OSPF
Bom dia!
É... eu já tinha feito uma config anterior usando eoip + bridge, mas achei OSPF puro mais satisfatório no meu caso.
Modifiquei as configs agora de acordo com os dados que você passou, pra ficar mais bunitu!
Quanto a mudar o cost, não seria uma boa pra mim... digo isso porque um dos ptp (velho) usa equipamentos um pouco mais modestos, e utilizo ele exclusivamente pra upload e/ou em caso de falhas no ptp novo. Num futuro próximo, pretendo modificar os equipamentos para melhorar o throughput!
Quanto ao problema do SNMP, deve ser mesmo uma limitação do UDP...
Mas acabei de ter uma nova idéia: vou tentar fazer um tunel entre a RB e meu server linux pra ver se o SNMP consegue passar legal dentro dele. Ou então usar o serviço snmptrapd do linux pra ficar escutando a RB.
Menos mal quanto a tudo isso... pensei que houvesse algo muito errado no meu OSPF, que iria dar um problemão maior no futuro!
Vou testar as 2 opções, e posto qual foi o veredito final!
Re: Problemas com SNMP sobre OSPF
Boa tarde!
Depois de muita teima com o SNMP, finalmente consegui!
A solução que testei e deu resultado foi criar uma interface gre na RB, apontando pra uma interface gre no meu servidor linux (criando um tunel gre), fazendo com que o trafego SNMP ficasse "fechado" dentro do tunel criado.
Não cheguei a testar o snmptrapd, porém creio que daria o mesmo problema do SNMP, só ficaria ao contrário.
Muito obrigado pelas dicas!