Configuració de la xarxa en Linux

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Relacionat: Sistemes operatius, Linux, Gestió de memòria, Gestió de E/S, Processos en Linux, Comandos del shell, Scripts Bash, Drivers en Linux, Configuració de la xarxa en Linux, Instal·lar en Linux

Comandes de xarxa

Per a un administrador de sistemes, dominar els comandaments de xarxa de Linux és fonamental. Molts servidors i dispositius de xarxa tenen com a sistema operatiu una de les moltes distribucions de Linux. Anem a veure el més comuns i útils.

ifconfig

Vegeu també l'ordre ip de 'Linux Advanced Routing & Traffic Control' lartc (http://lartc.org/). Ja que ifconfig es considera obsoleta.

Ifconfig és la comanda que permet configurar interfícies de xarxa (NICs). Tot i que ens permet modificar els paràmetres de xarxa, el seu ús més comú és consultar els paràmetres de xarxa executant ifconfig sense paràmetres:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:30:1B:B7:CD:B6  
        inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0
        inet6 addr: fe80::230:1bff:feb7:cdb6/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:16929 errors:0 dropped:0 overruns:0 frame:0
        TX packets:18758 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000 
        RX bytes:11958414 (11.4 MiB)  TX bytes:3243289 (3.0 MiB)
        Interrupt:209 
 
lo        Link encap:Local Loopback  
        inet addr:127.0.0.1  Mask:255.0.0.0
        inet6 addr: ::1/128 Scope:Host
        UP LOOPBACK RUNNING  MTU:16436  Metric:1
        RX packets:2051 errors:0 dropped:0 overruns:0 frame:0
        TX packets:2051 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0 
        RX bytes:598941 (584.9 KiB)  TX bytes:598941 (584.9 KiB)
  
vmnet1    Link encap:Ethernet  HWaddr 00:50:56:C0:00:01  
        inet addr:192.168.252.1  Bcast:192.168.252.255  Mask:255.255.255.0
        inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000 
        RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Com podeu observar es mostren diferents blocs que segueixen la nomenclatura de dispositius de xarxa (eth0,lo,vmnet...). Cada bloc correspon a un dispositiu de xarxa ja sigui físic o virtual.

Com mostrar només la informació d'una NIC:

$ ifconfig eth0
eth0    Link encap:Ethernet  HWaddr 00:30:1B:B7:CD:B6  
        inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0
        inet6 addr: fe80::230:1bff:feb7:cdb6/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:16929 errors:0 dropped:0 overruns:0 frame:0
        TX packets:18758 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000 
        RX bytes:11958414 (11.4 MiB)  TX bytes:3243289 (3.0 MiB)
        Interrupt:209 

Ifconfig ens proporciona la següent informació:

  • HWaddr: MAC del dispositiu (Ex. 00:30:1B:B7:CD:B6)
  • inet addr: La adreça IP del dispositiu (Ex. 192.168.1.33)
  • Bcast: La adreça de difusió de la subxarxa (Ex. 192.168.1.255)
  • Mask: La mascara de la subxarxa 255.255.255.0.
  • inet6 addr: La adreça IPv6 (ex.fe80::230:1bff:feb7:cdb6/64)
  • Scope: L'àmbit d'actuació de la interfície. Host (loopback)/Link (xarxes LAN nivell enllaç).
  • Estadístiques de transmissió/recepció:
         o RX packets:16929 errors:0 dropped:0 overruns:0 frame:0
         o TX packets:18758 errors:0 dropped:0 overruns:0 carrier:0
         o collisions:0 txqueuelen:1000
         o RX bytes:11958414 (11.4 MiB) TX bytes:3243289 (3.0 MiB) 

Exemples:

  • Apagar una interfície de xarxa:
$ ifconfig eth0 down

NOTA: És equivalent a ifdown eth0

  • Encendre una interfície de xarxa:
$ ifconfig eth0 up

NOTA: És equivalent a ifup eth0

Configurar una targeta de xarxa amb ip estàtica

$ sudo ifconfig eth0 192.168.0.15 netmask 255.255.255.0 broadcast 192.168.0.255

NOTA: Amb ifconfig no es pot configurar la interfície de xarxa amb dhcp, ni es pot establir el gateway. El gateway s'estableix amb la comanda route o mitjançant un paràmetre al fitxer /etc/network/interfaces.

Mode promiscu

El | mode promiscu és aquell en el qual un ordinado connectat a una xarxa compartida, tant la basada en cable de coure com la basada en tecnologia sense fils, captura tot el trànsit que circula. Aquest mode està molt relacionat amb els sniffers que es basen en aquesta mode per realitzar la seva tasca.

En el mode promiscu, una màquina intermèdia captura tots els paquets, que normalment deixalleria, incloent-hi els paquets destinats a ell mateix i a la resta de les màquines. Resulta a destacar que les topologies i maquinari que es facin servir per comunicar les xarxes, influeix en el seu funcionament, ja que les xarxes en bus, xarxes en anell, així com totes les xarxes que obliguin a que un paquet circuli per un mitjà compartit, al qual tots tenen accés, les modes promiscus capturaran encara més paquets que si estan en una xarxa amb topologia en arbre.

  • Establir el mode promiscu:
$ ifconfig eth0 promisc
$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:80:C8:F8:4A:51
        inet addr:192.168.99.35  Bcast:192.168.99.255  Mask:255.255.255.0
        UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1412  Metric:1
        RX packets:190312 errors:0 dropped:0 overruns:0 frame:0
        TX packets:86955 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100 
        RX bytes:30701229 (29.2 Mb)  TX bytes:7878951 (7.5 Mb)
        Interrupt:9 Base address:0x5000
  • Treure el mode promiscu
$ ifconfig eth0 -promisc
$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:30:1B:B7:CD:B6  
        inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0
        inet6 addr: fe80::230:1bff:feb7:cdb6/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:18444 errors:0 dropped:0 overruns:0 frame:0
        TX packets:20307 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000 
        RX bytes:13262810 (12.6 MiB)  TX bytes:3501026 (3.3 MiB)
        Interrupt:209

Activar/desactivar ARP

Consulteu també ARP.

  • Treure arp
$ ifconfig eth0 -arp
$ ifconfig eth0
        Link encap:Ethernet  HWaddr 00:80:C8:F8:4A:51
        inet addr:192.168.99.35  Bcast:192.168.99.255  Mask:255.255.255.0
        UP BROADCAST RUNNING NOARP MULTICAST  MTU:1412  Metric:1
        RX packets:190312 errors:0 dropped:0 overruns:0 frame:0
        TX packets:86955 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100 
        RX bytes:30701229 (29.2 Mb)  TX bytes:7878951 (7.5 Mb)
        Interrupt:9 Base address:0x5000
  • Afegir arp
$ ifconfig eth0 arp

IP aliasing

Permet configurar una targeta de xarxa amb múltiples IPs. Per exemple:

ifconfig eth0 192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0
ifconfig eth0:1 192.168.0.3 broadcast 192.168.0.255 netmask 255.255.255.0
ifconfig eth0:2 192.168.0.4 broadcast 192.168.0.255 netmask 255.255.255.0
ifconfig eth0:3 192.168.0.5 broadcast 192.168.0.255 netmask 255.255.255.0
ifconfig eth0:4 192.168.0.6 broadcast 192.168.0.255 netmask 255.255.255.0

Pot ser molt útil per afegir-nos a una xarxa si necessitem configurar un switch, router o qualsevol altre dispositiu que de fàbrica esta configurat amb una IP d'una xarxa diferent a la nostra. Més informació

NOTA IMPORTANT: TOTS els canvis realitzats amb ifconfig no són canvis permanents. Al reiniciar l'ordinador es restableixen els paràmetres establerts als fitxers de configuració (P.ex. en sistemes Debian el fitxer /etc/network/interfaces).

iwconfig

Aquesta comanda ens permet obtindre informació de les interfícies de xarxa que siguin wireless:

$ iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

eth1      IEEE 802.11g  ESSID:"WLAN_8A"
        Mode:Managed  Frequency:2.427 GHz  Access Point: 00:16:38:89:F6:57   
        Bit Rate:54 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0  
        Retry limit:7   RTS thr:off   Fragment thr:off
        Power Management:off
        Link Quality=95/100  Signal level=-33 dBm  Noise level=-91 dBm
        Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
        Tx excessive retries:0  Invalid misc:0   Missed beacon:0

irda0     no wireless extensions.

sit0      no wireless extensions.

És un clon de la comanda ifconfig però adequada als paràmetres de les xarxes wireless.

ifup

Arranca una interfície de xarxa:

$ sudo ifup eth0

La configuració de la interfície de xarxa serà segons l'establert al fitxer /etc/network/interfaces.

Si la interfície no apareix al fitxer interfaces la comanda ens donarà el següent error:

$ sudo ifup eth4
Ignoring unknown interface eth4=eth4.

Pot donar aquest error inclús quan la targeta existeix però no esta al fitxer interfícies.

Cal tenir en compte el funcionament d'udev que assigna noms d'interfícies de xarxa segons la MAC en casos especials com:

  • Discs durs extraibles: El mateix sistema operatiu funcionant en diferents màquines idèntiques però que cada targeta de xarxa té la seva MAC
  • Màquines virtuals: Cal també tenir en compte el tema de la MAC
  • Imatges de disc: Si utilitzem eines com partimage o Ghost, tindrem sistemes iguals però cadascú un altre cop amb la seva MAC.

