domingo, 20 de março de 2011

Solução de Contorno : Linux (iptables, dnsmasq) + 3G HTC Magic

    Neste final de semana meu ISP de banda larga (NET) está com problemas quanto a conexões com serviços da Microsoft e Google. Meu Gmail estava ruim, o Live Messenger caindo toda hora, Youtube impossível e pesquisa do Google demorando.
     Inicialmente pensei existir algo errado com meu roteador wireless, pois é um D-link antigo, bem, só por ser D-link eu já estava desconfiado (kkk):  rebootei, verifiquei os leases do DHCP, mudei o canal do wireless e nada de resolver.... Parti pra ignorância, abri o wireshark e comecei a analisar o tráfego; verifiquei retransmissão de TCP para os serviços que estavam estranhos. Busquei a intermitência por meio de ping e traceroute, inciando pelo router wireless, passando pelo cable modem, endereços da NET, Embratel e por fim os serviços que eu estava sentindo problemas, resultado: A intermitência só aparecia nos serviços externos. Liguei para a NET e fui informado que realmente existia um problema e que a previsão para a resolução era na madrugada de segunda-feira.
    Desejando acessar os serviços na noite de domingo, pensei em uma solução "geek" para essa indisponibilidade, utilizar o serviço de dados da TIM do celular como gateway da minha rede Wireless de casa. 

    Passo-á-passo:
  1. Desabilitei o DHCP do meu D-link;
  2. Pluguei o celular no netbook, como é um "android phone" é  Plug-and-Play, já aparece no Linux um interface USB0 com conectividade à internet;
  3. Com um cabo crossover, liguei a eth0 do netbook no roteador D-link;
  4. Subi um endereço na eth0:
    # ifconfig eth0 10.1.1.20 netmask 255.0.0.0
  5. Habilitei o roteamento no parâmetro do kernel e o NAT na usb0 via iptables:
    # echo "1" > /proc/sys/net/ipv4/ip_forward
    # iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
  6. Configurei o range do DHCP com o dnsmasq e ativei-o:
    # touch /etc/dnsmasq.conf
    # echo "dhcp-range=10.1.1.30,10.1.1.50,2h" >> /etc/dnsmasq.conf
    # echo "dhcp-option=3,10.1.1.20" >> /etc/dnsmasq.conf
    # dnsmasq
  7. Renovei os IPs nas estações e Pronto! :)


Em cima da TV pois é onde pega melhor o sinal do celular :P
    Quando a NET voltar a normalidade é só desligar tudo, habilitar o DHCP do D-link novamente e renovar os IPs das estações. 


OBS: Antes que me perguntem: Sim, eu poderia utilizar o celular direto no PC para navegar mas existem dois problemas: 

  1. O sinal da TIM aqui na minha região é fraco, só pegando "legal" na sala, que é onde fica meu "facilities entrance" :);
  2. Eu só resolveria a conectividade de uma estação, ficando as outras sem Orkut, Live messenger e Google (para muitos isso significa a falta completa de Internet, kkkk)

sábado, 12 de março de 2011

Alta Disponibilidade (HA) : Pfsense (CARP + PFsync)

    Quem vive a realidade de manter um Infraestrutura de TI com serviços importantes  que devem (ou pelo menos deveriam) estar sempre acessíveis,  Alta Disponibilidade em sistemas é primordial.
    Esta postagem tem o objetivo de demonstrar o recurso de Alta Disponibilidade presente no firewall Open Source Pfsense, que utiliza os recursos CARP e PFsync, funcionalidade do FreeBSD que é a base deste firewall. O modo de funcionamento deste HA cluster é Failover (Ativo-passivo), na indisponibilidade do nó "mestre" o nó "escravo" assume os IPs do Cluster e mantém as conexões ativas. A versão utilizada é a 1.2.3-Release, que é a versão estável neste momento.

Topologia utilizada
  
    Foi realizada uma instalação padrão do PFsense. As máquinas, por recomendação da funcionalidade,  necessitam de uma interface separada para a sincronização da tabela de estados. Assim, ficaram com três interfaces: Lan, Wan e Sync.
   A configuração da alta disponibilidade começa no menu "Firewall", na opção "Virtual IPs". Dentro da Aba "CARP Settings"  é configurado as opções do PFsync e a sincronização de configurações entre os Firewalls.



