Diferencia entre revisiones de «Configuració de la xarxa en Linux»
Línea 1120: | Línea 1120: | ||
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 1155: | Línea 1156: | ||
# 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=== |
Revisión del 15:12 25 sep 2017
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. Carpeta /etc/network
/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 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 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:
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:
- /etc/network/if-down.d: S'executa just abans d'aturar/desconfigurar les interfícies de xarxa
- /etc/network/if-post-down.d: S'executa just després d'aturar/desconfigurar les interfícies de xarxa
- /etc/network/if-pre-up.d: S'executa just abans de configurar les interfícies de xarxa
- /etc/network/if-up.d: S'executa just després de configurar les interfícies de xarxa
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.
/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
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):
$ 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/
https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_Interface