martedì 11 settembre 2007

certe notti...


stanotte non riesco a dormire... un po' per i residui di jet-lag, un po' per delle leggere fitte al ginocchio sinistro (mi duole sempre un ginocchio, se non entrambi, quando passo giornate di tensione), un po' per l'emozione di dover dimostrare domani a quei pagliacci dei nostri avversari che il Femialab (come lo chiamano) ha una sua dignità a calcetto!! :D

andiamo al motivo del post: tempo fa la mia ragazza mi aveva chiesto di installare linux sul suo pc fisso, un po' per la stanchezza di dover ricorrere sempre a mezzucci per continuare ad utilizzare decentemente windows, un po' perchè la macchina comincia ad accusare gli anni che passano. spinto dall'esperienza favorevole di casa mia, decido di installare SimplyMepis 6.0. Tutto bene se non fosse per il dannato modem USB: un Aethra Starmodem 1020 (se non sbaglio) con chipset ADI. nonostante i miei ripetuti sforzi, non c'è modo di risolvere la cosa (allora ero anche perfino più scarso di adesso, che sono ancora novellino). il risultato è la mia tristezza per il fallimento, e la cattiva impressione verso il pinguino della mia ragazza.

recentemente vengo a sapere che Mandrivia supporta nativamente tale modem, e vengo incuriosito dall'impennata di popolarità di PCLinuxOS. al ritorno dall'America, visto il vacillare ripetuto del pc fisso di cui sopra, mi ritrovo a sostituire Mepis con quest'ultima distribuzione. il risultato è ottimo: la connessione è totalmente indolore, e tutto sembra funzionare per bene. l'ultimo ostacolo è questo: la mia ragazza (che pure con i pc ci sa fare e si impegna non poco, quando vuole) aveva configurato la condivisione della connessione ADSL sul suo portatile tramite cavo ethernet fra i due WinXP. il tassello mancante è far sì che ora PcLinuxOS condivida la connessione verso il portatile XP. devo dire che nello splendido control center di tale distribuzione esiste già una voce atta proprio alla condivisione della connessione internet, ma tale voce non portava a termine la condivisione con successo quando ho tentato con la live (devo ancora riprovare dopo aver installato il sistema).

Intanto mi sono documentato, e come prima cosa ho guardato il wiki: la soluzione non calza a pennello, ma una lettura preliminare chiarisce un pochino le idee. sono andato alla ricerca sul forum della stessa distribuzione (che non vanta certo il numero di utenti di ubuntuforums, ma non si può avere tutto dalla vita). ho trovato un post molto interessante, più che altro per il fatto che i consigli che vengono dati sono abbastanza distro-indipendent, ossia mi sembrano riciclabili sulla maggior parte dei GNU/Linux esistenti. riporto qui la procedura per i posteri (e per me stesso e la mia dolce fida).


Why don't you just connect one PC to the Internet (ADSL), make a small 2pc private network with the ethernet card you bought and share the PC1 connection using iptables Source and Destination NAT? (Network Address Translation)

Do you have the 3 devices required? (1 adsl modem, 1 ethernet card for PC1, 1 ethernet card for PC2)

The scheme is like:
INTERNET <----> ADSL Modem <----> PC1 <-ethernet card 1-> <-ethernet card 2-> PC2 .
A pretty straightforward home network.

PCLinuxOS comes with iptables and nat support, iptables is even installed by default, so you will have to install no new apps.

Here is a full guide on how to set-up NAT (including how to configure your ethernet cards): (you save files in the console text editor nano by pressing Control + O, Enter)
1. Network setup.
a) You have an IP for the outside world (adsl). Make sure it's working and you have internet access on PC1. (There's no point sharing it if you don't have it Smiley.)

b) Configure your PC1 ethernet card. (don't use the PCLOS Control Center, it will automatically put non-existant DNS servers for your card and will cause drops in browsing. If you have configured it through the PPC before, open a Konsole; su; rm /etc/resolvconf/run/interface/ethX (where ethX is the device name of your card); resolvconf -u)
b.1 open Konsole
b.2 su
b.3 nano /etc/sysconfig/network-scripts/ifcfg-ethN (ethN = device of your eth card)
b.4 copy in the Konsole window

# Start below this line, SUBSTITUTE ethN WITH THE REAL DEVICE NAME
DEVICE=ethN
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
METRIC=10
MII_NOT_SUPPORTED=no
USERCTL=yes
RESOLV_MODS=yes
IPV6INIT=no
IPV6TO4INIT=no
# Stop above this line

Now run "ifdown ethN && ifup ethN", subsitute ethN with the real device name.

c) set up your PC2 network card in a similar fashion, you can do it through the graphical wizard this time.
IP: 192.168.0.2
Gateway: 192.168.0.1
DNS1: The real IP of your DNS (same as on PC1 adsl connection)
DNS2: as above (you may or may not have a second DNS server)
Select both Users are able to control this connection and Start at boot (+ tell it to start the connection immediately).

2. Set up NAT. (start Konsole)
2.1 su
2.2 nano /etc/sysctl.conf
2.3 put this line at the end of the file, if it doesn't already exist. If it exists, change it if needed so that it reads:
# Start below this line
# Enable IP(v4) Forwarding
net.ipv4.ip_forward = 1
# Stop above this line
2.4 sysctl -p
2.5 nano /etc/sysconfig/iptables
2.6 copy in the Konsole window:
a) # Start copying below this line if you have a static IP with your ADSL
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 192.168.0.2 -j DNAT --to-destination 192.168.0.2
-A POSTROUTING -s 192.168.0.2 -j SNAT --to-source 194.88.250.22
COMMIT
# End copying above this line if you have a static IP with your ADSL

b)
# Start copying below this line if you have a dynamic IP
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 192.168.0.2 -j DNAT --to-destination 192.168.0.2
-A POSTROUTING -s 192.168.0.2 -j MASQUERADE
COMMIT
# End copying above this line if you have a dynamic IP

2.7 service iptables restart


infine, in bocca al lupo all'amico Manlio che si è gettato nell'avventura di Ubuntu!! :D

UPDATE: aggiungo un'altra fonte per la condivisione della connessione (o MASQUERADING)...direttamente da Howto forge

0 Comments: