Avanti Indietro Indice

5. Problemi

Ci sono un po' di problemi e un po' di cose che possono andare male usando un documento semplice come questo, perché ci sono diversi casi particolari. La maggior parte di essi riguardano la configurazione degli apparati della rete interna e di quella esterna. Cercherò di rispondere alle persone che hanno dei problemi: segnalatemi cosa è andato male e aggiungerò dei link in questo documento, così le persone che hanno problemi riguardanti casi particolari possono avere una traccia per un aiuto. Contattatemi pure all'indirizzo pramsey@refractions.net.

5.1 ICQ non funziona

Alcune parti di ICQ funzionano bene con il masquerading. Altre parti non funzionano affatto. C'è un modulo ICQ beta, anche se in fase di sviluppo, che risolve alcuni dei problemi (ma non tutti) nel far girare ICQ con il masquerading. Il file README nel codice sorgente della distribuzione descrive come compilare il modulo. Una volta compilato ed installato, si digiti /sbin/modprobe ip_masq_icq.

5.2 Se si ha Caldera 2.X e non Red Hat 6.X

Bene, per prima cosa congratulazioni per la controtendenza! Seconda cosa, Nelson Gibbs (ngibbs@pacbell.net) invia buone notizie, perché molte di queste istruzioni saranno valide per Caldera. Ci sono alcuni cambiamenti importanti da tenere in conto, comunque:

  1. Una dichiarazione GATEWAY=xxx.xxx.xxx.xxx nei file /etc/sysconfig/network-scripts/ifcfg-eth0 ed eth1 per l'interfaccia (l'interfaccia locale usa un indirizzo IP remoto e l'interfaccia remota usa l'IP del gateway del provider).
  2. Ci si assicuri che lo script /etc/sysconfig/daemons/dhcpd segnali ROUTE_DEVICE come eth1 e non eth0.
  3. /etc/dhcpd.conf richiede una dichiarazione di sottorete per entrambe le interfacce (non sono completamente sicuro perché ho fatto la seconda dichiarazione: subnet 216.102.154.201 netmask 255.255.255.255 { } senza nessun'altra opzione ed il server DHCP ascolta e spedisce sulla eth0 e la eth1). Il server DHCP dà errore se è specificata una sola sottorete.
  4. Non aggiungere la route all'host 255.255.255.255, lo script /etc/rc.d/init.d/dhcpd che usa Caldera ha già risolto il problema. Assicurarsi di cambiare a eth1 tutti i riferimenti all'eth0 contenuti nello script.

5.3 Si vuole che una delle macchine interne funzioni come server Web

Una cosa da nulla! Comunque, si ha bisogno di un indirizzo IP statico affinché questa semplice serie di istruzioni funzioni. Nel caso di indirizzo IP dinamico, si avrà bisogno di qualche script in più per assicurarci che l'indirizzo IP sia aggiornato nei comandi di port forwarding quando l'indirizzo cambia.

Si ricordi che fare il forwarding di una porta esterna su una macchina interna rende la macchina "interna" meno "interna" di prima, ma può essere fatto in maniera trasparente e con una degradazione delle prestazioni praticamente nulla. Uno degli effetti collaterali del codice dell'IP masquerading nel kernel di Linux è l'abilità di fare alcuni giochetti divertenti con i pacchetti quando questi raggiungono lo strato network, e ipmasqadm ne trae vantaggio.

Per alcune ragioni ipmasqadm non è fornito con tutte le varianti di Red Hat e di Mandrake, quindi si dovrà probabilmente scaricarlo dal sito web del manutentore -- esiste un RPM ed anche il codice sorgente.

Una volta ottenuto l'RPM, lo si installi e si aggiungano le seguenti righe al file /etc/rc.d/rc.local:

/usr/sbin/ipmasqadm portfw -f   
/usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80  
 

Il primo comando svuota le regole del port forwarding ed il secondo comando aggiunge il forward dalla porta 80 dell'interfaccia esterna alla porta 80 della macchina interna che fa da web server. Si noti che l'indirizzo IP statico esterno va al posto di x.x.x.x e l'indirizzo IP dell'interfaccia della macchina interna va al posto di 192.168.1.x.

Adesso le richieste esterne per la porta 80 saranno redirette in modo trasparente alla porta 80 della macchina interna. Non si può testare questo meccanismo effettuando un telnet o connettendosi alla porta 80 del gateway da una delle macchine interne: il port forwarder serve solo le richieste che arrivano sull'interfaccia esterna.


Avanti Indietro Indice