Per exemple en el cas dels discs durs extraibles, udev ens assignarà una ethX on x es diferent per a cada màquina segons la seva MAC. Pot ser que aquesta ethX no estigui al fitxer interfaces!!!. Si passa això hi han dos possibilitats:

  • No tenir Network-Manager: Per exemple amb Ubuntu Server. Aleshores la targeta de xarxa no es configurarà durant l'arrancada del sistema
  • Tenir Network-Manager: Aleshores network manager s'encarregarà de configurar la interfície de xarxa.

Per a tenir més informació sobre com udev i xarxa, consulteu l'apartat:

#.2Fetc.2Fudev.2Frules.d.2F70-persistent-net.rules

Si la interfície ja esta configurada ens avisarà:

$ sudo ifup eth0
ifup: interface eth0 already configured

Amb el paràmetre -a podem arrancar totes les interfícies del sistema al mateix temps:

sudo ifup -a

Script Hooks. Fitxers .d de configuració de la xarxa

Hi ha 4 tipus de fitxers Hook Script:

Fixeu-vos que s'indica qualsevol interfície de xarxa, incloent la lo. Heu de tenir en compte que si indiqueu un script de post-up s'executarà tans cops com interfícies tingueu.

Hi ha una sèrie de variables que podeu utilitzar als scripts:

# Don't bother to restart sshd when lo is configured.
if [ "$IFACE" = lo ]; then
        exit 0
fi

# Only run from ifup.
if [ "$MODE" != start ]; then
        exit 0
fi

# OpenSSH only cares about inet and inet6. Get ye gone, strange people
# still using ipx.
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != inet6 ]; then
        exit 0
fi

ifdown

Atura una interfície de xarxa:

sudo ifdown eth0

És una dreçera de la comanda equivalent amb ifconfig:

sudo ifconfig eth0 down

Amb el paràmetre -a podem apagar totes les interfícies de xarxa al mateix temps

$ sudo ifdown -a
Cal parar molta atenció a no aturar les interfícies de xarxa en servidors remots al quals ens connectem via SSH. Aquesta comanda ens impediria l'accés a la màquina i per tant obligaria a desplaçar-nos fins al DATACENTER per solucionar l'error.

ping

arp

arping

Arping és una comanda molt similar a ping però que utilitza el protocol ARP en comptes del ICMP. Com a conseqüència aquesta comanda només es pot utilitzar entre màquines de la mateixa xarxa local. Igual que ping envia un paquet ARP REQUEST. Exemple:

$ arping -c 4 192.168.0.10
WARNING: interface is ignored: Operation not permitted
ARPING 192.168.0.10 from 192.168.0.7 eth0
Unicast reply from 192.168.0.10 [00:48:54:8D:58:47]  0.663ms
Unicast reply from 192.168.0.10 [00:48:54:8D:58:47]  0.684ms
Unicast reply from 192.168.0.10 [00:48:54:8D:58:47]  0.681ms
Unicast reply from 192.168.0.10 [00:48:54:8D:58:47]  0.671ms
Sent 4 probes (1 broadcast(s))
Received 4 response(s)

Provocar arp-replys

Primer cal assignar-se una IP (ho podeu fer per IP Aliasing):

$ sudo ip addr add 192.168.9.35 dev wlan0

Ara enviar els paquets ARP-REPLY:

$ sudo arping -q -c 3 -A -I wlan0 192.168.99.35

On:

  • -q: sortida silenciosa
  • -c: número de peticions enviades
  • -A (o -U): arping envia peticions arp-request per defecte. Amb aquesta opció envia peticions ARP-REPLY.
  • -I device: Permet indicar la interfície de xarxa.

Els podeu observar amb:

$ sudo tcpdump -c 3 -nni wlan0 arp
...
06:02:50.626330 arp reply 192.168.99.35 is-at 0:80:c8:f8:4a:51 (0:80:c8:f8:4a:51) 
06:02:51.622727 arp reply 192.168.99.35 is-at 0:80:c8:f8:4a:51 (0:80:c8:f8:4a:51) 
06:02:52.620954 arp reply 192.168.99.35 is-at 0:80:c8:f8:4a:51 (0:80:c8:f8:4a:51)

Provocar arp-requests

$ sudo arping -q -c 3 -U -I eth0 192.168.99.35


Els podeu observar amb:

$ sudp tcpdump -c 3 -nni eth0 arp

Detectar duplicats

$ sudo arping -D -I eth0 192.168.99.147; echo $?

dhclient

netstat

ip

ip és l'eina de nova generació pensada per substituir eines ("obsoletes") com ifconfig o route. Es proporcionada per LARTC (Linux Advanced Routing and Traffic Control)

Ordres que substitueix i millora:

purpose legacy "net-tools" iproute2
Address and link configuration ifconfig ip addr, ip link
Routing tables route ip route
Neighbors arp ip neigh
VLAN vconfig ip link
Tunnels iptunnel ip tunnel
Multicast ipmaddr ip maddr
Statistics netstat ss

Exemples:

$ sudo ip link show eth0

Mostra dades sobre la interficie.

$ sudo ip link set eth0 promisc on

Entrar en mode promiscu

$ sudo ip link set dev eth0 up

Activar una interficie de xarxa.

$ sudo ip route add dev eth0 to 192.168.10.0/24 via 192.168.1.20

Afegir una entrada en la taula de rutes.

$ sudo ip route show cache

Mostrar la caché de rutes.

$ sudo ip monitor all

Monitoritza totes targetes de xarxa.

$ sudo ip addr add 192.168.100.1/24 brd 192.168.100.255 dev eth0

Dona una ip a una targeta de xarxa.

font amb més informació [1]

traceroute

Per instal·lar traceroute:

$ sudo apt-get install traceroute

Hi ha diferents implementacions de traceroute. Si executeu:

$ whereis traceroute
traceroute: /usr/bin/traceroute /usr/bin/traceroute.db /usr/bin/traceroute6.iputils /usr/bin/traceroute6.db /usr/sbin/traceroute /usr/share/man/man8/traceroute.8.gz

Si busqueu el paquet:

$ dpkg -S /usr/bin/traceroute
...
dpkg: /usr/bin/traceroute no trobat.

Esteu utilitzant /usr/bin/traceroute.db i l'instal·la el paquet del mateix nom traceroute. Després s'utilitza alternatives per indicar la implementació de traceroute que volem utilitzar:

$ update-alternatives --display traceroute
traceroute - auto mode
 l'enllaç apunta actualment cap a /usr/bin/traceroute.db
/usr/bin/traceroute.db - prioritat 100
 esclau traceroute.8.gz: /usr/share/man/man8/traceroute.db.8.gz
 esclau traceroute.sbin: /usr/bin/traceroute.db
Actualment la «millor» versió és /usr/bin/traceroute.db. 

Traceroute és una comanda que s'utilitza per determinar quina ruta segueixen els paquets IP (per quins gateways o routers passen) per tal d'arribar a una màquina concreta. Exemple:

$ traceroute www.google.es
traceroute: Warning: www.google.es has multiple addresses; using 216.239.59.99
traceroute to www.l.google.com (216.239.59.99), 30 hops max, 40 byte packets
1  192.168.1.1 (192.168.1.1)  0.713 ms  0.482 ms  0.455 ms
2  192.168.153.1 (192.168.153.1)  50.780 ms  51.935 ms  49.973 ms
3  97.Red-81-46-52.staticIP.rima-tde.net (81.46.52.97)  55.980 ms  218.281 ms  51.631 ms
4  * * *
5  * * *
6  P12-0-grtlontl2.red.telefonica-wholesale.net (213.140.43.146)  99.036 ms  97.985 ms  98.048 ms
7  72.14.198.9 (72.14.198.9)  98.103 ms  99.954 ms  98.049 ms
8  66.249.95.107 (66.249.95.107)  109.915 ms  109.821 ms  108.130 ms
9  72.14.232.241 (72.14.232.241)  107.947 ms 64.233.174.185 (64.233.174.185)  108.198 ms  126.053 ms
10  216.239.49.126 (216.239.49.126)  111.904 ms  112.058 ms  111.769 ms
11  216.239.59.99 (216.239.59.99)  110.163 ms  107.823 ms  108.138 ms

Amb l'opció -n no s'intenta resoldre les IPs a noms de màquina. Els 3 últims camps són els temps del viatge d'anada i tornada de les tres proves que realitza traceroute per cada TTL.

Si no hi ha resposta en 5 segons, aleshores es mostra un *

Els asteriscs són màquines de la ruta que per protecció o errors de protocol no es poden mostrar.

NOTA: sovint els asterisc es poden solucionar executant traceroute com a superusuari:

