====== 205.3 Troubleshooting Network Issues ====== Pertenece a [[informatica:certificaciones:lpic:lpic-2:205_network_configuration|LPI Topic 205: Network Configuration]] * **Weight**: 4 * **Description**: Candidates should be able to identify and correct common network setup issues, to include knowledge of locations for basic configuration files and commands. * **Key Knowledge Areas**: * Location and content of access restriction files * Utilities to configure and manipulate ethernet network interfaces * Utilities to manage routing tables * Utilities to list network states. * Utilities to gain information about the network configuration * Methods of information about the recognized and used hardware devices * System initialization files and their contents (SysV init process) * Awareness of NetworkManager and its impact on network configuration * **Terms and Utilities**: * ''ip'' * ''ifconfig'' * ''route'' * ''ss'' * ''netstat'' * ''/etc/network/'', ''/etc/sysconfig/network-scripts/'' * ''ping'', ''ping6'' * ''traceroute'', ''traceroute6'' * ''mtr'' * ''hostname'' * System log files such as ''/var/log/syslog'', ''/var/log/messages'' and the systemd journal * ''dmesg'' * ''/etc/resolv.conf'' * ''/etc/hosts'' * ''/etc/hostname'', ''/etc/HOSTNAME'' * ''/etc/hosts.allow'', ''/etc/hosts.deny'' ===== hostname ===== El comando ''hostname'' asigna dinámicamente el nombre a un host o permite consultar el nombre del host. Para establecer el nombre del host estáticamente es necesario establecerlo en el fichero de configuración. Dicho fichero difiere en función de la distribución utilizada: * Debian: ''/etc/hostname''. * Red Hat: ''/etc/sysconfig/network'' junto con otros parámetros de configuración de red. hostname debian10 También podemos consultar la información del hostname desde ''/proc/sys/kernel/hostname'' y hacer el cambio en dicho fichero. Este cambio se perderá en el siguiente arranque. ===== Configuración de interfaces ===== ==== Red Hat ==== Los ficheros de configuración de las interfaces están presentes en el directorio ''/etc/sysconfig/network-scripts/''. Dichos ficheros son llamados ''ifcfg-xxx'', donde ''xxx'' es el nombre de la interfaz de red. Ejemplo de ''/etc/sysconfig/network-scripts/ifcfg-eth0'': DEVICE="eth0" BOOTPROTO="dhcp" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" En una configuración estática: DEVICE="eth0" ONBOOT="yes" BOOTPROTO="static" IPADDR=10.0.2.152 NETMASK=255.255.255.0 GATEWAY=10.0.2.1 ==== Debian ==== En debian la configuración de las interfaces se agrupan en un único fichero ''/etc/network/interfaces'': # Interfaces que se activarán al arranque auto lo eth0 eth1 iface lo inet loopback # Configuración estática iface eth0 inet static address 192.168.3.2 netmask 255.255.255.0 gateway 192.168.3.1 # Configuración por DHCP iface eth1 inet dhcp ===== Depuración de errores ===== ==== dmesg ==== Comando que lista el buffer de mensajes del núcleo (//kernel ring buffer//) desde el arranque. Entre ellos los posibles errores de una tarjeta de red. Los eventos asociados a la red son registrado en los siguientes ficheros de logs: * Debian: ''/var/log/syslog'' * Red Hat: ''/var/log/messages'' $ dmesg (...) [11097.907564] device eth0 entered promiscuous mode [11101.758363] device eth0 left promiscuous mode [11108.651928] device eth0 entered promiscuous mode [11120.785132] device eth0 left promiscuous mode ===== Resolución de nombres ===== Cuando hacemos pruebas con un ping a un nombre de dominio y no obtenemos respuesta, podría haber un problema con la resolución del dominio (problema con DNS). ==== /etc/resolv.conf ==== El fichero ''/etc/resolv.conf'': se utiliza para indicar al sistema qué servidores de nombres y qué dominios hay que consultar para resolver las peticiones DNS. Ejemplo de ''/etc/resolv.conf'': domain mundo-R.com search mundo-R.com nameserver 10.0.2.3 Según ese fichero, las búsquedas se realizarán primero en el dominio ''mundo-r.com'' y luego al servidor DNS ''10.0.2.3''. ==== /etc/hosts ==== El fichero ''/etc/hosts'' permite establecer una correspondencia entre las direcciones IP y los nombre de las máquinas. Se podría pensar en él como una especie de DNS local. Ejemplo: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.10 debian10.curso.esp debian10 192.168.2.5 sercentos7.curso.esp sercentos7 192.168.2.152 orion.curso.esp orion De tal manera que podríamos hacer ping a debian10 en lugar de a la IP 192.168.2.10. ==== host ==== Herramienta que nos permite hacer consultas al servidor DNS de la red: host google.es google.es has address 216.58.211.227 google.es has IPv6 address 2a00:1450:4003:805::2003 google.es mail is handled by 10 aspmx.l.google.com. google.es mail is handled by 50 alt4.aspmx.l.google.com. google.es mail is handled by 20 alt1.aspmx.l.google.com. google.es mail is handled by 30 alt2.aspmx.l.google.com. google.es mail is handled by 40 alt3.aspmx.l.google.com. ==== dig ==== Herramienta que nos permite hacer consultas al servidor DNS de la red, obteniendo información mucho más detallada que ''host''. El programa ''dig'' no viene instalado por defecto. Pertenece al paquete ''dnsutils''. dig google.es ; <<>> DiG 9.11.5-P4-5.1+deb10u3-Debian <<>> google.es ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 55359 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: b1a8a025bbd00c57 (echoed) ;; QUESTION SECTION: ;google.es. IN A ;; Query time: 15 msec ;; SERVER: 10.0.2.3#53(10.0.2.3) ;; WHEN: Thu Apr 08 12:35:01 CEST 2021 ;; MSG SIZE rcvd: 50 Podemos hacer consultas al servidor DNS pidiendo ciertos tipos de entradas. Por ejemplo, servidores de correo: dig MX google.es Si queremos que nos dé la información principal: dig ANY google.es ===== TCP wrappers ===== Permite el bloqueo de determinados servicios a través de la red. Utiliza la librería ''libwrap'' que permite monitorizar y controlar las conexiones TCP entrantes. Los ficheros de configuración son: * ''/etc/hosts.allow'' * ''/etc/hosts.deny'' Durante la comprobación de reglas **primero** se verifica el ''/etc/hosts.allow'' y después ''/etc/hosts.deny''. ''tcpd'' es el demonio que lee los ficheros de configuración. Si en una máquina añadimos hosts al fichero ''/etc/hosts.deny'' estaríamos bloqueando el acceso de esos hosts a dicha máquina. Formato de los ficheros: servicio: clientes * **servicio**: servicio a comprobar (ALL para todos) * **clientes**: clientes autorizados o prohibidos (según sea fichero ''hosts.allow'' o ''hosts.deny''). Ejemplo ''/etc/hosts.allow'': vsftpd: 192.168.2.5 telnet: ALL Quiere decir que al servicio ''vsftdp'' solo podrá acceder el host ''129.168.2.5'', pero a ''telnet'' podrán todos. Ejemplo ''/etc/hosts.deny'': ALL: .baddomain.org EXCEPT trusted.baddomain.org Quiere decir que los hosts que pertenzcan a ''.baddomain.org'' no podrán acceder a nada, salvo los hosts de trusted.baddomain.org. * ''ALL'': Todos los hosts. * ''LOCAL'': Todos los host de la red local. * ''UNKNOWN'': Host con nombre sin resolver. * ''KNOWN'': Host con nombre conocido. * ''EXCEPT'': Permite la exclusion de hosts. ===== Tests ===== **A DNS server has the IP address 192.168.0.1. Which TWO of the following need to be done on a client machine to use this DNS server?** * Add ''nameserver 192.168.0.1'' to ''/etc/resolv.conf'' (**Solución**) * Run ''route add nameserver 192.168.0.1'' * Run ''ifconfig eth0 nameserver 192.168.0.1'' * Ensure that the dns service is listed in the hosts entry in the ''/etc/nsswitch.conf'' file (**Solución**) * Run ''bind add nameserver 192.168.0.1'' En el fichero ''/etc/nsswitch.conf'' se especifica qué resuelve antes, si los archivos como ''/etc/hosts'' o el DNS. **Considering the following kernel IP routing table now, which of the following commands must be remove the route to the network 10.10.1.0/24?** Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 200.207.199.162 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 172.16.87.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.246.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.10.1.0 192.168.246.11 255.255.255.0 UG 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 200.207.199.162 0.0.0.0 UG 0 0 0 ppp0 * ''route del 10.10.1.0'' * ''route del 10.10.1.0/24'' * ''route del -net 10.10.1.0/24'' (**Solución**) * ''route del 10.10.1.0/24 gw 192.168.246.11'' * ''route del -net 10.10.1.0''