PCC, HotSpot e WebProxy no mesmo ROS.
Construir políticas de rotas nunca foi minha área, até porque maior parte dos meus clientes operam com link dedicado e são ASN, mas surgiu a necessidade de construir políticas de rotas para uma empresa que gerencia redes locais de hotéis usando o ROS. O cenário é relativamente simples, com dois ou 3 links, onde normalmente 1 é dedicado e os outros são dinâmicos (xDSL, Cable, etc).
A maior questão se resumia ao sistema da empresa que utiliza as ferramentas do ROS, webproxy e hotspot, para alimentar as rotinas de gerenciamento do mesmo. Pela web toda sempre as mesmas recomendações de se utilizar um equipamento/roteador distinto para o PCC e outro para webproxy e/ou hotspot. Mas a solução utilizada não permitia isso, ou seja, era necessário executar todas as configurações em apenas um ROS.
Pois bem, disponibilidade para pesquisa e leitura sempre foram minha rotina, então, mãos obra: laboratório montado fui testar as configurações e pesquisar toda documentação disponível na web.
Após alguns testes e aproximadamente 3 horas de pesquisa, solução pronta.
Re: PCC, HotSpot e WebProxy no mesmo ROS.
Montei o cenário, o qual exponho abaixo:
Endereçamento IP
Código :
/ip address
add address=172.16.10.1/24 disabled=no interface=LAN network=172.16.10.0
add address=10.1.1.2/30 disabled=no interface=ISP-3 network=10.1.1.0
O endereçamento diz respeito apenas a rede local e a WAN, onde o link é dedicado e possui endereçamento estático.
PPPoE Client
Código :
/interface pppoe-client
add add-default-route=no allow=chap,mschap1,mschap2 comment="WAN 1" dial-on-demand=no disabled=no interface=ether3 max-mru=1480 max-mtu=1480 name=ISP-1 password=12345 profile=default use-peer-dns=yes user=PPPOE-1
add add-default-route=no allow=chap,mschap1,mschap2 comment="WAN 2" dial-on-demand=no disabled=no interface=ether2 max-mru=1480 max-mtu=1480 name=ISP-2 password=12345 profile=default use-peer-dns=yes user=PPPOE-2
Os clientes PPPoE não recebem rotas do servidor, umas vez que iremos definir as mesmas através das interfaces no momento da configuração das políticas de rotas.
Re: PCC, HotSpot e WebProxy no mesmo ROS.
Em seguida as configurações do hotspot, que são simples, utilizando o setup padrão do ROS.
Código :
/ip hotspot profile
set default dns-name="" hotspot-address=0.0.0.0 html-directory=hotspot http-cookie-lifetime=3d http-proxy=0.0.0.0:0 login-by=cookie,http-chap name=default rate-limit="" \
smtp-server=0.0.0.0 split-user-domain=no use-radius=no
add dns-name=hotspot.vialivre.net hotspot-address=172.16.10.1 html-directory=hotspot http-proxy=0.0.0.0:0 login-by=http-chap name=hsprof1 rate-limit="" smtp-server=0.0.0.0 \
split-user-domain=no use-radius=no
/ip hotspot
add address-pool=hs-pool-3 addresses-per-mac=2 disabled=no idle-timeout=5m interface=LAN keepalive-timeout=none name=hotspot1 profile=hsprof1
/ip hotspot user profile
set default idle-timeout=none keepalive-timeout=2m name=default shared-users=1 status-autorefresh=1m transparent-proxy=no
/ip hotspot service-port
set ftp disabled=no ports=21
/ip hotspot user
add disabled=no name=admin password=12345 profile=default
Também a configuração do webproxy, o qual, da mesma forma que o hotspot, segue apenas o setup básico, uma vez que o uso do mesmo se refere apenas a geração de logs.
Código :
/ip proxy
set always-from-cache=no cache-administrator=webmaster cache-hit-dscp=4 cache-on-disk=no enabled=yes max-cache-size=none max-client-connections=600 max-fresh-time=3d \
max-server-connections=600 parent-proxy=0.0.0.0 parent-proxy-port=0 port=8080 serialize-connections=yes src-address=0.0.0.0
Re: PCC, HotSpot e WebProxy no mesmo ROS.
Em seguida realizamos as configurações do firewall mangle, onde está o "segredo" do funcionamento do PCC com o HotSpot e o webproxy, juntos.
Código :
/ip firewall mangle
add action=accept chain=prerouting comment="Permite destino sem LB" disabled=no dst-address-list=SEM-LB
## Permite que pacotes com destino aos IPs e/ou blocos de IP, configurados em uma address list, chamada SEM-LB
## sejam encaminhados sempre pela rota padrão sem usar as políticas de rotas
add action=mark-connection chain=input comment="Marca ISPS - Entra por X sai por X" connection-state=new disabled=no in-interface=ISP-1 new-connection-mark=isp1_conn \
passthrough=yes
add action=mark-connection chain=input connection-state=new disabled=no in-interface=ISP-2 new-connection-mark=isp2_conn passthrough=yes
add action=mark-connection chain=input connection-state=new disabled=no in-interface=ISP-3 new-connection-mark=isp3_conn passthrough=yes
## Aqui as marcas de conexão são referentes a pacotes que entrem pela interface X devem ser marcados para quando
## no momento que retornarem, saiam pela mesma interface X.
add action=mark-connection chain=output comment="Previne remarcacao PCC por outro gateway" connection-state=new disabled=no new-connection-mark=isp1_conn out-interface=\
ISP-1 passthrough=yes per-connection-classifier=both-addresses:3/0
add action=mark-connection chain=output connection-state=new disabled=no new-connection-mark=isp2_conn out-interface=ISP-2 passthrough=yes per-connection-classifier=\
both-addresses:3/1
add action=mark-connection chain=output connection-state=new disabled=no new-connection-mark=isp3_conn out-interface=ISP-3 passthrough=yes per-connection-classifier=\
both-addresses:3/2
## Nas regras acima, realizamos a marcação das conexões para que as mesmas sejam balanceadas, usando o PCC, onde, no momento
## que sairem tenham os devidos "pesos" dos links distribuidos pelos vários links que possuímos.
Re: PCC, HotSpot e WebProxy no mesmo ROS.
Código :
add action=mark-connection chain=output comment="PCC para proxy" connection-state=new disabled=no dst-address=!172.16.10.0/24 new-connection-mark=isp1_conn passthrough=yes \
per-connection-classifier=both-addresses:3/0
add action=mark-connection chain=output connection-state=new disabled=no dst-address=!172.16.10.0/24 new-connection-mark=isp2_conn passthrough=yes \
per-connection-classifier=both-addresses:3/1
add action=mark-connection chain=output connection-state=new disabled=no dst-address=!172.16.10.0/24 new-connection-mark=isp3_conn passthrough=yes \
per-connection-classifier=both-addresses:3/2
## As regras acima definem as marcas de rotas, assim como os devidos pesos do PCC, na saida do roteador, exceto, para a rede local (LAN).
add action=mark-connection chain=output comment="LB para proxy" disabled=no dst-port=80 new-connection-mark=isp1_conn passthrough=yes per-connection-classifier=\
both-addresses:3/0 protocol=tcp
add action=mark-connection chain=output disabled=no dst-port=80 new-connection-mark=isp2_conn passthrough=yes per-connection-classifier=both-addresses:3/1 protocol=tcp
add action=mark-connection chain=output disabled=no dst-port=80 new-connection-mark=isp3_conn passthrough=yes per-connection-classifier=both-addresses:3/2 protocol=tcp
add action=accept chain=prerouting disabled=no dst-port=80 in-interface=LAN protocol=tcp
## Aqui está o "grande segredo" do funcionamento do webproxy e do PCC. Se não definirmos que os pacotes saindo do roteador
## com destino a porta 80 possuem suas referidas marcas de rota e definição dos pesos do PCC, os mesmos sempre sairão pela
## rota padrão, desta forma não usufruímos das políticas de rota e consequentemente dos links que possuímos.
## Além disso uma simples regra definindo que toda entrada pela LAN com destino a porta 80 tem aceite automático.
add action=mark-routing chain=output comment="ISPx to ISPx" connection-mark=isp1_conn disabled=no new-routing-mark=to_isp1 passthrough=yes
add action=mark-routing chain=output connection-mark=isp2_conn disabled=no new-routing-mark=to_isp2 passthrough=yes
add action=mark-routing chain=output connection-mark=isp3_conn disabled=no new-routing-mark=to_isp3 passthrough=yes
## Definição das marcas de rota, para utilizarmos em nossas políticas. Através destas regras teremos nossa tabela de rotas
## FIB funcionamdo da maneira adequada.