6.6. Configurando Clientes para o CIPE

Após configurar o servidor CIPE apropriadamente e testar as funcionalidades, você pode extender a conexão para a máquina cliente.

O cliente CIPE deve poder conectar e desconectar a conexão CIPE de maneira automatizada. Consequentemente, CIPE contém mecanismos próprios para personalizar configurações para usos individuais. Por exemplo: um funcionário remoto pode conectar-se a um dispositivo CIPE na LAN digitando o seguinte:

/sbin/ifup cipcb0

O dispositivo deve aparecer automaticamente. As informações de roteamento e regras de firewall também devem ser configuradas ao longo da conexão. O funcionário remoto deve poder terminar a conexão com o seguinte:

/sbin/ifdown cipcb0

Configurar clientes requer a criação de scripts localizados que são executados após o dispositivo ser carregado. A configuração do dispositivo pode ser feita localmente através de um arquivo, criado pelo usuário, chamado /etc/sysconfig/network-scripts/ifcfg-cipcb0. Este arquivo contém parâmetros que determinam se a conexão CIPE ocorre no momento de ligar a máquina (boot-time), o nome do dispositivo do CIPE, entre outras informações. Veja a seguir o arquivo ifcfg-cipcb0 para um cliente remoto conectando a um servidor CIPE:

DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=

# We need to use internal DNS when connected via cipe. 
DNS=192.168.1.254

O dispositivo do CIPE é chamado cipcb0. Este dispositivo é carregado no momento de inicializar (configurado através do campo ONBOOT) e não utiliza um protocolo boot (DHCP, por exemplo) para receber um endereço IP para o dispositivo. O campo PEERROUTEDEV determina o nome do dispositivo do servidor CIPE que conecta ao cliente. Se não for especificado nenhum dispositivo neste campo, algum será determinado após o dispositivo ser carregado.

Se suas redes internas estiverem atrás de um firewall, defina regras para permitir que a interface CIPE na máquina do cliente envie e receba pacotes UDP. Consulte o Capítulo 7 para informações sobre a configuração do firewall. Neste exemplo de configuração, as regras iptables são implementadas.

NotaNota
 

Clientes devem ser configurados de maneira que todos os parâmetros locais sejam inseridos em um arquivo, criado pelo usuário, chamado /etc/cipe/ip-up.local. Os parâmetros locais devem ser revertidos quando a sessão CIPE for finalizada, usando o /etc/cipe/ip-down.local.

Firewalls devem ser configurados nas máquinas cliente para aceitar pacotes CIPE UDP encapsulados. As regras podem variar amplamente, mas a aceitação trivial de pacotes UDP é necessária para a conectividade do CIPE. As regras seguintes permitem transmissões UDP CIPE na máquina do cliente remoto conectando à LAN. A regra final adiciona o 'mascaramento' do IP para permitir que o cliente remoto se comunique à LAN e à Internet.

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.1
/sbin/iptables -A INPUT -j ACCEPT -i cipcb0
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Adicione regras de roteamento para que a máquina cliente acesse os nódulos por trás da conexão CIPE como se estivessem na rede local. Isto pode ser feito rodando o comando route. Neste exemplo, a estação de trabalho do cliente precisa ter a seguinte rota de rede:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

Veja a seguir o script final /etc/cipe/ip-up.local para a estação de trabalho do cliente:

#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
        . /etc/sysconfig/network-scripts/ifcfg-$1
else
        cat <<EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
        exit 1
fi

if [ -n ${PEERROUTEDEV} ]; then
        cat <<EOT | logger
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
        # Use routing table to determine peer gateway
        export PEERROUTEDEV=`/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
           | awk '{ print $NF }'`

fi

####################################################
# Add The routes for the remote local area network #
####################################################

route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

####################################################
# IP TABLES Rules to restrict traffic              #
####################################################

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.2
/sbin/iptables -A INPUT -j ACCEPT -i $1
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE