intentaré explicar com configurar les interfícies de xarxa quan ho fem des de terminal, ja que dóna molta més potència gràcies a que tenim un control molt més acurat de tots els paràmetres que s'utilitzen per configurar les interfícies
fem un repàs a les ordres de les que disposem i com redactar el fitxer de configuració ;)
el document s'estructura de la següent manera:
- què és una interfície
- configuració mitjançant línia d'ordres
- - DHCP
- - - cable
- - - wi-fi
- - ip estàtica
- - - cable
- - - wi-fi
- configuració mitjançant fitxers de configuració
- - DHCP
- - - cable
- - - wi-fi
- - ip estàtica
- - - cable
- - - wi-fi
- apèndixs
- - dns a les interfícies
- - scripts per a les interfícies
- - múltiples interfícies
- - claus per a les interfícies wi-fi
- - - línia d'ordres
- - - fitxer de configuració
- - aixecar i abaixar interfícies
- - donar noms a les xarxes
- MANs
una interfície en el món dels unix en general és una instància d'un maquinari que et permet interconnectar màquines, ja sigui a través de cable de xarxa, wi-fi, fibra òptica o qualsevol altre medi
és allò que configures que te ip, porta d'enllaç i totes aquestes coses ;)
s'acaba de dir que és «una instància», això vol dir a que no és la representació directe del maquinari, el qual permet (entre altres coses) poder definir més d'una interfície sobre el mateix dispositiu (al final s'explica com)
les primeres nocions de terminal:
ifconfig # ens mostra les interfícies que ja estan configurades ifconfig -a # ens mostra totes les interfícies de les que disposa la nostra màquina ifconfig interfície # ens mostra només la interfície que li diem
tot seguit veurem com es configuren les interfícies, tan de cable com de wi-fi, amb dhcp com amb ip estàtica
si ho volem fer per línia d'ordres, és molt senzill, vegeu els exemples:
el dhcp, com ja deveu saber, és el mètode pel qual una màquina demana a la xarxa quina configuració ha de tenir per poder connectar-se a aquesta xarxa, de manera que si estem en una xarxa que en desconeixem la seva configuració no tindrem cap problema per poder-hi accedir, ja que el dhcp obtindrà les dades que necessitem
l'eina que farem servir pel cable de xarxa és el dhclient i juntament amb l'iwconfig configurarem les interfícies wi-fi
la combinació cable i dhcp és la més senzilla de totes, només us cal escriure:
dhclient interfície
la combinació wi-fi i dhcp només te una petita complicació, però igualment és molt senzill:
iwconfig interfície essid "senyal essid" dhclient interfície
i llestos, amb això ja tenim tan en wi-fi com en cable la interfície correctament configurada, ja sabeu com ho hauríeu de fer per mirar quins valors ens ha donat oi? -- sinó mireu el primer apartat de tots ;)
si estem de sort i coneixem les dades de la xarxa, podem assignar-nos nosaltres mateixos les dades de la interfície, així de pas podem saber exactament com volem connectar-nos a la xarxa, ja sigui perquè volem tenir una ip en concret o perquè la xarxa no disposa de cap servidor de dhcp que ens pugui donar les dades de la xarxa
disposem de dues ordres bàsiques, l'ifconfig i el iwconfig, les mateixes ordres ja ens diuen que amb la primera es configuren les interfícies de cable i amb les dues juntes configurarem les interfícies wi-fi
la sintaxi del ifconfig, quan configurem interfícies, és una cosa a l'estil:
ifconfig interfície ip [paràmetre valor] up/down
alguns exemples:
ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up ifconfig eth1 down
amb la primera aixequem (up) una interfície i li passem els dos únics paràmetres que són imprescindibles: la ip i la màscara
amb el segon abaixem (down) una interfície
NOTA: aixecar una interfície vol dir que està configurada i apunt per funcionar i abaixar-la significa que la desconfigures i que deixarà de funcionar
com ja s'ha dit, els dos únics paràmetres imprescindibles són la ip i la màscara, la resta són opcionals, i entre les més importants hi ha:
o sigui un exemple més complet podria ser:
ifconfig eth2 172.25.4.234 netmask 255.255.255.0 gateway 172.25.4.13 hwaddress 01:23:45:67:89:AB broadcast 172.25.4.89 up
els paràmetres que no s'especifiquen, o bé s'agafen de la configuració per defecte (com l'adreça mac que s'agafa directament del maquinari), o bé, es decideix segons els paràmetres donats (com la porta d'enllaç o la ip de difusió)
la sintaxi del iwconfig és calcada a la del ifconfig, només que els paràmetres que farem servir són diferents
entre els paràmetres més importants que es poden fer servir són:
NOTA: el paràmetre essid és l'únic imprescindible
un exemple senzill
iwconfig eth1 essid guifi.net-Mont-rodonGilMalla ifconfig eth1 ...(EXACTAMENT la mateixa sintaxi que en el cas del cable)
i un amb més paràmetres
iwconfig eth1 essid guifi.net-Mont-rodonGilMalla mode Ad-Hoc channel 6 rate 11M txpower auto key [3] 0123-4567-89 ifconfig eth1 ...(EXACTAMENT la mateixa sintaxi que en el cas del cable)
com veieu, tot dependrà de la complexitat de la xarxa on us vulgueu connectar, o de les ganes d'afinar la configuració que desitjeu vosaltres mateixos
un cop posats els paràmetres imprescindibles, ja depèn de cadascú de definir els altres paràmetres o deixar que el propi nucli sigui l'encarregat de decidir-los
el problema que tenim si configurem les interfícies mitjançant la línia d'ordres és que la configuració no es desa d'una engegada per l'altra, i que per tan, a la que reiniciem la màquina tindrem de tornar a configurar-ho de nou, en canvi si ho fem per fitxers de configuració cada vegada que engeguem el dispositiu tindrà sempre la configuració que hi hagi als fitxers
per altre banda també ens va bé que sigui així: si hem de fer un canvi que només serà per un moment ho podem fer per línia d'ordres, d'aquesta manera la configuració que fem servir en el dia a dia la podem tenir en els fitxers de configuració i pels casos especials o en moments concrets que necessitem un altre tipus de configuració ho podem fer en un moment des de la línia d'ordres sense haver de tocar la configuració de sempre
cal destacar que no tindreu d'aprendre pràcticament res de nou, si ja sabeu fer servir l'ifconfig i el iwconfig
només us caldrà canviar una mica la sintaxi i ja tindreu unes interfícies de xarxa perfectament definides als fitxers de configuració
NOTA: en debian, ubuntu i tots els seus derivats el fitxer de configuració és al fitxer /etc/network/interfaces, en altres distribucions pot ser un altre fitxer, tot i així la sintaxi del fitxer és EXACTAMENT la mateixa per a totes les configuracions per cable i pot canviar lleugerament pels paràmetres de wi-fi (mireu els man i la documentació per assegurar-ho)
NOTA 2: si feu servir gentoo teniu una guia completa, a gentoo fan servir uns fitxers i una sintaxi força diferent de l'explicada aquí
per configurar les interfícies per dhcp és, evidentment, la manera més senzilla, vegem-ho:
amb una línia de configuració en tenim prou:
## fitxer de configuració # totes les línies començades per # són comentaris iface eth0 inet dhcp auto eth0
no critiqueu tan ràpid, és veritat, hi ha dues línies, però la segona no ens està configurant en cap sentit la interfície eht0, més endavant s'explica què vol dir, seguiu llegint :)
per wi-fi com de costum l'única complexitat afegida és definir els paràmetres de wi-fi, vegem-ho:
## fitxer de configuració # totes les línies començades per # són comentaris iface eth1 inet dhcp wireless-essid guifi.net-Mont-rodonGil auto eth1
i així ja ho tenim tot configurat, la sintaxi del fitxer de configuració la veurem tot seguit amb les configuracions amb ip estàtica
un cop ja hem vist la manera ràpida de fer-ho amb dhcp, ara podem mirar-ho amb més profunditat i entendre -- part de la immensa -- sintaxi que hi ha darrere del fitxer de configuració de les interfícies
recordeu la sintaxi de la configuració per dhcp amb fitxer de configuració oi?
doncs amb allò el que fem és dir-li que la interfície farà servir un esquema de configuració de Internet (ipv4 per entendre'ns) i que obtindrà la configuració per dhcp
finalment en la segona línia el que li estem dient és que volem que la interfície s'engegi quan s'engegui la màquina, si volguéssim tenir-la configurada però que no activa al engegar-se només ens caldria esborrar la segona línia
els paràmetres que pot rebre cada interfície poden anar un paràmetre a cada línia a sota de la definició iface, o bé, totes en la mateixa línia tal com ho escriuríem si fossin paràmetres de la línia d'ordres, però evidentment, queda molt més estructurat i llegible si els anem posant a l'estil:
iface interfície inet static paràmetre1 valor paràmetre2 valor paràmetre3 valor paràmetre4 valor
anem a veure com funcionen els fitxers de configuració:
amb iface comencem la definició d'una interfície (que va a continuació de iface), seguidament li diem quina família d'adreces farà servir:
finalment per acabar la línia de definició de la interfície li hem de dir quin mètode farem servir per configurar la interfície
NOTA: els paràmetres amb un * és que són obligatoris per a aquell tipus de mètode
esquema de la taula:
| família d'adreces | ||
|---|---|---|
| mètode | explicació del mètode | paràmetres |
la taula:
| inet | ||
|---|---|---|
| loopback | per definir la interfície de loopback | (aquest mètode no te opcions) |
| dhcp | per obtenir la ip des d'un servidor de dhcp |
|
| static | per definir manualment la interfície |
|
| inet6 | ||
| loopback | per definir la interfície de loopback | (aquest mètode no te opcions) |
| static | per definir manualment la interfície |
|
NOTES:
per saber-ne més mireu els man ;)
un exemple més complet seria de l'estil:
## fitxer de configuració més complex iface eth0 inet static address 10.138.112.163 netmask 255.255.255.224 broadcast 10.138.112.191 gateway 10.138.112.161 hwaddress ether 00:16:B6:98:A5:C1 auto eth0
al igual com quan configuràvem les interfícies manualment des de la línia d'ordres, l'única diferència que tenim amb el cable, és que apart de la definició de la xarxa tal com ho faríem per cable hi hem de posar els paràmetres que vulguem relacionats amb el wi-fi (l'únic imprescindible és el SSID)
exemple senzill:
## fitxer de configuració d'una interfície wi-fi iface eth0 inet static address 10.138.112.163 netmask 255.255.255.224 network: 10.138.112.160 wireless-essid guifi.net-MontrodonGil auto eth0
com podeu veure l'únic canvi respecte el cable és el wireless-paràmetre que és la manera genèrica com es defineixen els paràmetres per wi-fi
per saber quins paràmetres podem fer servir només ens cal mirar quins paràmetres ens permet utilitzar la utilitat de línia d'ordres iwconfig, la coneixeu oi? ;)
un llistat ràpid de les opcions:
NOTA:hi ha més opcions que les llistades aquí, consulteu el man del iwconfig
un exemple amb una mica més de «xixa»:
## fitxer de configuració d'una interfície wi-fi amb força paràmetres iface eth0 inet static address 10.138.112.163 netmask 255.255.255.224 network: 10.138.112.160 wireless-essid guifi.net-MontrodonGil wireless-channel 4 wireless-rate 54M wireless-sens -80 wireless-key off auto eth0
i amb això ja hem acabat, el més còmode serà que, o bé, feu proves per anar comprovant si tot el que he dit és veritat (i en cas de que sigui mentida aviseu o ho corregiu directament!), o bé, us deseu l'enllaç per quan necessiteu configurar quelcom tenir-ho a mà per fer-ho servir de guia (si és que ho trobeu útil clar)
així que us deixo amb els apèndixs, vàries coses a mode d'ampliació
per acabar us deixo els man's que he fet servir per crear aquest text
petita secció amb quatre coses més perquè vegeu que amb linux + imaginació l'únic que us atura de fer coses increïbles és el temps que hi pugueu dedicar ;)
no us ha passat mai que teniu diferents interfícies de xarxa i que, per algun estrany motiu no voleu que totes les interfícies vagin a resoldre els dominis en els mateixos dns? què podeu fer en aquest cas?
dons molt senzill, editeu el vostre fitxer de configuració de les interfícies i a cada interfície podeu posar-hi la següent opció:
## fitxer de configuració amb dns a les interfícies iface eth0 inet static address 10.138.112.161 netmask 255.255.255.224 network 10.138.112.160 dns-search guifi.net dns-nameservers 10.138.25.68 10.138.96.3
ara ja tenim dns específics per a cada interfície :)
si amb totes les opcions que us permet el fitxer de configuració no en teniu prou (ja sabeu, la gent és insaciable) podeu definir sis scripts per a cada interfície (com un paràmetre més):
pre-up ordre # s'executarà abans de que la interfície s'aixequi up ordre # s'executarà per aixecar la interfície post-up ordre # s'executarà després que la interfície s'aixequi pre-down ordre # s'executarà abans que la interfície s'abaixi down ordre # s'executarà per abaixar la interfície post-down ordre # s'executarà després que la interfície s'abaixi
si amb això encara no n'hi ha prou (almenys a debian i derivats) hi ha un directori per a cada script de l'estil:
/etc/network/if-<script>.d/
on a dintre de cada directori hi podeu posar tants scripts com vulgueu que s'executaran després de l'ordre que poseu a els pre*, post*, up i down
la limitació que tenen és que no poden rebre arguments però poden llegir un seguit de variables que si us interessa mireu el man de interfaces, que sinó com que són opcions molt avançades i realment les deuen fer servir 4 persones en tot el món tampoc val la pena explicar-ho amb tot detall, però almenys ara ja ho sabreu ;)
no us ha passat mai, que per exemple heu de connectar amb un router que no sabeu quina xarxa te configurada per la LAN i que no dóna dhcp, què feu normalment? anar a configurar la interfície i fer pings, tornar a configurar la interfície i tornar a fer pings, i així fins que encerteu la ip del router, oi?
doncs amb linux el que podeu fer és el següent:
ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up ifconfig eth0:0 192.168.11.2 netmask 255.255.255.0 up ifconfig eth0:4 10.138.112.164 netmask 255.255.255.224 up
i amb això ja teniu 3 interfícies de xarxa configurades que surten per la mateixa connexió física, així per exemple un cop teniu configurades totes les interfícies ja podríeu començar a fer pings a tort i a dret per encertar la ip del router
tingueu en compte que podeu definir dues interfícies que facin servir la mateixa xarxa, o altres coses més barroques
no sempre tenim la sort d'estar a guifi i per tan no haver-nos de preocupar el més mínim per si la connexió wi-fi està encriptada, o sigui que aquí un petit resum de què s'ha de fer per configurar-ho
com que s'ha anat fent des de línia d'ordres i des de fitxer de configuració aquí també ho farem, no caldrà preocupar-se per com s'obté la ip ja que en tots els casos es fa de la mateixa manera
haurem d'afegir a la línia de l'iwconfig:
iwconfig eth1 key xxxx-xxxx-xxxx-xxxx # així definim la clau iwconfig eth1 key [1] xxxx-xxx-xxxx-xxxx # així definim la clau nº1 iwconfig eth1 key xxxx-xxx-xxxx-xxxx [1] # és exactament el mateix que la línia de sobre iwconfig eth1 key [4] # ara canviem la clau per la nº4 les dues línies de sobre només # defineixen la clau no fan que sigui la que s'utilitzi a partir d'aquell moment iwconfig eth1key s:UnTextAscii # per si la clau és en ASCII iwconfig eth1 key open # per dir que no hi ha clau iwconfig eth1 key restricted 0123456789 # definim el mode de seguretat amb encriptació i la clau que farem servir-hi iwconfig eth1 key [0] xxxx-xxxx-xxxx-xxxx key [1] yyyy-yyyy-yyyy-yyyy key [0] # aquí definim dues claus i diem que farem servir la nº0 iwconfig eth1 key [0] xxxx-xxxx-xxxx-xxxx key [1] yyyy-yyyy-yyyy-yyyy key [0] key [1] # com que diem dues vegades quina clau volem utilitzar la parella paràmetre:valor «key [0]» és ignorat perquè «key [1]» la sobreescriu
amb això diria que en tindreu prou i de sobre per anar remenant amb claus encriptades ;) sinó el man us ajudarà més que jo :)
per fer exactament el mateix que a sobre faríem:
## fitxer de configuració d'una interfície wi-fi amb encriptació iface eth1 net static wirelesss-key xxxx-xxxx-xxxx-xxxx wirelesss-key [1] xxxx-xxx-xxxx-xxxx wirelesss-key xxxx-xxx-xxxx-xxxx [1] wirelesss-key [4] wirelesss-key s:UnTextAscii wirelesss-key open wirelesss-key restricted 0123456789 wirelesss-key [0] xxxx-xxxx-xxxx-xxxx wirelesss-key [1] 0123456789 wirelesss-key [0] wirelesss-key [0] xxxx-xxxx-xxxx-xxxx wirelesss-key [1] 0123456789 wirelesss-key [0] wirelesss-key [1]
diria que no canvia massa oi? ;)
com que la qualitat d'un programador és proporcional a lo manta que és i escriure
ifconfig eth1 down ifconfig eth1 up
és molt llarg, hi ha un parell d'ordres que ho fan més ràpid:
ifup eth1 ifdown eth1
i amb això ja aixequem i abaixem les interfícies ;)
només falta aclarir que això funcionarà sobre les interfícies que tinguin a /etc/network/interfaces la línia
auto interfície
una opció que també ens dóna el linux és la de poder donar noms a les xarxes, en debian (i derivats) podem fer-ho al fitxer /etc/networks, on la sintaxi és de lo més simple:
nom1 xarxa1 [alies1] [alies2] nom2 xarxa2 [alies1] [alies2]
tot i així no és una opció gaire útil, ja que només permet definir-ho per a xarxes de classe A, B o C, per tan totes les subxarxes que no siguin d'aquest ordre no es poden definir
per fi s'ha acabat!! :D
però això no vol dir que no es pugui fer res més ... es pot fer MOLT més, tot es qüestió de mirar-se els man's i tenir ganes de fer coses, la imaginació és la única limitació ;)
man's que he fet servir:
ifconfig ( 8 )
iwconfig ( 8 )
interfaces ( 5 )
wireless ( 7 )
ifup ( 8 ) (és el mateix per a ifdown)
Comentaris
IP dinàmica i /etc/resolv.conf
Un bon article, Gil.
Només m'agradaria afegir que els que tenim IP dinàmica tenim el problema que cada vegada que es renova (la IP), es modifica el contingut de l'arxiu /etc/resolv.conf (i ens fot per l'aire l'ús del nostre servidor (servidors) de noms preferit). Ja que així està configurat per defecte a l'arxiu de configuració del client de DHCP. Perquè no passi hem de modificar l'arxiu /etc/dhcp3/dhclient.conf canviant els paràmetres pels que toquin en cada cas:
-------------------------------------- /etc/dhcp3/dhclient.conf ----------------------------------------------
...
...
#send host-name "andare.fugue.com";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name "cambrilswireless.net";
supersede domain-name-servers 127.0.0.1, 10.36.128.2, 10.138.33.130;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
host-name, # també s'han borrat dos paràmetres aquí
netbios-name-servers, netbios-scope;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;
...
...
----------------------------------------------------------------------------------------------------------------------
Recordeu de reiniciar la xarxa: $sudo /etc/init.d/networking restart
document
no ho deixis com un simple comentari, aquesta aportació mereix un document perquè sigui més fàcil trobar-lo en un altre moment
merci per l'aportació!