$ sudo traceroute www.google.es
Password:
traceroute: Warning: www.google.es has multiple addresses; using 216.239.59.99
traceroute to www.l.google.com (216.239.59.99), 30 hops max, 40 byte packets
1  192.168.1.1 (192.168.1.1)  0.469 ms  0.496 ms  0.429 ms
2  192.168.153.1 (192.168.153.1)  50.701 ms  47.989 ms  48.041 ms
3  97.Red-81-46-52.staticIP.rima-tde.net (81.46.52.97)  51.949 ms  52.153 ms  51.969 ms
4  33.Red-81-46-5.staticIP.rima-tde.net (81.46.5.33)  63.792 ms  63.746 ms  64.027 ms
5  84.16.8.125 (84.16.8.125)  62.078 ms  64.046 ms  64.030 ms
6  P12-0-grtlontl2.red.telefonica-wholesale.net (213.140.43.146)  98.030 ms  99.910 ms  98.018 ms
7  72.14.198.9 (72.14.198.9)  98.140 ms  97.968 ms  98.028 ms
8  66.249.95.107 (66.249.95.107)  109.928 ms  110.080 ms  109.853 ms
9  64.233.174.185 (64.233.174.185)  109.930 ms 72.14.232.241 (72.14.232.241)  110.133 ms  109.800 ms
10  216.239.49.114 (216.239.49.114)  114.104 ms  114.010 ms  109.848 ms
11  216.239.59.99 (216.239.59.99)  110.093 ms  110.094 ms  109.865 ms

NOTA 2: Els paquets no sempre segueixen el mateix camí per arribar a un destinatari tal i com podeu comprovar en els nodes 9 i 10 de l'exemple anterior...

Actualment molts tallafocs impedeixen els paquets necessaris per tal que funcioni correctament traceroute. Per aquesta raó l'ordre premet provar amb diferents mètodes:

  • default: és el mètode tradicional i l'utilitzat per defecte. Aquest mètode el pot executar qualsevol usuari. S'envien paquets UDP amb ports poc probables (per defecte 33434 i es va augmentant). S'esperant missatges "icmp unreach port"
  • icmp: Opció -I. Si es pot fer un ping a totes les màquines de la ruta, també s'hauria de poder fer aquest tipus de tracerouting.
  • tcp: Opció -T. Utilitza el port 80

Hi ha algunes utilitats relacionades amb traceroute que poden ser interessants:

L'ordre:

$ traceroute6

és equivalent a:

$ traceroute -6

És a dir és fa un traceroute amb IPv6. Es necessita connectivitat IPv6.

Vegeu també tracert.

L'ordre ping també es pot utilitzar per traçar rutes:

$ ping -nR www.xtec.cat
PING xtec.cat (213.176.161.13) 56(124) bytes of data.
64 bytes from 213.176.161.13: icmp_seq=1 ttl=251 time=54.3 ms
NOP
RR: 	192.168.0.46 
	213.176.160.157
	213.176.160.26
	213.176.161.1
	213.176.161.13
	213.176.160.19
	213.176.160.153
	10.19.41.1
	85.192.120.9

64 bytes from 213.176.161.13: icmp_seq=2 ttl=251 time=52.9 ms
NOP	(same route)
64 bytes from 213.176.161.13: icmp_seq=3 ttl=251 time=53.1 ms
NOP	(same route)
  • Paquet: traceroute
  • Path: /usr/sbin/traceroute (podeu trobar el camí de la comanda executant which traceroute)
  • Manual: man traceroute

