Inici de sessió d'usuari


configurar les interfícies de linux des del terminal


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



què és una interfície?


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



mitjançant línia d'ordres


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:


DHCP


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

cable

la combinació cable i dhcp és la més senzilla de totes, només us cal escriure:

dhclient interfície


wi-fi

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 ;)


ip estàtica


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


cable

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:

  • broadcast: la ip de broadcast
  • gateway: la ip de la porta d'enllaç
  • hwaddress: l'adreça mac de la interfície

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ó)


wi-fi

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:

  • essid: la senyal (SSID) a la que ens volem connectar
  • mode: en quin mode volem treballar
  • freq i channel: pots especificar quin canal o la la freqüència de la senyal
  • ap: per forçar la connexió amb un AP en concret (funciona a través de la MAC)
  • key: per si és una senyal encriptada (permet molt més que simplement especificar una clau)

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



mitjançant fitxers de configuració



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í


DHCP

per configurar les interfícies per dhcp és, evidentment, la manera més senzilla, vegem-ho:

cable

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 :)


wi-fi

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


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

cable

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:

  • inet: pels amics és el protocol de Internet de tota la vida, o sigui ipv4
  • inet6: pel protocol ipv6
  • ipx: un altre tipus de protocol

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
  • hostname: perquè el servidor de dns local sàpiga quin nom teniu a la xarxa (i no haver d'apuntar la ip)
  • leasetime: el temps (en segons) amb el que voleu tenir la mateixa ip
  • vendor: identificador del venedor
  • client: identificador del client
  • hwaddress: MAC que vols que tingui la interfície
static per definir manualment la interfície
  • address*: adreça ipv4 (a l'estil 192.168.15.34)
  • netmask*: màscara de la xarxa (a l'estil 255.255.0.0)
  • network*: ip base de la xarxa (seguint l'exemple seria 192.268.0.0)
  • broadcast: ip de difusió de la xarxa (seguint l'exemple seria 192.168.255.255)
  • gateway: porta d'enllaç per defecte (per exemple podria ser 192.168.19.89)
  • metric: mètrica per a la porta d'enllaç per defecte
  • pointopoint: adreça d'un altre punt final (per exemple 192.168.34.178)
  • media: tipus de medi, depèn del driver
  • hwaddress: adreça MAC de la interfície (exemple hwaddress ether/ax25/ARCnet/netrom 01:23:45:67:89:AB
  • mtu: mida del mtu
inet6
loopback per definir la interfície de loopback (aquest mètode no te opcions)
static per definir manualment la interfície
  • address*: adreça ipv6 de la interfície
  • netmask*: màscara de la interfície (nº de bits)
  • gateway: adreça de la porta d'enllaç
  • media: tipus de medi, depèn del driver
  • hwaddress: adreça MAC de la interfície (exemple hwaddress ether/ax25/ARCnet/netrom 01:23:45:67:89:AB
  • mtu: mida del mtu



NOTES:

  • hi ha més mètodes per a inet, però els altres o són antics o molt poc comuns
  • els mètodes per a ipx, com que la mateixa família és molt poc comuna tampoc els detallaré, mireu el man si els necessiteu saber
  • hi ha altres mètodes per a inet6 però tampoc són molt comuns, noteu també que no hi ha dhcp amb ipv6

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


wi-fi

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:

  • wireless-essid*: nom de la senyal (SSID) a la que ens volem connectar
  • wireless-mode: el mode de funcionament (Ad-Hoc, Managed, Master, Repeater, Secondary, Monitor o Auto)
  • wireless-freq/channel: per definir la freqüència de treball o el canal
  • wireless-ap: per connectar-se a un AP en concret (s'ha d'especificar la mac del AP)
  • wireless-rate/bitrate: per especificar l'ampla de banda
  • wireless-txpower: especifiquem la potència d'emissió (per els xips que ho permetin)
  • wireless-sens: per especificar el llindar de sensivilitat
  • wireless-key: per tot el relacionat amb claus i encriptació (mireu l'apartat trucs i coses vàries)
  • wireless-power: per modificar la gestió d'energia dels xips

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



apèndixs


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 ;)


dns a les interfícies

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 :)


scripts per a les interfícies

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 ;)


múltiples interfícies

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


claus per les interfícies wi-fi

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

línia d'ordres

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 :)

fitxer de configuració

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? ;)


aixecar i abaixar interfícies

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


donar noms a les xarxes

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

man's que he fet servir:

ifconfig ( 8 )
iwconfig ( 8 )
interfaces ( 5 )
wireless ( 7 )
ifup ( 8 ) (és el mateix per a ifdown)

Comentaris

Opcions de visualització de comentaris

Selecciona la vostra manera preferida de visualitzar els comentaris i feu clic en "Desa la configuració" per activar els canvis.

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 Eye-wink

merci per l'aportació!