Configuração do master

      Prosseguindo a configuração do nó escravo.

CARP settings nó escravo

    Após este passo, toda a configuração é realizada no nó mestre (regras, nat, ips virtuais e etc) e automaticamente sincronizada com o nó escravo.
    Antes da criação dos IPs virtuais do Cluster, foi criada uma regra para a interface SYNC permitindo a livre comunicação (Firewall, Rules, aba SYNC).




   Prosseguindo com a criação dos Ips Virtuais para o Cluster (Firewall, Virtual Ips). O VHID deve ser único para cada grupo IPs Virtuais.

Configuração Ip Cluster LAN

Ips Virtuais do Cluster configurados.

    Realizado estes ajustes, foi modificado o modo de funcionamento do NAT para Manual Outbound NAT rule generation (Firewall, NAT, Outbound), e no campo translation colocado o IP virtual da WAN (10.1.1.15).


    Findo isto, o Cluter de Alta Disponibilidade já está funcionando. É possivel visualizar os estados de funcionamento das Interfaces Virtuais pelo Menu "Status", na opção "CARP (failover)".

CARP status mestre


CARP status escravo
    Finalizando, gravei um video demonstrando a funcionalidade em tempo real. É possivel perceber o momento da "virada" onde o nó escravo assume o IP virtual, bem como a continuidade do download sendo realizado e os gráficos do tráfego entre as máquinas.



Vídeo demonstrativo 





domingo, 24 de janeiro de 2010

Solução de filtragem de conteúdo para ambientes domésticos ou pequenos escritórios (SOHO)

    Esta solução foi concebida da necessidade de se realizar filtragem na navegação Web, em um ambiente que não dispõe ou é totalmente inviável a existência de um servidor ou solução de Firewall/Proxy.
Os passos serão os seguintes:
  • Criação de conta e configuração do OpenDNS;
  • Instalação do aplicativo para atualização do IP de Internet. Não usaremos o "OpenDNS Updater" fornecido pelo OpenDNS e sim o "Marcs Updater", por ser executado como serviço;
  • Configurações de DNS, no roteador ou nas estações dependendo do caso.
Entendendo o Ambiente e a solução

    Na maioria dos ambientes domésticos ou pequenos escritórios existe um modem (ADSL, Cabo, Rádio e etc), que provê o acesso a Internet , e um roteador, que compartilha a conexão com as estações. Pode-se também encontrar equipamentos que acumulam estas duas funções. Uma topologia de rede doméstica "rotineira":


    Nestes equipamentos, que trabalham como gateway de rede, encontra-se ativo o serviço de rede DHCP, para suprir as estações com as configurações de rede (ip, máscara de rede, gateway e dns). Eles também respondem as resoluções de nomes (DNS) para as estações da rede. Na maioria dos planos de acesso à internet domésticos o IP de Internet é dinâmico, a cada desconexão do modem é recebido um novo endereço IP.
    A proposta da solução é configurar o serviço do OpenDNS para bloquear sites que não sejam desejados. Esta solução funciona desde que utilizado os servidores de resolução de nomes do OpenDNS e que o IP de Internet da sua rede esteja sempre atualizado no OpenDNS para que os bloqueios específicos sejam executados.