Una alternativa a traceroute és [[Paketto_Keiretsu#Paratrace Paratrace] de Paketto Keiretsu.

Com funciona traceroute

Traceroute utilitzar el protocol ICMP. Hi ha múltiples alternatives a l'hora d'intentar conèixer la ruta, però una de les més senzilles és enviat paquets de ping amb TTL (Times To Live) limitats.

Per conèixer la primera màquina d'una ruta enviem un paquet ping amb TTL=1

$ ping -t 1 www.google.com
PING www.l.google.com (209.85.227.105) 56(84) bytes of data.
From Livebox-D5AC (192.168.111.1) icmp_seq=1 Time to live exceeded

Ara ja sabeu que la primera màquina de la ruta és la 192.168.111.1. Si fem el mateix amb un TTL=2 obtindrem el nom de la segona màquina.

Podeu anar provant augmentant, fins que el paquet ping retorni.

mtr. My Traceroute

Un altre traceroute:

$ dpkg -S /usr/bin/mtr
mtr-tiny: /usr/bin/mtr
$ mtr www.upc.edu

tracepath

És una versió més senzilla de traceroute:

$ tracepath www.google.es
1:  192.168.1.33 (192.168.1.33)                            0.135ms pmtu 1500
1:  192.168.1.1 (192.168.1.1)                              0.898ms 
2:  192.168.1.1 (192.168.1.1)                            asymm  1   0.943ms pmtu 1492
3:  97.Red-81-46-52.staticIP.rima-tde.net (81.46.52.97)   91.871ms 
4:  33.Red-81-46-5.staticIP.rima-tde.net (81.46.5.33)    asymm  5 105.926ms 
5:  84.16.8.125 (84.16.8.125)                            asymm  6 103.997ms 
6:  P12-0-grtlontl2.red.telefonica-wholesale.net (213.140.43.146) 137.995ms 
.....................
  • Paquet: iputils-tracepath
  • Path: /usr/sbin/tracepath (podeu trobar el camí de la comanda executant which tracepath)
  • Manual: man tracepath

dig

$ dpkg -S dig | grep bin
dnsutils: /usr/bin/dig
..............

Podeu trobar més exemples a comanda dig.

  • Paquet: dnsutils
  • Path: /usr/bin/dig (podeu trobar el camí de la comanda executant which dig)
  • Manual: man dig

nslookup

  • Paquet: dnsutils
  • Path: /usr/bin/dig (podeu trobar el camí de la comanda executant which dig)
  • Manual: man dig

host

Consulteu host.

dnstracer

  • Paquet: dnstracer
  • Path: /usr/bin/dnstracer (podeu trobar el camí de la comanda executant which dnstracer)
  • Manual: man dnstracer

nmap

Consulteu nmap

ipcalc

Ipcalc és una eina que donada una ip i la seva màscara calcula les IPs de boradcast, xarxa, Cisco wildcard Mask, el rang de màquines, el tipus de xarxa i altres informacions interessants.

$ ipcalc 192.168.0.1
Address:   192.168.0.1          11000000.10101000.00000000. 00000001
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet

Si no s'especifica cap màscara, s'utilitza la màscara per defecte (255.255.255.0 o 24 en notació CIDR).

La sortida per pantalla és amb colors. Els colors ens permeten per exemple identificar els primers bits que corresponent a cada tipus de xarxa (A,B,C):

Archivo:Ipcalc.jpg

$ ipcalc 192.168.0.1/24

És equivalent a ipcalc 192.168.0.1

$ ipcalc 192.168.0.1/255.255.128.0
Address:   192.168.0.1          11000000.10101000.0 0000000.00000001
Netmask:   255.255.128.0 = 17   11111111.11111111.1 0000000.00000000
Wildcard:  0.0.127.255          00000000.00000000.0 1111111.11111111
=>
Network:   192.168.0.0/17       11000000.10101000.0 0000000.00000000
HostMin:   192.168.0.1          11000000.10101000.0 0000000.00000001
HostMax:   192.168.127.254      11000000.10101000.0 1111111.11111110
Broadcast: 192.168.127.255      11000000.10101000.0 1111111.11111111
Hosts/Net: 32766                 Class C, Private Internet

Ipcalc és molt útil per al càlcul de subxarxes. Per fer subnetting, per exemple dividir una xarxa de màscara 24 en 4 subxarxes de màscara 26 podem utilitzar:

$ ipcalc 192.168.0.1/24 26
Address:   192.168.0.1          11000000.10101000.00000000. 00000001
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet

Subnets after transition from /24 to /26

Netmask:   255.255.255.192 = 26 11111111.11111111.11111111.11 000000
Wildcard:  0.0.0.63             00000000.00000000.00000000.00 111111 

 1.
Network:   192.168.0.0/26       11000000.10101000.00000000.00 000000
HostMin:   192.168.0.1          11000000.10101000.00000000.00 000001
HostMax:   192.168.0.62         11000000.10101000.00000000.00 111110
Broadcast: 192.168.0.63         11000000.10101000.00000000.00 111111
Hosts/Net: 62                    Class C, Private Internet 

 2.
Network:   192.168.0.64/26      11000000.10101000.00000000.01 000000
HostMin:   192.168.0.65         11000000.10101000.00000000.01 000001
HostMax:   192.168.0.126        11000000.10101000.00000000.01 111110
Broadcast: 192.168.0.127        11000000.10101000.00000000.01 111111
Hosts/Net: 62                    Class C, Private Internet

 3.
Network:   192.168.0.128/26     11000000.10101000.00000000.10 000000
HostMin:   192.168.0.129        11000000.10101000.00000000.10 000001
HostMax:   192.168.0.190        11000000.10101000.00000000.10 111110
Broadcast: 192.168.0.191        11000000.10101000.00000000.10 111111
Hosts/Net: 62                    Class C, Private Internet

 4.
Network:   192.168.0.192/26     11000000.10101000.00000000.11 000000
HostMin:   192.168.0.193        11000000.10101000.00000000.11 000001
HostMax:   192.168.0.254        11000000.10101000.00000000.11 111110
Broadcast: 192.168.0.255        11000000.10101000.00000000.11 111111
Hosts/Net: 62                    Class C, Private Internet  
 

Subnets:   4
Hosts:     248
   

També es pot utilitzar a l'inrevés, per fer supernetting:

$ ipcalc 192.168.0.1/24 23
Address:   192.168.0.1          11000000.10101000.00000000. 00000001
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet  

Supernet

Netmask:   255.255.254.0 = 23   11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111

Network:   192.168.0.0/23       11000000.10101000.0000000 0.00000000
HostMin:   192.168.0.1          11000000.10101000.0000000 0.00000001
HostMax:   192.168.1.254        11000000.10101000.0000000 1.11111110
Broadcast: 192.168.1.255        11000000.10101000.0000000 1.11111111
Hosts/Net: 510                   Class C, Private Internet

Vegeu també:

Recursos:

  • Paquet: Xarxes_Linux#Paquet_ipcalc ipcalc
  • Path: /usr/bin/ipcalc (podeu trobar el camí de la comanda executant which ipcalc)
  • Manual: man ipcalc

sipcalc

Sipcalc és com ipcalc un calculador de (sub)xarxes IP que té dos parts:

  • Línia de comandes
  • Web (cgi)

sipcalc suporta tant xarxes Ipv4 com IPv6.

Un exemple:

$ sipcalc 192.168.204.1/24
-[ipv4 : 192.168.204.1/24] - 0 

[CIDR]
Host address		- 192.168.204.1
Host address (decimal)	- 3232287745
Host address (hex)	- C0A8CC01
Network address		- 192.168.204.0
Network mask		- 255.255.255.0
Network mask (bits)	- 24
Network mask (hex)	- FFFFFF00
Broadcast address	- 192.168.204.255
Cisco wildcard		- 0.0.0.255
Addresses in network	- 256
Network range		- 192.168.204.0 - 192.168.204.255
Usable range		- 192.168.204.1 - 192.168.204.254

un exemple IPv6:

$ sipcalc 2a02:f4c0::/29
-[ipv6 : 2a02:f4c0::/29] - 0

[IPV6 INFO]
Expanded Address	- 2a02:f4c0:0000:0000:0000:0000:0000:0000
Compressed address	- 2a02:f4c0::
Subnet prefix (masked)	- 2a02:f4c0:0:0:0:0:0:0/29
Address ID (masked)	- 0:0:0:0:0:0:0:0/29
Prefix address		- ffff:fff8:0:0:0:0:0:0
Prefix length		- 29
Address type		- Aggregatable Global Unicast Addresses
Network range		- 2a02:f4c0:0000:0000:0000:0000:0000:0000 -
			  2a02:f4c7:ffff:ffff:ffff:ffff:ffff:ffff

L'ajuda:

$ sipcalc -h
sipcalc 1.1.5 

Usage: sipcalc [OPTIONS]... <[ADDRESS]... [INTERFACE]... | [-]>

Global options:
  -a, --all			All possible information.
  -d, --resolve			Enable name resolution.
  -h, --help			Display this help.
  -I, --addr-int=INT		Added an interface.
  -n, --subnets=NUM		Display NUM extra subnets (starting from
				the current subnet). Will display all subnets
				in the current /24 if NUM is 0.
  -u, --split-verbose		Verbose split.
  -v, --version			Version information.
  -4, --addr-ipv4=ADDR		Add an ipv4 address.
  -6, --addr-ipv6=ADDR		Add an ipv6 address.

IPv4 options:
  -b, --cidr-bitmap		CIDR bitmap.
  -c, --classfull-addr		Classfull address information.
  -i, --cidr-addr		CIDR address information. (default)
  -s, --v4split=MASK		Split the current network into subnets
				of MASK size.
  -w, --wildcard		Display information for a wildcard
				(inverse mask).
  -x, --classfull-bitmap	Classfull bitmap.

IPv6 options:
  -e, --v4inv6			IPv4 compatible IPv6 information.
  -r, --v6rev			IPv6 reverse DNS output.
  -S, --v6split=MASK		Split the current network into subnets
				of MASK size.
  -t, --v6-standard		Standard IPv6. (default)

Address must be in the "standard" dotted quad format.
Netmask can be given in three different ways:
 - Number of bits    [/nn]
 - Dotted quad       [nnn.nnn.nnn.nnn]
 - Hex               [0xnnnnnnnn | nnnnnnnn]

Interface must be a valid network interface on the system.
If this options is used an attempt will be made to gain the address
and netmask from the specified interface.

Replacing address/interface with '-' will use stdin for reading further
arguments.

Report bugs to <simon@routemeister.net>.

Recursos:

tcpdump

whois

  • Paquet: whois
  • Path: /usr/bin/whois (podeu trobar el camí de la comanda executant which whois)
  • Manual: man whois

Comandes wireless

Podeu consultar aquestes comandes a la pàgina Xarxes Linux Wireless d'aquesta wiki.

IPtables

ncat ,nc o netcat

ethtool

Consulteu l'article ethtool.

mii-tool

Consulteu mii-tool

mii-diag

Consulteu mii-diag

Fitxers de configuració

/etc/modules

Aquest fitxer es pot utilitzar per afegir un mòdul al kernel (per exemple de suport a la targeta de xarxa). Els mòduls que apareixen a aquest fitxer es carreguen durant la càrrega del sistema. Exemple de fitxer

$ cat /etc/modules 
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
psmouse
sbp2
sr_mod

Els fitxers dels mòduls estan típicament a /lib/modules/. Aquí trobareu una carpeta per a cada versió del kernel (podeu utilitzar uname -r' per conèixer la vostra versió.

Per exemple, seguint les instruccions de la wiki d'Ubuntu (https://wiki.ubuntu.com/HardwareSupportComponentsWiredNetworkCards3Com), per fer funcionar una targeta 3COM 3c509TP Etherlink III, hem d'afegir el mòdul 3c509 al fitxer /etc/modules.

/etc/conf.modules

Mitjançant aquest fitxer podem configurar els paràmetres dels mòduls. Per exemple podem indicar a linux quin driver ha d'utilitzar per a la nostra targeta de xarxa. Exemple:

alias eth0 module_name
options module_name option1=value1 option2=value2 ...

Un mòdul proporciona al sistema operatiu (kernel) la informació necessària per controlar una targeta ethernet en particular. Per conèxer els noms dels mòduls (module_name) podeu consultar [aquesta pàgina http://tldp.org/HOWTO/Ethernet-HOWTO-2.html#what-card].

Les línies d'opcions només acostumen a ser necessàries per a antigues targetes ISA (obsoletes i no recomanables). Si es tenen més targetes serà necessari posar més línies al fitxer (eth1, eth2...).

NOTA: If you build your own kernel, you have the option of having all the drivers merged with the kernel right then and there, rather than existing as separate files. When this is done, the drivers will detect the hardware at boot up. Options to the drivers are supplied by the kernel command line prior to boot (see BootPrompt Howto for more details). The user chooses what drivers are used during the make config step of building the kernel (again see the kernel howto).

Configuració de la xarxa. Carpeta /etc/network

Múltiples aplicacions participen en la configuració de la xarxa com podeu veure si executeu:

$ dpkg -S /etc/network
avahi-autoipd, avahi-daemon, wireless-tools, wpasupplicant, netbase, ethtool, dhcp3-client, openssh-server, ifupdown, ntpdate, postfix, openvpn:  
/etc/network

Per tant cal tenir en compte que la configuració de la xarxa pot esdevenir quelcom complex que varii molt d'una màquina a un altre depenent dels paquets instal·lats.

/etc/network/interfaces

Fitxer de configuració de les interfícies de xarxa (NICs) en sistemes Debian. Aquest és el fitxer principal de configuració. Guarda la configuració de les interfícies de xarxa. Aquest fitxer és llegit per les comandes ifup i ifdown quan s'activen les interfícies de xarxa (ja sigui explícitament o en l'arrencada del sistema)

Exemple de fitxer interfaces totes configurades per DHCP:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto ath0
iface ath0 inet dhcp

auto wlan0
iface wlan0 inet dhcp

Exemple de fitxer interfaces amb configuració estàtica:

$ cat /etc/network/interfaces 
auto eth1
iface eth1 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

Es pot utilitzar per automatitzar tasques abans i després d'activar les interfícies. Per això cal utilitzar les opcions pre-up o post-up:

També es pot canviar la MAC i que sigui permanent al iniciar la interficie

auto eth0
iface eth0 inet dhcp
     ...
     hwaddress ether 08:09:0a:fa:ba:da

En aquest cas quan demanem una ip per dhcp sempre ens donara la següent MAC.


Podeu trobar exemples de configuració al fitxer comprimit /usr/share/doc/ifupdown/examples/network-interfaces.gz:

$ sudo gunzip /usr/share/doc/ifupdown/examples/network-interfaces.gz 
$ cat /usr/share/doc/ifupdown/examples/network-interfaces

Trobareu exemples de configuració del fitxer /etc/network/interfaces per a xarxes wireless a http://acacha.dyndns.org/mediawiki/index.php/Xarxes_Linux_Wireless#.2Fetc.2Fnetwork.2Finterfaces.

Paràmetre allow-hotplug:

Del manual del fitxer interfaces:

Lines beginning with "allow-" are  used  to  identify  interfaces  that
should  be  brought  up automatically by various subsytems. This may be
done using a command such as "ifup --allow=hotplug  eth0  eth1",  which
will  only  bring up eth0 or eth1 if it is listed in an "allow-hotplug"
line. Note that "allow-auto" and "auto" are synonyms.

Sembla que és una línia per evitar problemes amb udev i dispositius connectables en calent (ethernet USB):

S'utilitza per marcar interfícies per tipologies. A Ubuntu per exemple no pareix al fitxer per defecte i a debian si. A Ubuntu el fitxer:

$ cat /etc/udev/rules.d/85-ifupdown.rules 
# This file causes network devices to be brought up or down as a result
# of hardware being added or removed, including that which isn't ordinarily
# removable.
# See udev(7) for syntax.  

SUBSYSTEM=="net", DRIVERS=="?*", GOTO="net_start"
GOTO="net_end"

LABEL="net_start"

# Bring devices up and down only if they're marked auto.
# Use start-stop-daemon so we don't wait on dhcp
ACTION=="add",          RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifup -- --allow auto  $env{INTERFACE}"
ACTION=="remove",       RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifdown -- --allow auto $env{INTERFACE}"

LABEL="net_end"

Manual:

Recursos:

Exemples

Rutes estàtiques

Consulteu Rutes_estàtiques#Fitxer_.2Fetc.2Fnetwork.2Finterfaces_i_configuraci.C3.B3_de_rutes_est.C3.A0tiques de l'article rutes estàtiques.

Hooks de configuració de la xarxa

A les carpetes:

$ ls /etc/network/if-              --> Tabuleu dos cops
if-down.d/      if-post-down.d/ if-pre-up.d/    if-up.d/

Trobareu hooks de la configuració de la xarxa. Els hooks són scripts que s'executen en moment concrets (esdeveniments), en aquest cas els esdeveniment són:

Un exemple d'ús pot ser afegir rutes estàtiques.

En aquestes carpetes es col·loquen els scripts que volem que s'executin abans o després de l'engegada o aturada de la xarxa. Per exemple, si fem una ullada a la carpeta /etc/network/if-up.d:

$ ls -l /etc/network/if-up.d/
total 16
-rwxr-xr-x 1 root root 3190 2006-10-06 13:34 mountnfs
-rwxr-xr-x 1 root root  551 2006-05-29 04:48 ntpdate
-rwxr-xr-x 1 root root  160 2006-09-18 21:09 ntp-server
-rwxr-xr-x 1 root root 1120 2006-09-10 12:48 postfix

Són scripts que configuren aplicacions després de la configuració de la xarxa:

  • mountnfs: Monta els recursos NFS i SAMBA
  • ntpdate i ntp-server: Configuren ntp (servei de temps).....

Aquests fitxers, juntament amb les comandes ifup i ifdown les proporciona el paquet ifupdown.

Podem veure el detall del que s'executa al aixecar/apagar una targeta de xarxa amb les comandes:

$ sudo ifdown --verbose eth0
Configuring interface eth0=eth0 (inet)
route del -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.20 dev eth0
run-parts --verbose /etc/network/if-down.d
run-parts: executing /etc/network/if-down.d/avahi-autoipd
run-parts: executing /etc/network/if-down.d/wpasupplicant

ifconfig eth0 down
run-parts --verbose /etc/network/if-post-down.d
run-parts: executing /etc/network/if-post-down.d/avahi-daemon
run-parts: executing /etc/network/if-post-down.d/bridge
run-parts: executing /etc/network/if-post-down.d/wireless-tools
run-parts: executing /etc/network/if-post-down.d/wpasupplicant
run-parts: executing /etc/network/if-post-down.d/z50madwifi 
$ sudo ifup --verbose eth0
Configuring interface eth0=eth0 (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/050madwifi
run-parts: executing /etc/network/if-pre-up.d/bridge
run-parts: executing /etc/network/if-pre-up.d/uml-utilities
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant

ifconfig eth0 192.168.1.2 netmask 255.255.255.0  	   	up

route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.20 dev eth0
run-parts --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/avahi-autoipd
run-parts: executing /etc/network/if-up.d/avahi-daemon
run-parts: executing /etc/network/if-up.d/mountnfs
 * Starting portmap daemon...
 * Already running.
  ...done.
 * Starting NFS common utilities
   ...done.
run-parts: executing /etc/network/if-up.d/ntpdate
run-parts: executing /etc/network/if-up.d/openssh-server
run-parts: executing /etc/network/if-up.d/uml-utilities
run-parts: executing /etc/network/if-up.d/wpasupplicant

/etc/init.d/networking

Aquest fitxer és un script estàndard de configuració de serveis System V. Permet controlar el servei de xarxa. Les opcions són les estàndard de SystemV:

Arrancar la xarxa:

sudo /etc/init.d/networking start

Apagar la xarxa:

sudo /etc/init.d/networking stop

Apagar i arrancar la xarxa (reiniciar) la xarxa:

sudo /etc/init.d/networking restart

Apagar i arrancar la xarxa (reiniciar) la xarxa:

sudo /etc/init.d/networking force-reload

En aquest cas, les opcions restart i force-reload són equivalents.

restart està obsolet, cal fer stop i start en els Debian moderns

NOTA: Cal destacar que no és exactament el mateix executar /etc/init.d/networking start (o stop) que executar ifup. Ho podem comprovar si mirem l'script que conté el fitxer on veurem que s'utilitzen les comandes ifup i ifdown però que a més hi ha controls extres (com per exemple no apagar la xarxa si hi han unitats NFS encara muntades).

El link /etc/rcS.d/S40networking és l'encarregat d'iniciar la configuració de xarxa en Sistemes Debian seguint el sistema d' scripts d'inicialització de SystemV.

Podeu obtenir més informació sobre serveis i dimonis en Linux a l'article Configuració de serveis en Linux. Daemons d'aquesta wiki i concretament sobre els Scripts de control de serveis SystemV.

  • Paquet que el proporciona: netbase
NOTA: aquest fitxer es completament diferents en una Debian que en una Ubuntu. A Ubuntu es basa en simplement fer primer un ifdown -a i després un ifup -a a Debian fa altres coses...

Fitxer a Ubuntu (Feisty)

$ cat /etc/init.d/networking 
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          networking
# Required-Start:    mountkernfs ifupdown $local_fs
# Required-Stop:     ifupdown $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Raise network interfaces.
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[ -x /sbin/ifup ] || exit 0 

. /lib/lsb/init-functions
 

case "$1" in
start)
        log_action_begin_msg "Configuring network interfaces"
        type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
        if [ "$VERBOSE" != no ]; then
            if ifup -a; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
        else
            if ifup -a >/dev/null 2>&1; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
        fi
        type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
        ;;

stop)
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
                grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
            log_warning_msg "not deconfiguring network interfaces: network shares still mounted."
            exit 0
        fi 

        log_action_begin_msg "Deconfiguring network interfaces"
        if [ "$VERBOSE" != no ]; then
            if ifdown -a --exclude=lo; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
        else
            if ifdown -a --exclude=lo >/dev/null 2>/dev/null; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
        fi
        ;;

force-reload|restart)
        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo || true
        if ifup -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

*)
        echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

