S'explica com s'aconsegueix tenir accés a internet compartit en una LAN si només es disposa d'un modem en un ordinador. La necessitat vé de disposar d'un portàtil amb accés wifi i voler evitar les molesties de moure el portàtil on hi hagués una línia de telèfon per tenir accés a internet.
Això ha estat possible gràcies a l'ajuda de l'Oriol.
Antecedents
Tenim un PII-350MHz amb una Debian Woody instal·lada. Aquest servidor Debian disposa de connexió a Internet mitjançant un modem extern connectat a un port serie.
Des d'aquest Linux es connecta a Internet executat la funció pppd call ISP que realitza una connexió utilitzant la informació del ISP que aporta l'ISP. Per tallar la connexió s'utilitza la instrucció killall pppd que elimina qualsevol connexió ppp.
També disposem d'un portàtil nou amb connexió wifi, el qual volem que pugui connectar-se a internet utilitzant el servidor Debian.
Modificacions
Per aconseguir la connexió a internet des del portàtil i des de qualsevol ordinador de la LAN hem instal·lat en el servidor Debian un servidor de telnet que ens permetrà via remota realitzar la connexió a internet.
Per poder connectar el portàtil via wifi amb el servidor Debian, s'ha instal·lat un AP wifi (Linksys WRT54G) que ens ofereix 4 ports LAN per poder conectar amb el servidor wifi.
Configuració Servidor Debian
Per permetre la connexió de la resta d'ordinadors de la LAN, hem d'activar la NAT. Això es farà mitjanaçant la instrucció iptables. Exactament amb la instrucció:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Si analitzem la instrucció tenim la opció -t nat que defineix el tipus de taula que es vol modificar. La opció -A POSTROUTING indica que s'afegirà una nova regla a la llista de postencaminament la qual modifica els paquets que surten. La opció -o ppp0 indica la interficie sobre la surten els paquest que s'aplicarà aquesta regla, en el nostre cas la interficie de connexió del modem. L'ultima de les opcions -j MASQUERADE indica el destí de la regla, el qual pot apuntar a una altra regla o a una extensió com tenim nosaltres, la extensió MASQUERADE s'utilitza només per assignar IPs dinàmicament en connexions telefòniques.
Ja tenim la nat configurada, ara toca donar permisos perquè el servidor Debian reenvii la informació rebuda des de la LAN per la interficie ppp0, en aquest cas em d'habilitar l'ip_forward. Això en una distribució Debian s'aconsegueix posant a 1 els fitxers següents:
/proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/conf/ppp0/forwarding
ho podem aconseguir executant:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/ppp0/forwarding
A partir d'aquí la connexió a Internet ja està compartida per a tota la LAN. Tingueu en compte que el fitxer /proc/sys/net/ipv4/conf/ppp0/forwarding no existeix fins que la connexió a internet està activa.
Automatitzar la configuració al connectar-me
Tot el que s'ha fet fins ara es molt ferragos de fer cada vegada que volguem realitzar una connexió a Internet des d'un ordinador de la LAN. Per això mirarem que la configuració estigui s'activi cada cop que ens connectem i anular-la al desconnectar-nos.
Per això crearem dos escripts, un per activar la configuració i l'altre per desactivar-la, i els col·locarem en els directoris /etc/ppp/ip-up.d i a /etc/ppp/ip-down.d, directoris on s'executen tots els seus fitxers cada cop que s'activa una connexió ppp i cada cop que s'elimina.
Els fitxer de configuració serà el següent:
#!/bin/sh
# Configura la nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Activa els permisos de NAT
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/ppp0/forwarding
El fitxer de final de connexió serà el següent:
#!/bin/sh
# Desconfigura la nat
iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
# Desactiva els permisos de NAT
echo 0 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/ppp0/forwarding
Conclusions
Ja tenim disponible connexió a Internet mitjançant modem per a tota la LAN utilitzant la NAT. Tanmateix encara s'ha d'obrir una connexió telnet per obrir la connexió, cosa que podria automatitzar-se però que tampoc és tant necessari.
Així que per tenir connexió a internet teclegem:
$ telnet ServidorDebian
$ login: nom_usuari
$ Password: codi_usuari
$ pppd call ISP
i per finalitzar
$ killall pppd
$ exit
Aquest document l'he aportat amb una connexió a Internet tal com he explicat.

