6.6. Configurazione dei client per CIPE

Dopo aver configurato e provato con successo la funzionalità del server CIPE, potrete ora impiegare il collegamento con la macchina del client.

Il client CIPE dovrebbe essere in grado di collegare e scollegare il collegamento CIPE in modo automatico. Per questo motivo, CIPE contiene un meccanismo interno per personalizzare le impostazioni per utenti individuali. Per esempio, un dipendente remoto può collegarsi al dispositivo CIPE su di una LAN digitando quanto segue:

/sbin/ifup cipcb0

Il dispositivo dovrebbe comparire automaticamente, le regole del firewall e le informazioni di direzionamento dovrebbero essere configurate insieme al collegamento. Il dipendente remoto dovrebbe essere in grado di terminare il collegamento tramite il seguente:

/sbin/ifdown cipcb0

La configurazione dei client richiede la creazione di script localizzati, eseguiti dopo il caricamento del dispositivo. La configurazione del dispositivo di per sè, può essere configurata in modo locale tramite un file creato dall'utente chiamato /etc/sysconfig/network-scripts/ifcfg-cipcb0. Questo file contiene alcuni parametri che determinano se il collegamento CIPE avviene al momento dell'avvio, il nome del dispositivo CIPE, e altro. Il seguente rappresenta il file ifcfg-cipcb0 per un client remoto che si collega ad un server 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

Il dispositivo CIPE è chiamato cipcb0. Esso sarà caricato al momento dell'avvio (configurato tramite il campo ONBOOT) e non usa il protocollo di avvio (per esempio, DHCP) per ricevere un indirizzo IP per il dispositivo. Il campo PEERROUTEDEV determina il nome del dispositivo del server CIPE che si collega al client. Se nessun dispositivo viene specificato in questo campo, ne verrà scelto uno dopo che il dispositivo stesso sarà stato caricato.

Se le reti interne sono posizionate dietro un firewall, avrete bisogno di impostare delle regole per permettere all'interfaccia CIPE su di una macchina del client, di inviare e ricevere pacchetti UDP. Per informazioni sulla configurazione di un firewall consultate Capitolo 7. Per questo esempio di configurazione, sono implementate le regole iptables.

NotaNota
 

I client dovrebbero essere configurati in modo tale che tutti i parametri localizzati sono posizionati in un file creato dall'utente, chiamato /etc/cipe/ip-up.local. I parametri locali dovrebbero essere ritornati, quando la sessione CIPE viene chiusa usando il file /etc/cipe/ip-down.local.

I firewall dovrebbero essere configurati sulle macchine del client in modo tale da poter accettare i pacchetti CIPE UDP. Le regole possono variare, ma è richiesta l'accettazione di base di UDP per il collegamento CIPE. Le seguenti regole iptables abilitano le trasmissioni UDP CIPE sulla macchina client remota, al collegamento con la LAN; la regola finale aggiunge il Masquerading IP, in modo tale da abilitare il client remoto alla comunicazione con LAN e con 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

È necessario aggiungere delle regole al percorso per la macchina del client, in modo da poter accedere ai nodi con il collegamento CIPE come se essi fossero su di una rete locale. Ciò può essere effettuato eseguendo il comando route. Per esempio, la workstation del client ha bisogno di aggiungere il seguente itinerario della rete:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

Quanto segue mostra lo script finale /etc/cipe/ip-up.local per la workstation del client:

#!/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