Fitxer a Debian Etch

$ cat /etc/init.d/networking 
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          networking
# Required-Start:    mountkernfs ifupdown $local_fs
# Required-Stop:     ifupdown $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Raise network interfaces.
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" 

[ -x /sbin/ifup ] || exit 0 

. /lib/lsb/init-functions

spoofprotect_rp_filter() {
    [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] || return 1
    RC=0
    for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
        echo 1 > $f || RC=1
    done
    return $RC
} 

spoofprotect() {
    log_action_begin_msg "Setting up IP spoofing protection"
    if spoofprotect_rp_filter; then
        log_action_end_msg 0 "rp_filter"
    else
        log_action_end_msg 1
    fi
}

ip_forward() {
    log_action_begin_msg "Enabling packet forwarding"
    if echo 1 > /proc/sys/net/ipv4/ip_forward; then
        log_action_end_msg 0
    else
        log_action_end_msg 1
    fi
}

syncookies() {
    log_action_begin_msg "Enabling TCP SYN cookies"
    if echo 1 > /proc/sys/net/ipv4/tcp_syncookies; then
        log_action_end_msg 0
    else
        log_action_end_msg 1
    fi
} 

doopt() {
    optname=$1
    default=$2
    opt=`grep "^$optname=" /etc/network/options || true`
    if [ -z "$opt" ]; then
         opt="$optname=$default"
    fi
    optval=${opt#$optname=}
    if [ "$optval" = "yes" ]; then
        eval $optname
    fi
}
process_options() {
    [ -e /etc/network/options ] || return 0
    log_warning_msg "/etc/network/options is deprecated (see README.Debian of netbase)."
    doopt spoofprotect yes
    doopt syncookies no
    doopt ip_forward no
}

case "$1" in
start)
        process_options
        log_action_begin_msg "Configuring network interfaces"
        if ifup -a; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;; 

stop)
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
                grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
            log_warning_msg "not deconfiguring network interfaces: network shares still mounted."
            exit 0
        fi 

        log_action_begin_msg "Deconfiguring network interfaces"
        if ifdown -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;; 

