sexta-feira, 31 de janeiro de 2014

OpenBSD: Link redundante

Vamos fazer um sistema bem simplificado com OpenBSD para trabalharmos com dois links.
O que vamos usar:

- Um computador com 3 placas de rede
- OpenBSD 4.9:  pode ser um mais novo, porém o que tenho como exemplo aqui é este.
- shell script: o responsável por verificar e tomar a atitude de mudar o link
- PF: para fazer NAT, nada de filtragens mirabolantes, bloqueios nem nada, isto fica para outro post.
- Dois servidores de DNS: podem ser os dois do google 8.8.8.8 e 8.8.4.4

O que não vamos usar:

- pfSync e CARP, será apenas um servidor, então não vamos ter redundância de firewall/hardware

Mãos à obra:

Cenário:

                                  /---LINK A
LAN----OpenBSD--
                                  \---LINK B


Interfaces de rede do OpenBSD:


REDE INTERFACE IP GW
LAN vr0 192.168.0.254 **************
LINK_A vr1 192.168.1.253 192.168.1.254
LINK_B vr2 192.168.2.253 192.168.2.254


Arquivos de configurações:

LAN:
cat /etc/hostname.vr0
inet 192.168.0.254 255.255.255.0 192.168.1.255

LINK_A:
cat /etc/hostname.vr1
inet 192.168.1.253 255.255.255.252 192.168.2.255
!route add -inet 8.8.8.8 192.168.1.254

LINK_B:
cat /etc/hostname.vr2
inet 192.168.2.253 255.255.255.252 192.168.2.253
!route add inet 8.8.4.4 192.168.2.254

Agora o script para checar a conexão, depois insira ele no cron:

cat /home/scripts/checa_conexao.sh

#!/bin/sh

checa_linkb='ping -c1 8.8.4.4'
checa_linka='ping -c1 8.8.8.8'

$checa_linka >/dev/null
if [ `echo $?` -ne 0 ]; then
        echo "Link A falhou"
        route delete default 192.168.1.254
        route add default 192.168.2.254
        echo "Alterada rota para Link B"
else
        gw=`netstat -rn | grep default | cut -f13 -d" "`
        if [ $gw == 192.168.2.254 ]; then
                route delete default 192.168.2.254
                route add default 192.168.1.254
                echo "Alterada rota para Link A"
        else
                exit 0
        fi
fi




Basico do /etc/pf.conf

lan0="vr0"
wan0="vr0"
wan1="vr1"

match out on $wan0 inet from $lan0 to any nat-to ($wan0)
match out on $wan1 inet from $lan0 to any nat-to ($wan1)


segunda-feira, 20 de janeiro de 2014

Alternativa ao no-ip ou dyndns



Site
https://www.dnsdynamic.org/

Cliente para FreeBSD:

# cd /usr/ports/dns/ddclient/ && make install clean

Arquivo de configuração:

Alterar as linhas login, password e a ultima, onde está meuhost.dnsdynamic.com para o host
que você criou no site, se voc&e compilar sem suporte a SSL, alterar a linha ssl=yes para ssl=no.

# cat ddclient.conf

daemon=60                               # check every 60 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root                       # mail failed 
                                        # update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support. 
                                        # Works with ssl-library

use=web, web=myip.dnsdynamic.com        # get ip from server.
server=www.dnsdynamic.org               # default server
login=user@gmail.com                    # default login
password=password                       # default password
server=www.dnsdynamic.org,              \
protocol=dyndns2                        \
meuhost.dnsdynamic.com

A grande vantagem, é que este dns dinâmico não te limita a um numero pequeno de contas, e não fica expirando como o no-ip.