Diferencia entre revisiones de «Configuració de la xarxa en Linux»
(→route) |
|||
(No se muestran 86 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
{{Enlaceslinux}} | |||
<div style="float:left; margin: 0 20px 10px 0;">__TOC__</div> | |||
==Cóm funciona la xarxa en Linux== | |||
Linux és un sistema operatiu centrat en la xarxa. Moltes de les funcions que fan els seus programes necessiten d'una gestió de la xarxa inclús per a la comunicació entre processos del propi equip. Linux és un tipus de Unix i Unix va ser el primer sistema en suportar la pila de protocols TCP/IP. | |||
Si pensem en els diferents nivells de TCP/IP, el nivel físic és feina dels NICs, però tots els demés són cosa del programari. L'enllaç de dades (MACs) és gestionat pel kernel, la capa de xarxa (direccions IP) és gestionat pel nucli de Linux i també gestiona la capa de transport, proporcionant ports als programes per a que es comuniquen sense errors. Sols la capa d'aplicació no és responsabilitat del sistema operatiu. | |||
Com que hi ha moltes distribucions de GNU/Linux, la manera de configurar-se no sempre és exactament igual. Però podem distingir entre una '''configuració clàssica''', disponible en les distribucions orientades a servidors i la configuració amb '''Network Manager''' que simplifica el treball en les distribucions per a escriptori. Les dues són prou compatibles i poden estar funcionant al mateix temps, encara que poden col·lisionar. | |||
El primer que necessitem per a que funcione la xarxa en Linux és reconèixer les targetes de xarxa o '''NICs'''. Les targetes solen ser PCI o PCI-E, encara que poden ser USB. És a dir, són dispossitius plug-and.play que són detectats pel kernel i s'assigna un nom. Això és cosa d'una ferramenta dels sistema operatiu anomenat '''[https://wiki.archlinux.org/index.php/Udev_(Espa%C3%B1ol) udev]'''. Els noms poden ser '''eth0, eth1...''' o, més recentment poden tindre '''predictable names''' com ''enp2s0'' que indica la situació física de la targeta o ''eno1'' que indica el nom que el firmware o la BIOS ha donat al dispositiu. | |||
En qualsevol cas, per veure totes les targetes que el kernel ha detectat cal fer: | |||
$ ip link show | |||
Una vegada la targeta és detectada, aquesta té una direcció MAC de fàbrica, el comandament anterior també indica quina és. | |||
Per a que la targeta tinga connexió de nivel de xarxa necessita direccions IP. Segons la configuració tradicional, aquesta es fa en [[#.2Fetc.2Fnetwork.2Finterfaces | /etc/network/interfaces]] i amb Network Manager es fa normalment de forma gràfica. Encara que podem trobar la configuració en '''/etc/NetworkManager/system-connections'''. Per consultar o configurar es pot utilitzar el comandament '''[[#ifconfig|ifconfig]]''' o, preferiblement, '''[[#ip|ip]] addr''' | |||
Una vegada té IP ja es pot comunicar, per resoldre la MAC d'una IP necessita gestionar els protocols ARP i es pot consultar el seu resultat amb el comandament '''[[#arp|arp]]'''. | |||
El programes poden comunicar-se demanant obrir ports amb un port d'una IP remota o local. Això ho fan en cridades al sistema. Es pot consultar els ports oberts amb '''[[#netstat|netstat]]'''. | |||
==Comandes de xarxa== | ==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=== | ===ifconfig=== | ||
{{nota|Vegeu també l'ordre [[#ip|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 é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: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ ifconfig | $ ifconfig | ||
eth0 Link encap:Ethernet HWaddr 00:30:1B:B7:CD:B6 | eth0 Link encap:Ethernet HWaddr 00:30:1B:B7:CD:B6 | ||
Línea 35: | Línea 62: | ||
collisions:0 txqueuelen:1000 | collisions:0 txqueuelen:1000 | ||
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) | RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) | ||
</div> | |||
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 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. | ||
Cóm mostrar només la informació d'una NIC: | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ ifconfig eth0 | $ ifconfig eth0 | ||
eth0 Link encap:Ethernet HWaddr 00:30:1B:B7:CD:B6 | eth0 Link encap:Ethernet HWaddr 00:30:1B:B7:CD:B6 | ||
Línea 50: | Línea 79: | ||
RX bytes:11958414 (11.4 MiB) TX bytes:3243289 (3.0 MiB) | RX bytes:11958414 (11.4 MiB) TX bytes:3243289 (3.0 MiB) | ||
Interrupt:209 | Interrupt:209 | ||
</div> | |||
Ifconfig ens proporciona la següent informació: | Ifconfig ens proporciona la següent informació: | ||
Línea 67: | Línea 96: | ||
'''Exemples:''' | '''Exemples:''' | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
*Apagar una interfície de xarxa: | *Apagar una interfície de xarxa: | ||
$ ifconfig eth0 down | $ ifconfig eth0 down | ||
# És equivalent a ifdown eth0 | |||
*Encendre una interfície de xarxa: | *Encendre una interfície de xarxa: | ||
$ ifconfig eth0 up | $ ifconfig eth0 up | ||
# É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 | $ 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|route]] o mitjançant un paràmetre al fitxer '''/etc/network/interfaces'''.}} | |||
''' | ''' Mode promiscu ''' | ||
El [http://ca.wikipedia.org/wiki/Mode_promiscu | 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 [[Sniffer|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: | *'''Establir el mode promiscu:''' | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ ifconfig eth0 promisc | $ ifconfig eth0 promisc | ||
$ ifconfig eth0 | $ ifconfig eth0 | ||
Línea 105: | Línea 127: | ||
RX bytes:30701229 (29.2 Mb) TX bytes:7878951 (7.5 Mb) | RX bytes:30701229 (29.2 Mb) TX bytes:7878951 (7.5 Mb) | ||
Interrupt:9 Base address:0x5000 | Interrupt:9 Base address:0x5000 | ||
</div> | |||
*'''Treure el mode promiscu''' | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ ifconfig eth0 -promisc | $ ifconfig eth0 -promisc | ||
$ ifconfig eth0 | $ ifconfig eth0 | ||
Línea 119: | Línea 142: | ||
RX bytes:13262810 (12.6 MiB) TX bytes:3501026 (3.3 MiB) | RX bytes:13262810 (12.6 MiB) TX bytes:3501026 (3.3 MiB) | ||
Interrupt:209 | Interrupt:209 | ||
</div> | |||
''' Activar/desactivar ARP ''' | |||
Consulteu també [[ARP]]. | Consulteu també [[ARP]]. | ||
Línea 126: | Línea 150: | ||
*Treure arp | *Treure arp | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ ifconfig eth0 -arp | $ ifconfig eth0 -arp | ||
$ ifconfig eth0 | $ ifconfig eth0 | ||
Línea 136: | Línea 161: | ||
RX bytes:30701229 (29.2 Mb) TX bytes:7878951 (7.5 Mb) | RX bytes:30701229 (29.2 Mb) TX bytes:7878951 (7.5 Mb) | ||
Interrupt:9 Base address:0x5000 | Interrupt:9 Base address:0x5000 | ||
</div> | |||
*Afegir arp | *Afegir arp | ||
$ ifconfig eth0 arp | $ ifconfig eth0 arp | ||
'''IP aliasing''' | |||
Permet configurar una targeta de xarxa amb múltiples IPs. Per exemple: | Permet configurar una targeta de xarxa amb múltiples IPs. Per exemple: | ||
Línea 151: | Línea 176: | ||
ifconfig eth0:4 192.168.0.6 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. | 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. [http://es.gentoo-wiki.com/HOWTO_IP_Aliasing Més informació] | ||
</div> | |||
{{nota|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=== | ===iwconfig=== | ||
Línea 178: | Línea 186: | ||
Aquesta comanda ens permet obtindre informació de les interfícies de xarxa que siguin wireless: | Aquesta comanda ens permet obtindre informació de les interfícies de xarxa que siguin wireless: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ iwconfig | $ iwconfig | ||
lo no wireless extensions. | lo no wireless extensions. | ||
Línea 195: | Línea 204: | ||
sit0 no wireless extensions. | sit0 no wireless extensions. | ||
</div> | |||
És un clon de la comanda ifconfig però adequada als paràmetres de les xarxes wireless. | És un clon de la comanda ifconfig però adequada als paràmetres de les xarxes wireless. | ||
===ifup=== | ===ifup=== | ||
Línea 219: | Línea 223: | ||
Pot donar aquest error inclús quan la targeta existeix però no esta al fitxer interfícies. | Pot donar aquest error inclús quan la targeta existeix però no esta al fitxer interfícies. | ||
Cal tenir en compte | 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 | *'''Discs durs extraibles''': El mateix sistema operatiu funcionant en diferents màquines idèntiques però que cada targeta de xarxa té la seva MAC | ||
Línea 238: | Línea 242: | ||
$ sudo ifup eth0 | $ sudo ifup eth0 | ||
ifup: interface eth0 already configured | ifup: interface eth0 already configured | ||
Amb el paràmetre -a podem arrancar totes les interfícies del sistema al mateix temps: | Amb el paràmetre -a podem arrancar totes les interfícies del sistema al mateix temps: | ||
Línea 244: | Línea 247: | ||
sudo ifup -a | sudo ifup -a | ||
''' Script Hooks. Fitxers .d de configuració de la xarxa ''' | |||
Hi ha 4 tipus de fitxers Hook Script: | Hi ha 4 tipus de fitxers Hook Script: | ||
Línea 256: | Línea 259: | ||
Hi ha una sèrie de variables que podeu utilitzar als scripts: | Hi ha una sèrie de variables que podeu utilitzar als scripts: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
<pre class="brush:bash"># Don't bother to restart sshd when lo is configured. | <pre class="brush:bash"># Don't bother to restart sshd when lo is configured. | ||
if [ "$IFACE" = lo ]; then | if [ "$IFACE" = lo ]; then | ||
Línea 272: | Línea 275: | ||
exit 0 | exit 0 | ||
fi</pre> | fi</pre> | ||
</div> | |||
===ifdown=== | ===ifdown=== | ||
Línea 287: | Línea 291: | ||
$ sudo ifdown -a | $ sudo ifdown -a | ||
{{nota|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=== | ===ping=== | ||
És una de les ferramentes més utilitzades, ja que permet saber si hi ha connexió bidireccional entre dos nodes d'una xarxa a partir de la IP. | |||
$ ping 192.168.5.3 | |||
===arp=== | ===arp=== | ||
Sense opcions mostra una llista amb les MACs resoltes per ARP que manté en cache. | |||
===arping=== | ===arping=== | ||
[http://en.wikipedia.org/wiki/Arping Arping] és una comanda molt similar a ping però que utilitza el [http://en.wikipedia.org/wiki/Address_Resolution_Protocol protocol ARP] en comptes del [http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol 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: | [http://en.wikipedia.org/wiki/Arping Arping] és una comanda molt similar a ping però que utilitza el [http://en.wikipedia.org/wiki/Address_Resolution_Protocol protocol ARP] en comptes del [http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol 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: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ arping -c 4 192.168.0.10 | $ arping -c 4 192.168.0.10 | ||
WARNING: interface is ignored: Operation not permitted | WARNING: interface is ignored: Operation not permitted | ||
Línea 311: | Línea 317: | ||
Received 4 response(s) | Received 4 response(s) | ||
''' Provocar arp-replys ''' | |||
Primer cal assignar-se una IP (ho podeu fer per [[IP Aliasing]]): | Primer cal assignar-se una IP (ho podeu fer per [[IP Aliasing]]): | ||
Línea 346: | Línea 342: | ||
06:02:52.620954 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 | $ sudo arping -q -c 3 -U -I eth0 192.168.99.35 | ||
Línea 355: | Línea 351: | ||
$ sudp tcpdump -c 3 -nni eth0 arp | $ sudp tcpdump -c 3 -nni eth0 arp | ||
''' Detectar duplicats ''' | |||
$ sudo arping -D -I eth0 192.168.99.147; echo $? | $ sudo arping -D -I eth0 192.168.99.147; echo $? | ||
</div> | |||
===dhclient=== | ===dhclient=== | ||
Si la targeta està configurada per a funcionar en DHCP, aquest comandament força el descobriment [[DHCP]] com a client. | |||
$ sudo dhclient -v eth0 | |||
Aquest exemple fa que la targeta eth0 intente configurar-se per DHCP i mostre el procés per pantalla. | |||
===ip=== | ===ip=== | ||
ip és l'eina de nova generació pensada per substituir eines ("obsoletes") com [[#ifconfig|ifconfig]] o [[#route|route]]. Es proporcionada per '''LARTC''' ([[Linux Advanced Routing and Traffic Control]]) | |||
Ordres que substitueix i millora: | |||
= | {| class="wikitable" | ||
! purpose | |||
! legacy "net-tools" | |||
! iproute2 | |||
|- | |||
| Address and link configuration | |||
| <tt>[[ifconfig]]</tt> | |||
| <tt>ip addr</tt>, <tt>ip link</tt> | |||
|- | |||
| [[Routing tables]] | |||
| <tt>[[route]]</tt> | |||
| <tt>[[ip route]]</tt> | |||
|- | |||
| [[Neighbors]] | |||
| <tt>[[arp]]</tt> | |||
| <tt>[[ip neigh]]</tt> | |||
|- | |||
| [[VLAN]] | |||
| <tt>[[VLAN|vconfig]]</tt> | |||
| <tt>[[ip link]]</tt> | |||
|- | |||
| [[Tunnels]] | |||
| <tt>[[iptunnel]]</tt> | |||
| <tt>[[ip tunnel]]</tt> | |||
|- | |||
| [[Multicast]] | |||
| <tt>[[ipmaddr]]</tt> | |||
| <tt>[[ip maddr]]</tt> | |||
|- | |||
| Statistics | |||
| <tt>[[netstat]]</tt> | |||
| <tt>[[ss]]</tt> | |||
|} | |||
'''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. | |||
[http://acacha.org/mediawiki/index.php/Ordre_ip font amb més informació] | |||
[http://lintut.com/how-to-use-linux-ip-command/#disqus_thread] | |||
===traceroute=== | |||
[http://en.wikipedia.org/wiki/Traceroute 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: | [http://en.wikipedia.org/wiki/Traceroute 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: | ||
Línea 434: | Línea 448: | ||
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. | 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. | ||
{{ | {{nota|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. | 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 | '''NOTA:''' sovint els asterisc es poden solucionar executant traceroute com a superusuari. | ||
Hi ha algunes utilitats relacionades amb traceroute que poden ser interessants: | Hi ha algunes utilitats relacionades amb traceroute que poden ser interessants: | ||
Línea 479: | Línea 469: | ||
És a dir és fa un traceroute amb [[IPv6]]. Es necessita connectivitat IPv6. | És a dir és fa un traceroute amb [[IPv6]]. Es necessita connectivitat IPv6. | ||
Vegeu també [[tracert]]. | Vegeu també [[#tracert|tracert]]. | ||
===tracepath=== | ===tracepath=== | ||
Línea 551: | Línea 491: | ||
===dig=== | ===dig=== | ||
Informa de la petició DNS per trobar un nom en Internet. És molt útil per saber si estem utilitzant un DNS correcte o per probar un DNS al configurar-lo. | |||
===nslookup=== | ===nslookup=== | ||
Paregut a Dig, encara que no tant potent. | |||
===host=== | ===host=== | ||
Un altra alternativa a dig. | |||
===dnstracer=== | ===dnstracer=== | ||
Línea 582: | Línea 512: | ||
===ipcalc=== | ===ipcalc=== | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
[http://jodies.de/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. | [http://jodies.de/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. | ||
Línea 599: | Línea 529: | ||
Si no s'especifica cap màscara, s'utilitza la màscara per defecte (255.255.255.0 o 24 en notació CIDR). | 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) | 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). | ||
$ ipcalc 192.168.0.1/24 | $ ipcalc 192.168.0.1/24 | ||
Línea 701: | Línea 628: | ||
:*'''Path:''' /usr/bin/ipcalc (podeu trobar el camí de la comanda executant which ipcalc) | :*'''Path:''' /usr/bin/ipcalc (podeu trobar el camí de la comanda executant which ipcalc) | ||
:*'''Manual''': [http://www.die.net/doc/linux/man/man1/ipcalc.1.html man ipcalc] | :*'''Manual''': [http://www.die.net/doc/linux/man/man1/ipcalc.1.html man ipcalc] | ||
</div> | |||
=== sipcalc === | === sipcalc === | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
[[Sipcalc]] és com [[ipcalc]] un calculador de (sub)xarxes IP que té dos parts: | [[Sipcalc]] és com [[ipcalc]] un calculador de (sub)xarxes IP que té dos parts: | ||
Línea 800: | Línea 728: | ||
'''Recursos''': | '''Recursos''': | ||
:*http://www.cyberciti.biz/tips/perform-simple-manipulation-of-ip-addresse.html | :*http://www.cyberciti.biz/tips/perform-simple-manipulation-of-ip-addresse.html | ||
</div> | |||
=== | ===[[tcpdump]]=== | ||
===whois=== | ===whois=== | ||
Línea 819: | Línea 742: | ||
Podeu consultar aquestes comandes a la pàgina [[Xarxes_Linux_Wireless#Comandes | Xarxes Linux Wireless]] d'aquesta wiki. | Podeu consultar aquestes comandes a la pàgina [[Xarxes_Linux_Wireless#Comandes | Xarxes Linux Wireless]] d'aquesta wiki. | ||
=== | ===[[IPtables]]=== | ||
===[[ncat]] ,nc o netcat=== | |||
===ethtool=== | ===ethtool=== | ||
Consulteu l'article [[ethtool]]. | Consulteu l'article [[ethtool]]. | ||
==Fitxers de configuració== | ==Fitxers de configuració== | ||
===/etc/ | === Configuració de la xarxa en /etc/netplan/ === | ||
A partir de Ubuntu 18.04, aquesta és la configuració per defecte. Netplan és més modern i milloara la configuració de les targetes amb múltiples direccions IP, entre altres coses. Netplan es basa en fitxers de configuració en format '''.yalm'''. | |||
<pre class="code"> | |||
network: | |||
version: 2 | |||
renderer: networkd | |||
ethernets: | |||
ens33: | |||
dhcp4: yes | |||
dhcp6: yes | |||
</pre> | |||
L'anterior exemple configura la targeta ens33 per a obtindre per DHCP tant la ipv4 com la ipv6. | |||
Per aplicar els canvis fets als fitxers poden executar: | |||
sudo netplan apply | |||
Si volem IPs estàtiques, podem escriure: | |||
<pre class="code"> | |||
network: | |||
version: 2 | |||
renderer: networkd | |||
ethernets: | |||
ens33: | |||
dhcp4: no | |||
dhcp6: no | |||
addresses: [192.168.1.2/24] | |||
gateway4: 192.168.1.1 | |||
nameservers: | |||
addresses: [8.8.8.8,8.8.4.4] | |||
</pre> | |||
O: | |||
<pre class="code"> | |||
network: | |||
version: 2 | |||
renderer: networkd | |||
ethernets: | |||
ens33: | |||
dhcp4: no | |||
dhcp6: no | |||
addresses: | |||
- 192.168.1.2/24 | |||
gateway4: 192.168.1.1 | |||
nameservers: | |||
addresses: | |||
- 8.8.8.8 | |||
- 8.8.4.4 | |||
</pre> | |||
Si necessitem escriure més d'una direcció s'han de separar per comes o amb guió i salt de línia. | |||
= | Per a especificar distintes rutes estàtiques: | ||
<pre class="code"> | |||
network: | |||
version: 2 | |||
renderer: networkd | |||
ethernets: | |||
enp3s0: | |||
addresses: | |||
- 9.0.0.9/24 | |||
- 10.0.0.10/24 | |||
- 11.0.0.11/24 | |||
#gateway4: # unset, since we configure routes below | |||
routes: | |||
- to: 0.0.0.0/0 | |||
via: 9.0.0.1 | |||
metric: 100 | |||
- to: 0.0.0.0/0 | |||
via: 10.0.0.1 | |||
metric: 100 | |||
- to: 0.0.0.0/0 | |||
via: 11.0.0.1 | |||
metric: 100 | |||
</pre> | |||
Tal vegada volem que tinga una IP extra a banda de la que li donen per DHCP: | |||
<pre class="code"> | |||
network: | |||
version: 2 | |||
ethernets: | |||
eth0: | |||
dhcp4: true | |||
addresses: [192.168.1.2/24] | |||
</pre> | |||
I pot ser que necessitem que arreplegue la direcció IP de dues targetes de xarxa, però que un porta d'enllaç tinga més prioritat. | |||
<pre class="code"> | |||
network: | |||
version: 2 | |||
ethernets: | |||
enred: | |||
dhcp4: yes | |||
dhcp4-overrides: | |||
route-metric: 100 # Més prioritat | |||
engreen: | |||
dhcp4: yes | |||
dhcp4-overrides: | |||
route-metric: 200 # Menys prioritat | |||
</pre> | |||
[https://netplan.io/examples Exemples] | |||
=== Configuració de la xarxa. Carpeta /etc/network === | === Configuració de la xarxa. Carpeta /etc/network === | ||
==== /etc/network/interfaces ==== | |||
{{nota|Aquesta part es considera obsoleta en Ubuntu 18.04, encara que funciona per a moltes necessitats retro-compatibles. Actualment cal utilitzar Netplan.}} | |||
== | <div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
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) | 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) | ||
Línea 895: | Línea 873: | ||
auto eth0 | auto eth0 | ||
iface eth0 inet dhcp | iface eth0 inet dhcp | ||
auto wlan0 | auto wlan0 | ||
Línea 915: | Línea 887: | ||
broadcast 192.168.1.255 | broadcast 192.168.1.255 | ||
gateway 192.168.1.1 | gateway 192.168.1.1 | ||
dns-nameservers 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: | 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: | ||
Línea 926: | Línea 899: | ||
En aquest cas quan demanem una ip per dhcp sempre ens donara la següent MAC. | 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''': | Podeu trobar exemples de configuració al fitxer comprimit '''/usr/share/doc/ifupdown/examples/network-interfaces.gz''': | ||
Línea 1058: | Línea 1029: | ||
run-parts: executing /etc/network/if-up.d/uml-utilities | run-parts: executing /etc/network/if-up.d/uml-utilities | ||
run-parts: executing /etc/network/if-up.d/wpasupplicant | run-parts: executing /etc/network/if-up.d/wpasupplicant | ||
</div> | |||
===/etc/init.d/networking=== | ===/etc/init.d/networking=== | ||
Línea 1081: | Línea 1053: | ||
En aquest cas, les opcions restart i force-reload són equivalents. | En aquest cas, les opcions restart i force-reload són equivalents. | ||
{{nota|restart està obsolet, cal fer stop i start en els Debian moderns}} | |||
===/etc/sysctl.conf=== | ===/etc/sysctl.conf=== | ||
Línea 1340: | Línea 1069: | ||
... | ... | ||
Consulteu l'article [[ | Consulteu l'article [[Capa_de_xarxa#Routers]]. | ||
===/etc/protocols=== | ===/etc/protocols=== | ||
Línea 1420: | Línea 1075: | ||
Aquest fitxer guarda els noms de protocols de TRANPORT utilitzats (o que suporta) aquest sistema. | Aquest fitxer guarda els noms de protocols de TRANPORT utilitzats (o que suporta) aquest sistema. | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ cat /etc/protocols | $ cat /etc/protocols | ||
# Internet (IP) protocols | # Internet (IP) protocols | ||
Línea 1476: | Línea 1132: | ||
sctp 132 SCTP # Stream Control Transmission Protocol | sctp 132 SCTP # Stream Control Transmission Protocol | ||
fc 133 FC # Fibre Channel | fc 133 FC # Fibre Channel | ||
</div> | |||
===/etc/services=== | ===/etc/services=== | ||
Línea 1485: | Línea 1139: | ||
Un extracte del fitxer: | Un extracte del fitxer: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
tcpmux 1/tcp # TCP port service multiplexer | tcpmux 1/tcp # TCP port service multiplexer | ||
echo 7/tcp | echo 7/tcp | ||
Línea 1532: | Línea 1186: | ||
www 80/tcp http # WorldWideWeb HTTP | www 80/tcp http # WorldWideWeb HTTP | ||
www 80/udp # HyperText Transfer Protocol | www 80/udp # HyperText Transfer Protocol | ||
</div> | |||
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: | 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: | ||
Línea 1561: | Línea 1215: | ||
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'''. | 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'''. | ||
===/etc/host.conf=== | ===/etc/host.conf=== | ||
Conté la manera per defecte de resoldre els noms i si es permeten més d'una IP en el fitxer hosts | |||
===/etc/hosts=== | ===/etc/hosts=== | ||
Conté una llista de noms i IPs coneguts per la màquina, de manera que no fa falta utilitzar un servei [[DNS]] | |||
===/etc/hosts.allow i /etc/hosts.deny=== | ===/etc/hosts.allow i /etc/hosts.deny=== | ||
Línea 1595: | Línea 1228: | ||
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. | 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. | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ cat /etc/hosts.allow | $ cat /etc/hosts.allow | ||
# /etc/hosts.allow: list of hosts that are allowed to access the system. | # /etc/hosts.allow: list of hosts that are allowed to access the system. | ||
Línea 1630: | Línea 1264: | ||
# versions of Debian this has been the default. | # versions of Debian this has been the default. | ||
# ALL: PARANOID | # ALL: PARANOID | ||
</diV> | |||
===/etc/resolv.conf=== | ===/etc/resolv.conf=== | ||
Llista dels DNS als que demanar els noms de domini. [https://wiki.archlinux.org/index.php/Resolv.conf_(Espa%C3%B1ol)] | |||
===Fitxer /etc/ethers=== | ===Fitxer /etc/ethers=== | ||
Línea 1654: | Línea 1285: | ||
loopback 127.0.0.0 | loopback 127.0.0.0 | ||
localdomain 10.0.0.0 | localdomain 10.0.0.0 | ||
===/etc/hostname=== | ===/etc/hostname=== | ||
Línea 1667: | Línea 1294: | ||
La comanda hostname ens proporciona el nom de la màquina. | La comanda hostname ens proporciona el nom de la màquina. | ||
===/proc/net/arp=== | ===/proc/net/arp=== | ||
Línea 1712: | Línea 1325: | ||
===/etc/udev/rules.d/70-persistent-net.rules=== | ===/etc/udev/rules.d/70-persistent-net.rules=== | ||
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: | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ cat /etc/udev/rules.d/70-persistent-net.rules | $ cat /etc/udev/rules.d/70-persistent-net.rules | ||
# This file maintains persistent names for network interfaces. | # This file maintains persistent names for network interfaces. | ||
Línea 1756: | Línea 1355: | ||
# PCI device 0x10ec:0x8167 (r8169) | # PCI device 0x10ec:0x8167 (r8169) | ||
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:0c", NAME="eth6" | SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:30:05:eb:38:0c", NAME="eth6" | ||
</div> | |||
==== Canviar el nom d'una interfície de xarxa ==== | ==== Canviar el nom d'una interfície de xarxa ==== | ||
Es pot fer modificant el fitxer | Es pot fer modificant el fitxer ''/etc/udev/rules.d/70-persistent-net.rules'': | ||
===/etc/udev/rules.d/75-persistent-net-generator.rules=== | ===/etc/udev/rules.d/75-persistent-net-generator.rules=== | ||
$ cat /etc/udev/rules.d/75-persistent-net-generator.rules | $ cat /etc/udev/rules.d/75-persistent-net-generator.rules | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
# these rules generate rules for persistent network device naming | # these rules generate rules for persistent network device naming | ||
Línea 1859: | Línea 1384: | ||
LABEL="persistent_net_generator_end" | LABEL="persistent_net_generator_end" | ||
</div> | |||
===/etc/udev/rules.d/85-ifupdown.rules=== | ===/etc/udev/rules.d/85-ifupdown.rules=== | ||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
$ /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 | # This file causes network devices to be brought up or down as a result | ||
Línea 1918: | Línea 1405: | ||
LABEL="net_end" | LABEL="net_end" | ||
</div> | |||
===/proc/net/route=== | ===/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. | 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. | ||
===/etc/nscd.conf=== | ===/etc/nscd.conf=== | ||
Línea 1939: | Línea 1416: | ||
===/etc/nsswitch.conf=== | ===/etc/nsswitch.conf=== | ||
===/etc/network/options=== | ===/etc/network/options=== | ||
Línea 1962: | Línea 1437: | ||
====/proc/sys/net/ipv4/ip_forward==== | ====/proc/sys/net/ipv4/ip_forward==== | ||
Indica si la màquina fa o no les funcions d'[[ | Indica si la màquina fa o no les funcions d'[[Capa_de_xarxa#Routers|Encaminador]]. | ||
===/proc/sys/net/ipv6=== | ===/proc/sys/net/ipv6=== | ||
Línea 1968: | Línea 1443: | ||
Equivalent a l'anterior però per a la versió 6 del protocol IP. | Equivalent a l'anterior però per a la versió 6 del protocol IP. | ||
=/etc/NetworkManager/ | ===/etc/NetworkManager/=== | ||
Directori on està la configuració de '''NetworkManager''' en cas de que estiga instal·lat. Es tracta del administrador de la configuració de la xarxa quant el Linu té GUI. | |||
===/etc/bind=== | ===/etc/bind=== | ||
Línea 2033: | Línea 1463: | ||
Veieu la secció '''/etc/bind/named.conf.options''' de l'article sobre [[DNS]]. | Veieu la secció '''/etc/bind/named.conf.options''' de l'article sobre [[DNS]]. | ||
= | = How-Tos = | ||
== Configurar múltiples IPs en una targeta estàticament == | |||
Com que en la configuració de la xarxa estan convivint els métodes clàsics amb els nous, el fitxer /etc/network/interfaces ha quedat en mig i es permeten varies configuracions. | |||
La primera, la tradicional, és crear targetes virtuals o '''alias''' amb els noms <nic>:<n>, per exemple eth0:0, eth0:1: | |||
<pre class="code"> | |||
auto eth0 | |||
allow-hotplug eth0 | |||
iface eth0 inet static | |||
address 192.168.1.42 | |||
netmask 255.255.255.0 | |||
gateway 192.168.1.1 | |||
auto eth0:0 | |||
allow-hotplug eth0:0 | |||
iface eth0:0 inet static | |||
address 192.168.1.43 | |||
netmask 255.255.255.0 | |||
auto eth0:1 | |||
allow-hotplug eth0:1 | |||
iface eth0:1 inet static | |||
address 192.168.1.44 | |||
netmask 255.255.255.0 | |||
</pre> | |||
No obstant, aquesta configuració no les crea de la mateixa manera que faria '''id addr add''' on no fa falta que tinga diferent nom. | |||
Aquesta solució pot funcionar: | |||
<pre class="code"> | |||
auto eth0 | |||
allow-hotplug eth0 | |||
iface eth0 inet static | |||
address 192.168.1.42 | |||
netmask 255.255.255.0 | |||
gateway 192.168.1.1 | |||
iface eth0 inet static | |||
address 192.168.1.43 | |||
netmask 255.255.255.0 | |||
iface eth0 inet static | |||
address 192.168.1.44 | |||
netmask 255.255.255.0 | |||
</pre> | |||
El problema és que falla amb algunes targetes de xarxa i no és fàcil de llegir. | |||
La solució proposada per Debian és la següent: | |||
<pre class="code"> | |||
auto eth0 | |||
allow-hotplug eth0 | |||
iface eth0 inet static | |||
address 192.168.1.42 | |||
netmask 255.255.255.0 | |||
gateway 192.168.1.1 | |||
up ip addr add 192.168.1.43/24 dev $IFACE label $IFACE:0 | |||
down ip addr del 192.168.1.43/24 dev $IFACE label $IFACE:0 | |||
up ip addr add 192.168.1.44/24 dev $IFACE label $IFACE:1 | |||
down ip addr del 192.168.1.44/24 dev $IFACE label $IFACE:1 | |||
up ip addr add 10.10.10.14/24 dev $IFACE label $IFACE:2 | |||
down ip addr del 10.10.10.14/24 dev $IFACE label $IFACE:2 | |||
</pre> | |||
En la que es defineix la configuració bàsica i a continuació el que ha de fer al arrancar la targeta que és donar-li 3 ip addicionals i el que ha de fer al apagar-la. | |||
=Troubleshooting= | =Troubleshooting= | ||
Línea 2086: | Línea 1547: | ||
$netstat -l --inet # mostrar los puertos en escucha | $netstat -l --inet # mostrar los puertos en escucha | ||
$netstat -ln --tcp # mostrar puertos tcp en escucha (numérico) | $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/ | |||
https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ | |||
https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_Interface |
Revisión actual - 20:05 22 feb 2019
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
Cóm funciona la xarxa en Linux
Linux és un sistema operatiu centrat en la xarxa. Moltes de les funcions que fan els seus programes necessiten d'una gestió de la xarxa inclús per a la comunicació entre processos del propi equip. Linux és un tipus de Unix i Unix va ser el primer sistema en suportar la pila de protocols TCP/IP.
Si pensem en els diferents nivells de TCP/IP, el nivel físic és feina dels NICs, però tots els demés són cosa del programari. L'enllaç de dades (MACs) és gestionat pel kernel, la capa de xarxa (direccions IP) és gestionat pel nucli de Linux i també gestiona la capa de transport, proporcionant ports als programes per a que es comuniquen sense errors. Sols la capa d'aplicació no és responsabilitat del sistema operatiu.
Com que hi ha moltes distribucions de GNU/Linux, la manera de configurar-se no sempre és exactament igual. Però podem distingir entre una configuració clàssica, disponible en les distribucions orientades a servidors i la configuració amb Network Manager que simplifica el treball en les distribucions per a escriptori. Les dues són prou compatibles i poden estar funcionant al mateix temps, encara que poden col·lisionar.
El primer que necessitem per a que funcione la xarxa en Linux és reconèixer les targetes de xarxa o NICs. Les targetes solen ser PCI o PCI-E, encara que poden ser USB. És a dir, són dispossitius plug-and.play que són detectats pel kernel i s'assigna un nom. Això és cosa d'una ferramenta dels sistema operatiu anomenat udev. Els noms poden ser eth0, eth1... o, més recentment poden tindre predictable names com enp2s0 que indica la situació física de la targeta o eno1 que indica el nom que el firmware o la BIOS ha donat al dispositiu.
En qualsevol cas, per veure totes les targetes que el kernel ha detectat cal fer:
$ ip link show
Una vegada la targeta és detectada, aquesta té una direcció MAC de fàbrica, el comandament anterior també indica quina és.
Per a que la targeta tinga connexió de nivel de xarxa necessita direccions IP. Segons la configuració tradicional, aquesta es fa en /etc/network/interfaces i amb Network Manager es fa normalment de forma gràfica. Encara que podem trobar la configuració en /etc/NetworkManager/system-connections. Per consultar o configurar es pot utilitzar el comandament ifconfig o, preferiblement, ip addr
Una vegada té IP ja es pot comunicar, per resoldre la MAC d'una IP necessita gestionar els protocols ARP i es pot consultar el seu resultat amb el comandament arp.
El programes poden comunicar-se demanant obrir ports amb un port d'una IP remota o local. Això ho fan en cridades al sistema. Es pot consultar els ports oberts amb netstat.
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
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:
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.
Cóm mostrar només la informació d'una NIC:
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:
iwconfig
Aquesta comanda ens permet obtindre informació de les interfícies de xarxa que siguin wireless:
É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:
- /etc/network/if-down.d: S'executa després d'aturar (ifdown) qualsevol interfície de xarxa
- /etc/network/if-post-down.d: S'executa abans d'aturar (ifdown) qualsevol interfície de xarxa
- /etc/network/if-pre-up.d: S'executa abans d'activar (ifup) qualsevol interfície de xarxa
- /etc/network/if-up.d/: S'executa després d'activar (ifup) qualsevol interfície de xarxa
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:
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
ping
És una de les ferramentes més utilitzades, ja que permet saber si hi ha connexió bidireccional entre dos nodes d'una xarxa a partir de la IP.
$ ping 192.168.5.3
arp
Sense opcions mostra una llista amb les MACs resoltes per ARP que manté en cache.
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:
dhclient
Si la targeta està configurada per a funcionar en DHCP, aquest comandament força el descobriment DHCP com a client.
$ sudo dhclient -v eth0
Aquest exemple fa que la targeta eth0 intente configurar-se per DHCP i mostre el procés per pantalla.
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.
traceroute
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.
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.
Hi ha algunes utilitats relacionades amb traceroute que poden ser interessants:
- http://www.mapulator.com/: Utilitza traceroute junt amb Google Maps per tal de dibuixar una ruta física entre dues màquines en un mapa de Google.
- http://paris-traceroute.net/download.htm
L'ordre:
$ traceroute6
és equivalent a:
$ traceroute -6
És a dir és fa un traceroute amb IPv6. Es necessita connectivitat IPv6.
Vegeu també tracert.
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
Informa de la petició DNS per trobar un nom en Internet. És molt útil per saber si estem utilitzant un DNS correcte o per probar un DNS al configurar-lo.
nslookup
Paregut a Dig, encara que no tant potent.
host
Un altra alternativa a dig.
dnstracer
- Paquet: dnstracer
- Path: /usr/bin/dnstracer (podeu trobar el camí de la comanda executant which dnstracer)
- Manual: man dnstracer
nmap
Consulteu nmap
ipcalc
sipcalc
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.
Fitxers de configuració
Configuració de la xarxa en /etc/netplan/
A partir de Ubuntu 18.04, aquesta és la configuració per defecte. Netplan és més modern i milloara la configuració de les targetes amb múltiples direccions IP, entre altres coses. Netplan es basa en fitxers de configuració en format .yalm.
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: yes dhcp6: yes
L'anterior exemple configura la targeta ens33 per a obtindre per DHCP tant la ipv4 com la ipv6.
Per aplicar els canvis fets als fitxers poden executar:
sudo netplan apply
Si volem IPs estàtiques, podem escriure:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no dhcp6: no addresses: [192.168.1.2/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8,8.8.4.4]
O:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no dhcp6: no addresses: - 192.168.1.2/24 gateway4: 192.168.1.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4
Si necessitem escriure més d'una direcció s'han de separar per comes o amb guió i salt de línia.
Per a especificar distintes rutes estàtiques:
network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 9.0.0.9/24 - 10.0.0.10/24 - 11.0.0.11/24 #gateway4: # unset, since we configure routes below routes: - to: 0.0.0.0/0 via: 9.0.0.1 metric: 100 - to: 0.0.0.0/0 via: 10.0.0.1 metric: 100 - to: 0.0.0.0/0 via: 11.0.0.1 metric: 100
Tal vegada volem que tinga una IP extra a banda de la que li donen per DHCP:
network: version: 2 ethernets: eth0: dhcp4: true addresses: [192.168.1.2/24]
I pot ser que necessitem que arreplegue la direcció IP de dues targetes de xarxa, però que un porta d'enllaç tinga més prioritat.
network: version: 2 ethernets: enred: dhcp4: yes dhcp4-overrides: route-metric: 100 # Més prioritat engreen: dhcp4: yes dhcp4-overrides: route-metric: 200 # Menys prioritat
Configuració de la xarxa. Carpeta /etc/network
/etc/network/interfaces
/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.
/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 Capa_de_xarxa#Routers.
/etc/protocols
Aquest fitxer guarda els noms de protocols de TRANPORT utilitzats (o que suporta) aquest sistema.
/etc/services
Conté una llista dels noms de serveis reconeguts pel sistema (protocols a nivell aplicació).
Un extracte del fitxer:
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.
/etc/host.conf
Conté la manera per defecte de resoldre els noms i si es permeten més d'una IP en el fitxer hosts
/etc/hosts
Conté una llista de noms i IPs coneguts per la màquina, de manera que no fa falta utilitzar un servei DNS
/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.
/etc/resolv.conf
Llista dels DNS als que demanar els noms de domini. [2]
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
/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.
/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
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:
Canviar el nom d'una interfície de xarxa
Es pot fer modificant el fitxer /etc/udev/rules.d/70-persistent-net.rules:
/etc/udev/rules.d/75-persistent-net-generator.rules
$ cat /etc/udev/rules.d/75-persistent-net-generator.rules
/etc/udev/rules.d/85-ifupdown.rules
/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.
/etc/nscd.conf
És el fitxer de configuració del servei NSCD (Name Service Cache Daemon) en tots els sistemes.
/etc/nsswitch.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.
/proc/sys/net/ipv6
Equivalent a l'anterior però per a la versió 6 del protocol IP.
/etc/NetworkManager/
Directori on està la configuració de NetworkManager en cas de que estiga instal·lat. Es tracta del administrador de la configuració de la xarxa quant el Linu té GUI.
/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.
How-Tos
Configurar múltiples IPs en una targeta estàticament
Com que en la configuració de la xarxa estan convivint els métodes clàsics amb els nous, el fitxer /etc/network/interfaces ha quedat en mig i es permeten varies configuracions.
La primera, la tradicional, és crear targetes virtuals o alias amb els noms <nic>:<n>, per exemple eth0:0, eth0:1:
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 192.168.1.43 netmask 255.255.255.0 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 192.168.1.44 netmask 255.255.255.0
No obstant, aquesta configuració no les crea de la mateixa manera que faria id addr add on no fa falta que tinga diferent nom.
Aquesta solució pot funcionar:
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 iface eth0 inet static address 192.168.1.43 netmask 255.255.255.0 iface eth0 inet static address 192.168.1.44 netmask 255.255.255.0
El problema és que falla amb algunes targetes de xarxa i no és fàcil de llegir. La solució proposada per Debian és la següent:
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 up ip addr add 192.168.1.43/24 dev $IFACE label $IFACE:0 down ip addr del 192.168.1.43/24 dev $IFACE label $IFACE:0 up ip addr add 192.168.1.44/24 dev $IFACE label $IFACE:1 down ip addr del 192.168.1.44/24 dev $IFACE label $IFACE:1 up ip addr add 10.10.10.14/24 dev $IFACE label $IFACE:2 down ip addr del 10.10.10.14/24 dev $IFACE label $IFACE:2
En la que es defineix la configuració bàsica i a continuació el que ha de fer al arrancar la targeta que és donar-li 3 ip addicionals i el que ha de fer al apagar-la.
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/
https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_Interface