force-reload|restart)
        process_options
        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo || true
        if ifup -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;  

*)
        echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
        exit 1
        ;;
esac 

exit 0

Carpetes /etc/sysconfig/network/scripts i /etc/sysconfig/network-scripts

A Open Suse els scripts de post o pre instal·lació de xarxa els trobem a la carpeta /etc/sysconfig/network/scripts. A Fedora sovint es troben a /etc/sysconfig/network-scripts. El nom d'aquests fitxers segueix la lògica següent:

  • ifdown i ifup: són links a les comanda ifdown/ifup
  • ifup-xxxx: On xxxx és el nom d'un servei o aplicació Linux. Per tant, l'script ifup-xxxx és l'script que s'executa referent a aquesta aplicació quan s'engega la xarxa. Exemple ifup-ippp.
  • ifdown-xxxx: On xxxx és el nom d'un servei o aplicació Linux. Per tant, l'script ifdown-xxxx és l'script que s'executa referent a aquesta aplicació quan s'apaga la xarxa.

/etc/init.d/loopback

Igual que /etc/init.d/networking és un script de control de serveis ( init scripts) de UNIX System V. En aquesta cas s'encarrega de configurar la interfície de loopback. Permet controlar el servei d'interfície de loopback.

El link /etc/rcS.d/S08loopback és l'encarregat d'iniciar la interfície de loopbacken Sistemes Debian seguint el sistema d' scripts d'inicialització de SystemV.

Podeu consultar més sobre els serveis i dimonis Linux a l'article Configuració de serveis en Linux. Daemons.

  • Paquet que el proporciona: netbase

/etc/sysconfig/network

En sistemes RED HAT/Fedora o similars aquest fitxer és el que conté la configuració de xarxa (equivalent del fitxer /etc/network/interfaces en Sistemes Debian). Un exemple de configuració estàtica seria:

NETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=milinux.localdomain
DOMAINAME=localdomain
GATEWAY=10.0.0.1
GATEWAYDEV=eth0
IPADDR=10.0.0.120
NETMASK=255.0.0.0
NETWORK=10.0.0.0
BROADCAST=10.255.255.255
ONBOOT=yes  

/etc/sysctl.conf

Controla paràmetres del kernel:

$ cat /etc/sysctl.conf

El podem utilitzar per activar ip_forwarding:

...
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
...

Consulteu l'article Sysctl._Tunning_del_kernel.

Carpeta /etc/sysconfig/networking

En sistemes RED HAT/fedora trobem en aquesta carpeta els perfils de xarxa i/o els fitxers ifcfg-xxx amb la configuració de la xarxa.

Carpeta /etc/sysconfig/network

Aquesta carpeta també s'utilitza en sistemes SUSE o derivats (openSuse, Linkat....)

  • Sistema: RED HAT
  • Paquet: ?

/etc/sysconfig/network/config

En sistemes com OpenSUSE hi ha paràmetres generals de configuració de xarxa.

Fitxers ifcfg-xxx

Els sistemes RED HAT, Fedora i Suse guarden la configuració de les interfícies de xarxa als fitxers ifcfg-xxx. Depenent de la distribució, de si s'utilitzen perfils o no i altres temes, aquests fitxers poden estar en diferents localitzacions (carpetes). Les xxxx del nom del fitxer se substitueixen pel nom del dispositiu de xarxa. Per exemple:

*loopback: ifcfg-lo
*eth0: ifcfg-eth0
*eth1: ifcfg-eth1

Altres noms són possibles (per exemple utilitzant identificadors ifcfg-eth-id-00\:0c\:29\:d3\:47\:00). Aquests fitxers de configuració contenen parells de valors.

A SUSE aquests fitxers es localitzen a la carpeta /etc/sysconfig/network

SUSE també ofereix un fitxer d'exemple (template) de configuració. Podem consultar aquest "template" per conèixer la utilitat de cadascun dels possibles paràmetres. També podem consultar l'entrada de manual de Linux man ifcfg

Exemple d'interfície configurada amb DHCP:

BOOTPROTO='dhcp'
BROADCAST=
ETHTOOL_OPTIONS=
IPADDR=
MTU=
NAME='AMD PCnet - Fast 79C971'
NETMASK='255.255.255.0'
NETWORK=
REMOTE_IPADDR=
STARTMODE='auto'
UNIQUE='rBUF.weGuQ9ywYPF'
USERCONTROL='no'
_nm_name='bus-pci-0000:00:10.0'
)

Exemple d'interfície amb configuracio estàtica:

DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

Configuració de loopback a Open Suse:

sergi@linux-ngx8:/etc/sysconfig/network> cat ifcfg-lo 
# Loopback (lo) configuration
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
STARTMODE=onboot
USERCONTROL=no
  • Manual: man ifcfg

/etc/sysconfig/networking/profiles

Conté els perfils de xarxa de la màquina RED HAT/Fedora. El perfil per defecte és default /etc/sysconfig/networking/profiles/default. Els perfils poden sobrescriure les dades de configuració de xarxa generals (fitxer /etc/sysconfig/network).

/etc/protocols

Aquest fitxer guarda els noms de protocols de TRANPORT utilitzats (o que suporta) aquest sistema.

$ cat /etc/protocols 
# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.

ip      0       IP              # internet protocol, pseudo protocol number
#hopopt 0       HOPOPT          # IPv6 Hop-by-Hop Option [RFC1883]
icmp    1       ICMP            # internet control message protocol
igmp    2       IGMP            # Internet Group Management
ggp     3       GGP             # gateway-gateway protocol
ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP)
st      5       ST              # ST datagram mode
tcp     6       TCP             # transmission control protocol
egp     8       EGP             # exterior gateway protocol
igp     9       IGP             # any private interior gateway (Cisco)
pup     12      PUP             # PARC universal packet protocol
udp     17      UDP             # user datagram protocol
hmp     20      HMP             # host monitoring protocol
xns-idp 22      XNS-IDP         # Xerox NS IDP
rdp     27      RDP             # "reliable datagram" protocol
iso-tp4 29      ISO-TP4         # ISO Transport Protocol class 4 [RFC905]
xtp     36      XTP             # Xpress Transfer Protocol
ddp     37      DDP             # Datagram Delivery Protocol
idpr-cmtp 38    IDPR-CMTP       # IDPR Control Message Transport
ipv6    41      IPv6            # Internet Protocol, version 6
ipv6-route 43   IPv6-Route      # Routing Header for IPv6
ipv6-frag 44    IPv6-Frag       # Fragment Header for IPv6
idrp    45      IDRP            # Inter-Domain Routing Protocol
rsvp    46      RSVP            # Reservation Protocol
gre     47      GRE             # General Routing Encapsulation
esp     50      IPSEC-ESP       # Encap Security Payload [RFC2406]
ah      51      IPSEC-AH        # Authentication Header [RFC2402]
skip    57      SKIP            # SKIP
ipv6-icmp 58    IPv6-ICMP       # ICMP for IPv6
ipv6-nonxt 59   IPv6-NoNxt      # No Next Header for IPv6
ipv6-opts 60    IPv6-Opts       # Destination Options for IPv6
rspf    73      RSPF CPHB       # Radio Shortest Path First (officially CPHB)
vmtp    81      VMTP            # Versatile Message Transport
eigrp   88      EIGRP           # Enhanced Interior Routing Protocol (Cisco)
ospf    89      OSPFIGP         # Open Shortest Path First IGP
ax.25   93      AX.25           # AX.25 frames
ipip    94      IPIP            # IP-within-IP Encapsulation Protocol
etherip 97      ETHERIP         # Ethernet-within-IP Encapsulation [RFC3378]
encap   98      ENCAP           # Yet Another IP encapsulation [RFC1241]
#       99                      # any private encryption scheme
pim     103     PIM             # Protocol Independent Multicast
ipcomp  108     IPCOMP          # IP Payload Compression Protocol
vrrp    112     VRRP            # Virtual Router Redundancy Protocol
l2tp    115     L2TP            # Layer Two Tunneling Protocol [RFC2661]
isis    124     ISIS            # IS-IS over IPv4
sctp    132     SCTP            # Stream Control Transmission Protocol
fc      133     FC              # Fibre Channel
  • Paquet que el proporciona: netbase
  • Manual: man protocols

/etc/services

Conté una llista dels noms de serveis reconeguts pel sistema (protocols a nivell aplicació).

Un extracte del fitxer:

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
msp             18/udp
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp             21/tcp
fsp             21/udp          fspd
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp
telnet          23/tcp
smtp            25/tcp          mail
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116
whois           43/tcp          nicname
tacacs          49/tcp                          # Login Host Protocol (TACACS)
tacacs          49/udp
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp
domain          53/tcp          nameserver      # name-domain server
domain          53/udp          nameserver
mtp             57/tcp                          # deprecated
tacacs-ds       65/tcp                          # TACACS-Database Service
tacacs-ds       65/udp
bootps          67/tcp                          # BOOTP server
bootps          67/udp
bootpc          68/tcp                          # BOOTP client
bootpc          68/udp
tftp            69/udp
gopher          70/tcp                          # Internet Gopher
gopher          70/udp
rje             77/tcp          netrjs
finger          79/tcp
www             80/tcp          http            # WorldWideWeb HTTP
www             80/udp                          # HyperText Transfer Protocol

