Come Aggiornare FreeBSD Usando Un Proxy (ITA)
È noto che per aggiornare aggiornare il sistema operativo, i ports e la documentazione, il team di FreeBSD abbia messo a disposizione il cvsup, una delle tante possibili evoluzioni del CVS (Code Versioning System). Fintanto che il nostro sistema ha la possibilità di accedere ad internet direttamente o tramite un NAT, nessun problema: in questo caso sarà sufficiente modificare il file make.conf o direttamente il supfile, per poi proseguire con la normale procedura d’aggiornamento.
Ma cosa succede se le condizioni appena citate vengono meno?”Basta” usare un proxy o un socks! Com’è buona norma, il sistemista di turno andrà a leggere la man page del comando cvsup e potrà trovare la prima dritta per risolvere il problema:
“Multiplexed mode can be used in conjunction with a SOCKS proxy server.
Simply run cvsup under the runsocks command and add @M3novm to the end of the
cvsup command line.”
runsocks, multiplexed, socks, proxy, @M3novm… tanti termini nuovi. Proviamo a fare un pò di chiarezza prima.
- proxy
- È un protocollo che permette ad un client di fare delle richieste ad un server, passando dal proxy; in questo caso quindi, il proxy sarà letteralmente un intermediario ed al server remoto le richieste arriveranno come se poste dal proxy e non dal client Generalmente un proxy capisce solo i protocolli HTTP, HTTPS ed FTP
- socks
- È un’estensione del concetto di proxy. Riesce a gestire tutti i protocolli, superando così la limitazione del proxy.
- runsocks
- È un comando che permette di incapsulare una conversazione client-server dentro un canale SOCKS
- @M3novm
- Il comando cvsup è scritto in M3 e questa è una direttiva di questo linguaggio, estendendo le funzionalità del comando
Cosa fare a questo punto?
Sarebbe stato troppo facile avere già a disposizione il comando runsocks nella distribuzione base del sistema operativo: sarà necessario quindi installare il pacchetto che contiene questo programma o qualcosa di analogo.
Due valide alternative sono:
- prtunnel
- tsocks
Entrambi i software sono facili da configurare, del resto, nel funzionamento di base sono necessarie solo due informazioni ed altre due opzionali: l’indirizzo IP e la porta del server proxy/socks ed eventualmente un’utenza ed una password qualora il server richieda una qualche forma di autenticazione.
tsocks
tsocks è il classico esempio di proxy trasparente, implementando una soluzione davvero elegante e poco invadente. Il pacchetto si compone essenzialmente di una libreria che viene caricata sfruttando la variabile d’ambiente LD_PRELOAD, in modo che il linker la carichi prima di ogni altra dipendenza.
prtunnel
prtunnel mette a disposizione due modalità di funzionamento: demone e one-shot; questo programma apre un socket in locale su una porta specificata dall’utente ed effettua un tunnel verso il socks server.
A questo punto, però, nel caso del cvsup sarà necessario modificare il supfile o il make.conf in modo che il SUP_HOST sia localhost. Nel caso in cui si stia aggiornando l’albero dei ports, subentra un secondo scoglio da superare: scelto il port da installare, make dovrà scaricare il pacchetto associato.
Questa volta il sistema utilizzerà il comando fetch per assolvere a questo compito; fetch permette di scaricare un file sia via HTTP che FTP, sia essa una pagina web che un file. fetch si appoggia su una libreria, libfetch che supporta nativamente il protocollo proxy/socks; a questo punto, individuato l’indirizzo e la porta del vostro server socks, usate le seguenti variabili d’ambiente:
FTP_PROXY indirizzo:porta del vostro proxy FTP_PASSIVE_MODE se impostata, esegue l’ftp passivo HTTP_PROXY indirizzo:port del vostro proxy
Esempio (prtunnel) In un terminale, eseguire:
# prtunnel -H ip_del_proxy -P porta_del_proxy 5999 cvsup.uk.freebsd.org 5999
In un secondo terminale, eseguire:
# echo SUPHOST=127.0.0.1 >> /etc/make.conf # cd /usr/src # make update