Comandes Linux per xarxes

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Fem un resum de les comandes de Linux principals per gestionar les interfícies de xarxa.

Espero que us sigui útil :)


Intro

Aquest tutorial està basat sobretot en Debian/Ubuntu. Si estàs utilitzant una altra distribució, algunes coses no funcionaran, tot i moltes sí (comandes com ifconfig son comunes).

Més pistes:


ip

Fins ara s'ha treballat molt amb la comanda ifconfig però actualment està en vies de ser "deprecated" i s'opta per l'ús de la comanda "ip".

Per veure les interfícies de xarxa (IPv4) i les seves IPs:

$ ip -4 address


ifconfig

En windows equival a ipconfig.

Sense cap més paràmetre ens mostra totes les interfícies de xarxa disponibles i la seva configuració (en l'exemple apareixen 3):

enric@pepino:~$ ifconfig 
br0       Link encap:Ethernet  HWaddr 00:1a:4d:81:d0:7e  
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:4dff:fe81:d07e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4887506 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10723634 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2580918041 (2.5 GB)  TX bytes:14895530212 (14.8 GB)

eth0      Link encap:Ethernet  HWaddr 00:1a:4d:81:d0:7e  
          inet6 addr: fe80::21a:4dff:fe81:d07e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4887506 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10721992 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2649343780 (2.6 GB)  TX bytes:14893036414 (14.8 GB)
          Interrupt:21 Base address:0x6000 

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:608 errors:0 dropped:0 overruns:0 frame:0
          TX packets:608 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:57779 (57.7 KB)  TX bytes:57779 (57.7 KB)

Noms de les interfícies (eth0, eth1, etc.)

Cal remarcar que "ifconfig" sense més només ens mostrarà les interfícies amb una IP assignada. Si no estan correctament configurades a l'arxiu /etc/network/interfaces no ens apareixeran.

Si en algun moment donat tenim problemes per veure les interfícies perquè no s'han configurat correctament, podem deduir els noms de les interfícies amb la comanda:

$ ifconfig -a

Així sortiran totes les interfícies encara que no estiguin configurades.

Adreces MAC

És molt típic en Linux trobar-se que si canviem la targeta de xarxa (o canviem la MAC en una màquina virtual) la màquina recorda l'adreça MAC antiga i en la targeta nova no sortirà "eth0" sinó "eth1", pel que ens caldrà modificar l'arxiu de configuració per que funcioni.

Si volem que el nostre Linux "oblidi" les adreces MAC només cal esborrar l'arxiu /etc/udev/rules.d/70-persistent-net.rules (o modificar-lo si ets molt "machote"). Al reiniciar la màquina la nostra interfície "eth1" tornarà a ser "eth0".

$ sudo rm /etc/udev/rules.d/70-persistent-net.rules
$ sudo reboot


Habilitar i deshabilitar les interfícies de xarxa

Disposem de les comandes ifconfig, ifup i ifdown. Ifconfig, però, està en desús i quedarà obsoleta.

enric@pepino:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.672 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.506 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.502 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.502/0.560/0.672/0.079 ms
enric@pepino:~$ 
enric@pepino:~$ 
enric@pepino:~$ sudo ifdown br0
enric@pepino:~$ 
enric@pepino:~$ ping 192.168.1.1
connect: Network is unreachable
enric@pepino:~$ 
enric@pepino:~$ 
enric@pepino:~$ sudo ifup br0
enric@pepino:~$ 
enric@pepino:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=12.2 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.501 ms
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.501/6.392/12.283/5.891 ms
enric@pepino:~$ 


Podem forçar l'adreça IP si acompanyem la comanda amb l'adreça IP desitjada (en aquest cas forcem a 192.168.1.15):

$ sudo ifconfig eth1 192.168.1.15 up

I fins i tot podem especificar la màscara:

$ sudo ifconfig eth1 192.168.1.15 netmask 255.255.255.0 up


Configuració manual de la xarxa

Per configurar la xarxa cal modificar l'arxiu /etc/network/interfaces amb el vostre editor preferit. Jo, com que soc una mica friki utilitzo el vi, és a dir:

$ sudo vi /etc/network/interfaces

Però si no estàs acostumat és una mica "especial". Potser us anirà millor el nano:

$ sudo nano /etc/network/interfaces

...i ale, a modificar!

Reiniciant la xarxa

MOLT IMPORTANT: recordeu que quan es modifica aquest arxiu cal reiniciar les interfícies de xarxa amb la comanda:

$ sudo /etc/init.d/networking restart # no funciona des de la Ubuntu Server 14.04

Si no, els canvis no seràn efectius (a no ser que reinicieu la màquina, que no cal).

A partir de la Ubuntu Server 14.04, per reiniciar la xarxa s'ha de fer individualment per cada interfície. Per exemple (suposant que hem posat la configuració desitjada a /etc/network/interfaces):

$ sudo ifdown eth0
$ sudo ifup eth0

...o el què és el mateix:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up


Configuració típica

Una configuració típica de l'arxiu /etc/network/interfaces per una adreça estàtica (IP fixa) podria ser:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.1.4
        network 192.168.1.0
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8

auto eth1
iface eth1 inet dhcp

En aquest exemple tenim:

  • eth0: configuració estàtica (IP fixa)
  • eth1: configuració automàtica (per DHCP: el servidor DHCP de la xarxa ens assignarà la IP i demés paràmetres).

Òbviament per tenir aquesta configuració ens caldria tenir 2 interfícies de xarxa (eth0 i eth1).

Servidor DNS

El servidor/s DNS es troben a l'arxiu /etc/resolv.conf. Ull, perquè ara no és editable. Ens hauria de mostrar algo així:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8

El servidor 8.8.8.8 és el DNS de Google, i és molt fàcil de recordar. Hi ha molts servidors DNS públics, típicament dels ISPs (movistar, orange, etc.)

  • En versions anteriors a la Ubuntu 12.04 es modifica directament editant el fitxer posant a cada línia un servidor, com per exemple:
    nameserver 8.8.8.8
  • A partir de la Ubuntu 12.04 la configuració dels servidors de domini es posa en el /etc/network/interfaces, com hem vist a l'exemple anterior, amb la directiva:
    dns-nameservers 8.8.8.8


traceroute i tracepath

Ens mostren els diferents salts entre routers que fan els paquets IP fins arribar al destí.

enric@pepino:~$ traceroute www.cacauet.org
traceroute to www.cacauet.org (69.16.220.56), 30 hops max, 60 byte packets
 1  livebox.home (192.168.1.1)  1.425 ms  1.642 ms  1.849 ms
 2  * * *
 3  62.36.223.129 (62.36.223.129)  35.999 ms  39.225 ms  39.530 ms
 4  62.36.196.229 (62.36.196.229)  48.297 ms  48.643 ms  48.973 ms
 5  62.36.202.70 (62.36.202.70)  49.342 ms  49.646 ms  50.329 ms
 6  81.52.179.205 (81.52.179.205)  58.280 ms  40.475 ms  42.177 ms
 7  tengige0-2-0-4.madtr1.Madrid.opentransit.net (193.251.242.89)  47.885 ms  48.625 ms  48.961 ms
 8  * * *
 9  level3-2.GW.opentransit.net (193.251.254.14)  43.373 ms  46.821 ms  48.282 ms
10  * * *
11  ae-5-5.ebr1.Paris1.Level3.net (4.69.141.42)  56.447 ms  56.543 ms  57.822 ms
12  ae-24-24.ebr2.Paris1.Level3.net (4.69.143.130)  59.335 ms ae-23-23.ebr2.Paris1.Level3.net (4.69.143.126)  57.583 ms ae-22-22.ebr2.Paris1.Level3.net (4.69.143.122)  55.993 ms
13  ae-43-43.ebr2.Washington1.Level3.net (4.69.137.58)  144.135 ms ae-44-44.ebr2.Washington1.Level3.net (4.69.137.62)  143.604 ms ae-43-43.ebr2.Washington1.Level3.net (4.69.137.58)  143.602 ms
14  ae-5-5.ebr2.Washington12.Level3.net (4.69.143.222)  145.587 ms  146.479 ms  145.338 ms
15  ae-6-6.ebr2.Chicago2.Level3.net (4.69.148.146)  152.482 ms  152.926 ms  152.430 ms
16  * * *
17  CWIE-LLC.edge2.Chicago2.Level3.net (4.59.29.82)  175.354 ms  167.744 ms  219.739 ms
18  209.59.157.206 (209.59.157.206)  160.109 ms  158.452 ms  155.870 ms
19  209.59.157.106 (209.59.157.106)  171.250 ms  169.237 ms  170.719 ms
20  lw-dc2-sec1-dist1-po2.rtr.liquidweb.com (209.59.157.218)  166.818 ms  166.441 ms  165.267 ms
21  * * *


netstat

Aquesta és una comanda molt important que ens dóna informació de les interfícies de xarxa i la taula d'enrutament. El típic us és netstat -rn:

enric@pepino:~$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 br0