Una de les utilitats d'aquest fitxer és consultar el port per defecte d'un protocol. Per exemple, si volem saber quin port utilitza el protocol smtp podem escriure:

$ cat /etc/services | grep smtp
smtp            25/tcp          mail
ssmtp           465/tcp         smtps           # SMTP over SSL

També es pot utilitzar al revés per conèixer el protocol més usual per a un port donat:

$ cat /etc/services | grep 80
www             80/tcp          http            # WorldWideWeb HTTP
www             80/udp                          # HyperText Transfer Protocol
...............

Cal tenir en compte que totes les aplicacions de xarxa (com nmap o netstat) utilitzant la informació d'aquest fitxer per traduir ports en serveis. Per exemple:

$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:2208          *:*                     LISTEN     
tcp        0      0 *:ldap                  *:*                     LISTEN     
tcp        0      0 localhost:47301         *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp        0      0 *:11211                 *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:postgresql    *:*                     LISTEN     
tcp        0      0 *:smtp                  *:*                     LISTEN 

Els serveis als quals apareix el número de port són serveis que no apareixen al fitxer /etc/services. Els protocols que apareixen amb el seu nom (ipp,ldap,mysql,smtp...) són serveis que apareixen al fitxer /etc/protocols.

  • Paquet que el proporciona: netbase
  • Manual: man services

/etc/rpc

Tradueix noms de serveis de programes rpc (remote procedure control) en els seus corresponents números rpc

$ cat /etc/rpc 
# This file contains user readable names that can be used in place of rpc
# program numbers.

portmapper      100000  portmap sunrpc
rstatd          100001  rstat rstat_svc rup perfmeter
rusersd         100002  rusers
nfs             100003  nfsprog
ypserv          100004  ypprog
.........
  • Paquet que el proporciona: netbase
  • Manual: man rpc

/etc/host.conf

Vegeu Client_DNS#.2Fetc.2Fhosts.conf

/etc/hosts

Vegeu Client_DNS#.2Fetc.2Fhosts

/etc/hosts.allow i /etc/hosts.deny

Amb aquests fitxers es pot crear una llista ACL (Access Control List) de les màquines que poden (o no poden) accedir al nostre host.

$ cat /etc/hosts.allow 
# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5), hosts_options(5)
#                   and /usr/doc/netbase/portmapper.txt.gz
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8), rpc.mountd(8) and 
# /usr/share/doc/portmap/portmapper.txt.gz for further information.
#
$ cat /etc/hosts.deny 
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#                  See the manual pages hosts_access(5), hosts_options(5)
#                  and /usr/doc/netbase/portmapper.txt.gz
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper. See portmap(8)
# and /usr/doc/portmap/portmapper.txt.gz for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.

# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID
  • Manual: man hosts.allow
  • Manual: man hosts.deny


/etc/resolv.conf

Vegeu Client_DNS#.2Fetc.2Fresolv.conf

Fitxer /etc/ethers

Es pot utilitzar aquest fitxer per no haver d'utilitzar la mac cada cop que es fa un wakeonlan:

$ cat /etc/ethers
08:00:20:00:61:CA nommaquina

/etc/networks

Fitxer opcional (sovint no el tenim). Similar al fitxer /etc/hosts però per especificar xarxes. Exemple

loopback 127.0.0.0
localdomain 10.0.0.0

Manual:

  • man networks

/etc/hostname

Conté el nom de la màquina:

$ cat /etc/hostname 
casa-linux

La comanda hostname ens proporciona el nom de la màquina.

/etc/iftab

Aquest fitxer permetia assignar noms fixes a les interfícies de xarxa. Actualment s'ha substituit per udev,

$ cat /etc/iftab
# This file is no longer used and has benn automatically replaced
# See /etc/udev/rules.d/70-persistent-net.rules for more information
#

# This file assigns persistent names to network interfaces
# see iftab(5) for syntax

##eth0 mac 08:00:27:01:20:85

/proc/net/arp

Aquest fitxer conté la taula del protocol ARP (Adress Resolution Protocol). Aquest protocol és l'encarregat de transformar IPs en MACs i és el que ens permet treballar amb IPs al nivell d'enllaç (xarxa àrea local).

$ cat /proc/net/arp 
IP address       HW type     Flags       HW address            Mask     Device
10.0.2.101       0x1         0x2         00:11:09:CE:25:8E *       eth0
192.168.0.240    0x1         0x2         00:12:17:FC:98:87 *       eth1
10.0.2.1         0x1         0x2         00:50:7F:1F:2C:A3 *       eth0
10.0.2.107       0x1         0x2         00:11:09:CE:26:3E *       eth0
10.0.3.234       0x1         0x2         00:14:22:09:AA:3F *       eth0

Ens dóna el mateix resultat que la comanda arp (encara que la comanda arp no està sempre instal·lada)

NOTA: No s'ha d'editar aquest fitxer directament. Cal utilitzar la comanda arp NOTA1: Només conté les MACS dels nodes (pcs o dispositius de xarxa) amb els quals s'ha establert alguna comunicació.

El podem utilitzar per obtenir les MACS de tots els dispositius d'una xarxa d'àrea local. Per això primer utilitzem nmap

sudo nmap 192.168.0.1-255

i després consultem la taula arp amb

$ cat /proc/net/arp

o la comanda

$ arp

/etc/udev/rules.d/70-persistent-net.rules

La gestió del nom de les interfícies de xarxa, abans es feia amb ifrename, però ha estat substituit per udev:

$ sudo apt-get install ifrename 
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
El paquet ifrename no té versió disponible, però un altre paquet
en fa referència. Això normalment vol dir que el paquet falta,
s'ha tornat obsolet o només és disponible des d'una altra font.
Tot i que els següents paquets el reemplacen:
  udev
E: El paquet ifrename no té candidat d'instal·lació

Ara el gestor de dispositius de xarxa és udev i substitueix la funció del fitxer /etc/iftab. Veieu el següent exemple d'un disc dur en rack que és connecta a diferents màquines, totes iguals però cadascuna amb una adreça de xarxa amb una MAC diferent (disc dur de l'escola):

Plantilla:Important

$ cat /etc/udev/rules.d/70-persistent-net.rules 
# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:3a:e6", NAME="eth0"

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:a2:fc", NAME="eth1"

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:a3:8d", NAME="eth2" 

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:55", NAME="eth3"

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:04", NAME="eth4"

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:11", NAME="eth5"

# PCI device 0x10ec:0x8167 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:0c", NAME="eth6"

A Debian Etch el fitxer s'anomena /etc/udev/rules.d/z25_persistent-net.rules:

$ cat /etc/udev/rules.d/z25_persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line. 

# PCI device 0x8086:0x2449 (eepro100)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:c0:a8:f9:7b:87", NAME="eth0" 

# PCI device 0x8086:0x2449 (e100)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:c0:a8:f9:7d:3d", NAME="eth0"

# PCI device 0x8086:0x2449 (e100)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:c0:a8:f9:82:10", NAME="eth0"

# PCI device 0x8086:0x2449 (e100)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:c0:a8:f9:89:2e", NAME="eth1"

NOTA: Exemple extret de l'aula Linux.

Canviar el nom d'una interfície de xarxa

Es pot fer modificant el fitxer /etc/udev/rules.d/70-persistent-net.rules:

$ cat /etc/udev/rules.d/70-persistent-net.rules
...
# Virtual network (eth0--> intranet)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3E:00:AB:00", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="intranet"  
 
# Virtual network (eth1--> aula1)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3E:00:AB:01", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="aula1" 

# Virtual network (eth2--> aula2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3E:00:AB:02", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="aula2"

# Virtual network (eth3--> aula3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3E:00:AB:03", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="aula3"

# Virtual network (eth4--> internet)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3E:00:AB:04", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="internet"

Consulteu:

Tallafocs_Linux#domU

En alguns casos he trobat que només canvia algunes targetes de xarxa:

ifconfig abans:

$ sudo ifconfig -a
eth1     Link encap:Ethernet  HWaddr 00:16:3e:00:ab:01  
...
intranet  Link encap:Ethernet  HWaddr 00:16:3e:00:ab:00  
         inet addr:192.168.0.46  Bcast:192.168.0.255  Mask:255.255.255.0
         inet6 addr: fe80::216:3eff:fe00:ab00/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:80 errors:0 dropped:0 overruns:0 frame:0
         TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:5196 (5.1 K

En canvi al executar:

$ sudo udevadm test /sys/class/net/eth1
...
rename_netif: changing net interface name from 'eth1' to 'aula1'
udev_event_execute_rules: renamed netif to 'aula1'
udev_event_execute_rules: changed devpath to '/devices/vif-1/net/aula1'
udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/vif-1/net/aula1
udevadm_test: INTERFACE=aula1
udevadm_test: IFINDEX=3
udevadm_test: ACTION=add
udevadm_test: SUBSYSTEM=net
udevadm_test: INTERFACE_OLD=eth1

Ja li canvia el nom de eth1 a aula1.

/etc/udev/rules.d/75-persistent-net-generator.rules

$ cat /etc/udev/rules.d/75-persistent-net-generator.rules
# these rules generate rules for persistent network device naming

ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*|ath*|wlan*|ra*|sta*" \
        NAME!="?*", DRIVERS=="?*", GOTO="persistent_net_generator_do"

GOTO="persistent_net_generator_end"
LABEL="persistent_net_generator_do"

# build device description string to add a comment the generated rule
SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($attr{driver})"
SUBSYSTEMS=="usb", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($attr{driver})"
SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})"
SUBSYSTEMS=="xen", ENV{COMMENT}="Xen virtual device"
ENV{COMMENT}=="", ENV{COMMENT}="$env{SUBSYSTEM} device ($attr{driver})"