Trabalhando com o OpenDNS

    O OpenDNS é um serviço gratuíto de resoluções de nomes (DNS) que visa rapidez nos pedidos de tradução de nomes e segurança bloqueando a resolução para sites nocivos. No modo "padrão", quando não é criado  cadastro no site  nem configurado a rede a ser trabalhada, ele somente irá bloquear domínios que estejam catalogados como sites de Malware/Phising/Botnet. Para isso basta somente configurar sua estação para resolver pelos servidores do OpenDNS (208.67.222.222 e 208.67.220.220). 
   Criando uma conta e configurando sua rede tem-se acesso a customização, uma delas, que será utilizada na solução, é a de bloqueio por categorias de sites, ativamente catalogados pelo OpenDNS. Bloqueando a categoria "social networking" bloqueia-se sites como orkut, facebook e etc, "Pornography" sites com pornografia, "P2P/File Sharing" sites com torrents e etc. Quais categorias bloquear ou não depende de cada ambiente.
    Para se criar uma conta gratuíta (OpenDNS Basic) acesse o site http://www.opendns.com/ , "create account", Sign UP no "OpenDNS Basic", preencha os formulários e confirme o e-mail cadastrado. Com as credenciais criadas, acesse o site novamente, realize o "Sign in" e estará na tela de administração da conta OpenDNS (OpenDNS Dashboard):



    A configuração se dá na aba "Settings", onde configura-se a rede (network) e quais os bloqueios que serão efetivados na mesma. Dentro da aba "Settings" clique em "Add this network", aparecerá uma janela perguntando um "friendly name" e um check box perguntando se o IP é Dinâmico. Escolha um nome para a rede (será usado depois no aplicativo para atualizar o IP) e mantenha selecionado o check box do IP dinâmico.



    Feito isso, clique no IP da sua rede para configurar os bloqueios. Existem níveis de bloqueios pré-fixados (Minimal, Low, Moderate, High) onde cada um deste difere na quantidade de categorias de bloqueio utilizadas.
  


    Pode-se também customizar o nível de bloqueio, escolhendo as categorias que serão bloqueadas:



Terminada a escolha das categorias, clique em "APPLY" para salvar e realize o "sign out" do OpenDNS.


Atualizando o IP dinâmico

    Por conta da deficiência do "OpenDNS Updater", em não rodar como serviço, é utilizado o "Marcs Updater". Ele tem toda a funcionalidade do aplicativo fornecido pelo OpenDNS e roda como serviço. Esta funcionalidade é desejada já que um serviço, quando instalado pelo administrador da máquina, fica indisponível para o usuário normal interrompê-lo, o que é muito desejado nesta situação, pois caso o IP não seja atualizado nos servidores do OpenDNS os bloqueios não serão realizados.
    O Download é feito na página http://updater.marc-hoersken.de/download.php , realize a instalação como administrador na máquina mais utilizada na rede, ou em todas. O aplicativo pede de infomação as credenciais do OpenDNS na instalação. Após instalado, ele reside no "tray" (barra ao lado do relógio):



    Adicione no "Network Label" o nome da sua rede. E opcionalmente, na aba "preferences", opção "System tray Autostart" escolha "enable for this user", desta forma o ícone do Updater só aparecerá para o usuário administrador da máquina.

Configurando os servidores DNS

    Nesta etapa a configuração pode ser realizada no modem/roteador ou nas estações, dependendo do ambiente. Configurando-se os servidores do OpenDNS no modem/roteador, poupa-se o trabalho de configuração nas estações. Em um ambiente onde esteja indisponível esta configuração direta no modem/roteador, a saída será a configuração nas estações. É necessário lembrar que  para o funcionamento da solução, as contas que outros usuários utilizam não devem ter permissão para alterar as configurações de rede, onde encontram-se os campos de configuração de DNS na estação. Em estações Windows, criando-se contas comuns para os usuários e mantendo uma conta administrador para manutenção a solução funcionará de forma eficiente.
    Escolhida a forma, adicione os servidores DNS do OpenDNS:

  • DNS primário: 208.67.222.222


  • DNS secundário: 208.67.220.220

Exemplo de configuração em estação Windows 7:



Exemplo de configuração em Modem ADSL:




Conclusão

    Findado estes passos, toda resolução de nomes para sites de Internet estarão sendo administradas pelo OpenDNS. Páginas que estiverem nas categorias bloqueadas serão substituídas por páginas informativas de bloqueio, que podem ser configuradas no "OpenDNS dashboard".
    Exemplo de Bloqueio:



    Embora não seja perfeita, pois usuários mais experientes ou que entendam mais o funcionamento da Internet podem burlar, a solução suprirá a necessidade da maioria dos casos onde o público alvo são usuários comuns. Impedindo, por exemplo, crianças de acessarem sites adultos ou funcionários gastarem tempo com redes sociais.