Comandes Linux per xarxes
Fem un resum de les comandes de Linux principals per gestionar les interfícies de xarxa.
Espero que us sigui útil :)
Contingut
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