IMPORT{program}="write_net_rules $attr{address}"
ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}" 

LABEL="persistent_net_generator_end"

A Debian Etch:

$ cat /etc/udev/rules.d/z45_persistent-net-generator.rules 
# These rules generate rules to keep network interface names unchanged
# across reboots write them to /etc/udev/rules.d/z25_persistent-net.rules.
#
# The default name for this file is z45_persistent-net-generator.rules. 

ACTION!="add",                          GOTO="persistent_net_generator_end"
SUBSYSTEM!="net",                       GOTO="persistent_net_generator_end"

# ignore the interface if a name has already been set
NAME=="?*",                             GOTO="persistent_net_generator_end"

# ignore "secondary" raw interfaces of the madwifi driver
KERNEL=="ath*", ATTRS{type}=="802",     GOTO="persistent_net_generator_end"

# provide nice comments for the generated rules
SUBSYSTEMS=="pci", \
ENV{COMMENT}="PCI device $attr{vendor}:$attr{device}"
SUBSYSTEMS=="usb", \
 ENV{COMMENT}="USB device $attr{idVendor}:$attr{idProduct}"
SUBSYSTEMS=="ieee1394", \
 ENV{COMMENT}="Firewire device $attr{host_id}"
SUBSYSTEMS=="xen", \
 ENV{COMMENT}="Xen virtual device"
ENV{COMMENT}=="", \
 ENV{COMMENT}="Unknown $env{SUBSYSTEM} device ($env{DEVPATH})"
ATTRS{driver}=="?*", \
 ENV{COMMENT}="$env{COMMENT} ($attr{driver})"
  
# ignore interfaces without a driver link like bridges and VLANs
KERNEL=="eth*|ath*|wlan*|ra*|sta*", DRIVERS=="?*",\
        IMPORT{program}="write_net_rules $attr{address}"

ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"

LABEL="persistent_net_generator_end"

/etc/udev/rules.d/85-ifupdown.rules

$ /etc/udev/rules.d/85-ifupdown.rules
# This file causes network devices to be brought up or down as a result
# of hardware being added or removed, including that which isn't ordinarily
# removable.
# See udev(7) for syntax.

SUBSYSTEM=="net", DRIVERS=="?*", GOTO="net_start"
GOTO="net_end"

LABEL="net_start" 

# Bring devices up and down only if they're marked auto.
# Use start-stop-daemon so we don't wait on dhcp
ACTION=="add",          RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifup -- --allow auto $env{INTERFACE}"
ACTION=="remove",       RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifdown -- --allow auto  $env{INTERFACE}"

LABEL="net_end"

/proc/net/route

Conté la taula de rutes de la màquina. Aquest fitxer és molt similar al fitxer /proc/net/arp però per a la comanda route.

$ cat /proc/net/route
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window      IRTT                                                       
vmnet8  00C4A8C0        00000000        0001    0       0       0       00FFFFFF        0       0  0                                                                             
eth0    0001A8C0        00000000        0001    0       0       0       00FFFFFF        0       0  0                                                                               
vmnet1  00FCA8C0        00000000        0001    0       0       0       00FFFFFF        0       0  0                                                                             
eth0    00000000        0101A8C0        0003    0       0       0       00000000        0       0  0

Ens dóna el mateix resultat que la comanda route (el format està però en hexadecimal).

NOTA: No s'ha d'editar aquest fitxer directament. Cal utilitzar la comanda route

/etc/nscd.conf

És el fitxer de configuració del servei NSCD (Name Service Cache Daemon) en tots els sistemes.

/etc/nsswitch.conf

Vegeu Client_DNS#.2Fetc.2Fnsswitch.conf

/etc/network/options

A Debian s'utilitza (és llegeix els continguts a l'executar l'init script /etc/init.d/networking/restart) per configurar les opciones d'arrancada de les targetes de xarxa. Exemple:

$ cat /etc/network/options
ip_forward=no
spoofprotect=yes
syncookies=no

'Recursos:

/proc/sys/net/ipv4

La carpeta proc conté el pseudo sistema de fitxers (realment aquest sistema de fitxers només existeix en memòria) que s'utilitza com una interfície per accedir a les estructures de dades del kernel de Linux. Majoritariament és de només lectura, però en alguns casos es poden modificar algunes variables. La informació del protocol IP es guarda a la carpeta:

/proc/sys/net/ipv4

/proc/sys/net/ipv4/ip_forward

Indica si la màquina fa o no les funcions d'Encaminador. [2] [3]

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
En el client:
route add default gw <ip del servidor>
# Falta configurar el dns en el client també

/proc/sys/net/ipv6

Equivalent a l'anterior però per a la versió 6 del protocol IP.

/etc/NetworkManager/dispatcher.d/01ifupdown

$ cat /etc/NetworkManager/dispatcher.d/01ifupdown
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs ifupdown scripts when NetworkManager fiddles with interfaces. 

if [ -z "$1" ]; then
    echo "$0: called with no interface" 1>&2
    exit 1;
fi

# Fake ifupdown environment
export IFACE="$1"
export LOGICAL="$1"
export ADDRFAM="NetworkManager"
export METHOD="NetworkManager"
export VERBOSITY="0" 

# Run the right scripts
case "$2" in
    up)
        export MODE="start"
        export PHASE="up"
        exec run-parts /etc/network/if-up.d
        ;;
    down)
        export MODE="stop"
        export PHASE="down"
        exec run-parts /etc/network/if-down.d
        ;;
    pre-up)
        export MODE="start"
        export PHASE="pre-up"
        exec run-parts /etc/network/if-pre-up.d
        ;;
    post-down)
        export MODE="stop"
        export PHASE="post-down"
        exec run-parts /etc/network/if-post-down.d
        ;;
    *)
        echo "$0: called with unknown action \`$2'" 1>&2
        exit 1
        ;;
esac

Sembla doncs, que amb Netowrk manager els scripts de les carpetes /etc/network/if-x.d també s'executen.

/etc/bind

Veieu la secció Configuració de bind de l'article sobre DNS.

/etc/bind/named.conf

Veieu la secció /etc/bind/named.conf de l'article sobre DNS.

/etc/bind/named.conf.local

Veieu la secció /etc/bind/named.conf.local de l'article sobre DNS.

/etc/bind/named.conf.options

Veieu la secció /etc/bind/named.conf.options de l'article sobre DNS.

Configuració gràfica de xarxa en sistemes Red Hat / Fedora

$ system-config-network

Altres configuradors de la xarxa a Red Hat/Fedora són:

  • netconfig: Obsolet.
  • system-config-network-tui: Versió de text de system-config-network.
  • system-config-network-druid (Menu System tools - Internet configuration wizard): Wizard pas a pas de configuració de la xarxa.

Els fitxers de configuració de la resolució de noms són els mateixos que a Debian. El fitxer /etc/hosts per a la configuració estàtica i el fitxer /etc/resolv.conf per a la configuració del client de DNS.

Red Hat com Ubuntu, també permet configurar diferents perfils d'accés a xarxa. Els perfils es guarden a la carpeta /etc/sysconfig/networking/profiles. Cada perfil es guarda en una carpeta amb el nom del perfil. Per exemple, si el perfil és casa tenim una carpeta:

/etc/sysconfig/networking/profiles/casa

amb la informació de xarxa d'aquest perfil. Al carregar Fedora utilitza el perfil default (/etc/sysconfig/networking/profiles/default). Per canviar de perfil podem executar:

$ system-config-network-cmd -p profilename --activate.

Recursos:

Troubleshooting

Test de la xarxa

La següent bateria de comandes pot ser útil per tal de testejar el funcionament de la xarxa

$ping yahoo.com # verificar la conexión a Internet
$traceroute yahoo.com      # rastrear paquetes IP
$ifconfig                  # verificar la configuración del 
                               # anfitrión (host)
$route -n                  # verificar la configuración de la ruta
$dig [@dns-server.com] host.dom [{a|mx|any}] |less
         # verificar registros host.dom DNS [@ dns-server.com] para  
         # un registro {a|mx|any}
$ichains  -L -n |less      # verificar filtrado de paquetes (kernel 2.2)
$iptables -L -n |less      # verificar filtrado de paquetes (kernel 2.4)
$netstat -a                # mostrar todos los puertos abiertos
$netstat -l --inet         # mostrar los puertos en escucha
$netstat -ln --tcp         # mostrar puertos tcp en escucha (numérico)

Enllaços

http://arstechnica.com/gadgets/2016/04/the-ars-guide-to-building-a-linux-router-from-scratch/