====== 205.2 Advanced Network Configuration and Troubleshooting ======
Pertenece a [[informatica:certificaciones:lpic:lpic-2:205_network_configuration|LPI Topic 205: Network Configuration]]
* **Weight**: 4
* **Description**: Candidates should be able to configure a network device to implement various network authentication schemes. This objective includes configuring a multi-homed network device and resolving communication problems.
* **Key Knowledge Areas**:
* Utilities to manipulate routing tables
* Utilities to configure and manipulate ethernet network interfaces
* Utilities to analyze the status of the network devices
* Utilities to monitor and analyze the TCP/IP traffic
* **Terms and Utilities**:
* ''ip''
* ''ifconfig''
* ''route''
* ''arp''
* ''ss''
* ''netstat''
* ''lsof''
* ''ping'', ''ping6''
* ''nc''
* ''tcpdump''
* ''nmap''
===== VPN =====
VPN (//Virtual Private Network//) permite conectar dos o mas redes remotas de modo seguro a través de una conexión insegura (Internet). Para ello crea un túnel cifrado, y toda la información se cifra antes de ser enviada a través de la conexión insegura.
De este modo, estando en cualquier sitio, tenemos la sensación de estar en la red remota a la que nos conectamos.
Podemos implementar diferentes tipos de VPNs en función del sistema que usemos para el cifrado, desde certificados SSL/TLS a conexiones SSH.
Algunos de los sistemas más utilizados en linux son **IPSEC** y **OpenVPN**
===== Herramientas para resolución de problemas de red =====
==== ping y ping6 ====
Comando que permite conocer si una máquina está accesible o no.
Utiliza el protocolo ICMP
Opciones:
* ''-c'': Permite especificar el numero de ecos.
* ''-b'': Permite hacer ping a una dirección de broadcast.
* ''-i'': Permite especificar un intervalo (defecto 1s).
* ''-n'': Deshabilita la resolución de nombres (solo muestra direcciones IP)
Ctrl + c para detener la ejecución del comando ''ping''.
ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.293 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.297 ms
64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.225 ms
64 bytes from 10.0.2.2: icmp_seq=4 ttl=64 time=0.326 ms
64 bytes from 10.0.2.2: icmp_seq=5 ttl=64 time=0.399 ms
64 bytes from 10.0.2.2: icmp_seq=6 ttl=64 time=0.093 ms
En la salida se ve la dirección de respuesta, el número de secuencia, tiempo de validez del paquete que le enviamos y tiempo de respuesta.
ping –c 6 www.google.es
También podemos usar ping para comprobar si funciona correctamente el DNS ya que si al hacer ping a un nombre de dominio no nos responde, es posible que haya un problema de resolución de nombres.
==== traceroute ====
Comando que permite comprobar la conectividad con un sistema remoto, devolviendo los routers por lo que pasa el paquete IPv4/IPv6 (''traceroute6'')
En el protocolo TCP/IP se envía información a un destino. Para llegar a ese destino, la información va pasando por routers que van encaminando la información hasta el punto correcto.
traceroute www.google.de
traceroute to google.de (172.217.23.99), 30 hops max, 60 byte packets
1 ip-1-75-136-213.static.contabo.net (213.136.75.1) 0.700 ms 0.655 ms 0.629 ms
2 nug-i1-link.telia.net (62.115.155.130) 3.329 ms nug-b1-link.ip.twelve99.net (213.248.100.130) 2.556 ms nug-b1-link.ip.twelve99.net (62.115.171.252) 2.532 ms
3 ffm-bb1-link.ip.twelve99.net (62.115.113.146) 3.589 ms 3.614 ms ffm-bb2-link.ip.twelve99.net (62.115.114.148) 3.854 ms
4 ffm-b11-link.ip.twelve99.net (62.115.124.117) 4.170 ms ffm-b11-link.ip.twelve99.net (62.115.124.119) 3.831 ms ffm-b11-link.ip.twelve99.net (62.115.124.117) 4.254 ms
5 google-ic319727-ffm-b11.ip.twelve99-cust.net (62.115.151.27) 6.193 ms google-ic324085-ffm-b11.ip.twelve99-cust.net (62.115.153.213) 3.627 ms 3.603 ms
6 * * *
7 108.170.252.1 (108.170.252.1) 7.100 ms 142.250.46.244 (142.250.46.244) 9.305 ms fra16s45-in-f3.1e100.net (172.217.23.99) 3.571 ms
En cuanto a la salida, ''*'' representa que el campo requerido no fue encontrado.
Con la opción ''-n'' deshabilitamos el mapeo entre nombre de host y dirección IP:
traceroute -n google.de
traceroute to google.de (142.250.185.99), 30 hops max, 60 byte packets
1 213.136.75.1 0.630 ms 0.604 ms 0.588 ms
2 62.115.172.2 1.044 ms 0.998 ms 0.964 ms
3 62.115.113.146 3.800 ms 3.794 ms 3.756 ms
4 62.115.124.117 3.808 ms 3.726 ms 3.783 ms
5 62.115.151.25 6.228 ms 6.210 ms 6.194 ms
6 * * *
7 108.170.252.1 7.068 ms 142.250.210.196 3.887 ms 108.170.252.1 6.905 ms
8 142.250.236.31 5.971 ms 6.108 ms 9.316 ms
9 142.250.185.99 6.065 ms 6.042 ms 5.970 ms
==== mtr ====
Herramienta que combina las funciones de ''ping'' y ''traceroute''.
No viene instalada por defecto. Se consigue a través del paquete ''mtr''.
mtr whitehouse.gov
My traceroute [v0.92]
debian10 (10.0.2.15) 2021-04-08T11:38:23+0200
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.0.2.2 0.0% 21 0.3 0.3 0.1 0.6 0.1
2. 192.168.0.1 0.0% 21 2.3 5.8 1.7 30.4 8.2
3. 10.1.32.1 0.0% 21 10.4 11.6 7.1 27.7 5.2
4. 12.15.26.77.dynamic.reverse-mundo-r.com 0.0% 21 8.7 10.1 6.6 19.2 3.2
5. 57.17.26.77.dynamic.reverse-mundo-r.com 0.0% 21 9.4 9.3 6.4 17.0 2.3
6. ix-ae-7-700.tcore1.dvs-bilbao.as6453.net 0.0% 21 21.7 23.4 18.4 42.2 5.2
7. if-ae-14-2.tcore2.sv8-highbridge.as6453.net 0.0% 21 42.2 45.0 39.1 67.5 6.8
8. if-ae-11-2.tcore1.l78-london.as6453.net 4.8% 21 37.7 40.4 35.9 49.3 3.7
9. if-ae-29-2.thar2.ld5-slough.as6453.net 0.0% 21 37.8 41.0 35.6 58.8 6.7
10. 80.231.48.167 0.0% 21 54.0 49.7 39.2 80.6 12.6
11. ae7.r01.lon01.icn.netarch.akamai.com 0.0% 21 115.0 117.3 113.3 132.2 3.9
12. ae1.r01.lon01.ien.netarch.akamai.com 0.0% 20 113.3 115.1 108.6 126.8 5.0
13. ae3.drt-lon6.netarch.akamai.com 0.0% 20 62.9 61.3 43.0 244.7 44.2
14. a23-207-177-41.deploy.static.akamaitechnologies.com 0.0% 20 42.9 45.1 40.8 56.0 4.3
Para detener la ejecución de ''mtr'' se utiliza la combinación C-c.
==== arp y arpwatch ====
Nos permiten detectar problemas de asignación de IPs, que pueden crear conflictos en la red.
A menudo, podemos tener en nuestra red errores de varios tipos:
* IPs duplicadas.
* Asignaciones de IPs fijas en rangos manejados por DHCP.
''arpwatch'' es un demonio que monitoriza cambios en las asignaciones de IPs a las direcciones MAC de la red y los notifica via ''syslog'' o e-mail
==== netstat ====
Muestra un listado de las conexiones activas de nuestra máquina. Además permite obtener información de la red y los protocolos utilizados.
* ''-i'': Permite obtener el estado de las tarjetas de red (igual que ''ifconfig –a'')
* ''-e'': Visualiza todas las conexiones establecidas.
* ''-r'': Permite obtener las tablas de enrutamiento (como ''route'')
* ''-n'': Indica las IPs en lugar de los nombres de las conexiones.
* ''-a'': Permite visualizar todas las conexiones.
* ''-A'': Permite especificar la familia del protocolo.
* ''-p'': Muestra el ID y el nombre del proceso que levanta el socket.
Ejemplo:
netstat -panetu
Salida:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 15658 516/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 16088 811/exim4
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 11170 1/init
tcp 0 36 192.168.2.10:22 192.168.2.1:62380 ESTABLISHED 0 19672 1019/sshd: vagrant
tcp6 0 0 :::22 :::* LISTEN 0 15660 516/sshd
tcp6 0 0 ::1:25 :::* LISTEN 0 16089 811/exim4
tcp6 0 0 :::111 :::* LISTEN 0 1874 1/init
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 16280 825/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 0 11171 1/init
udp 0 0 127.0.0.1:123 0.0.0.0:* 109 20939 507/ntpd
udp 0 0 192.168.2.10:123 0.0.0.0:* 109 19552 507/ntpd
udp 0 0 10.0.2.15:123 0.0.0.0:* 109 19550 507/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 0 15548 507/ntpd
udp6 0 0 :::111 :::* 0 1879 1/init
udp6 0 0 ::1:123 :::* 109 20943 507/ntpd
udp6 0 0 fe80::a00:27ff:fedd:123 :::* 109 19557 507/ntpd
udp6 0 0 fe80::a00:27ff:fe45:123 :::* 109 19555 507/ntpd
udp6 0 0 :::123 :::* 0 15545 507/ntpd
''netstat'' es un programa obsoleto. El sustituto de ''netstat'' es ''ss''. El sustituto de ''netstat -r'' es ''ip route''. El sustituto de ''nestat -i'' es ''ip -s link''.
==== ss ====
Herramienta similar a ''netstat'' para investigar las conexiones de red:
Ejemplo:
ss -a -n
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_dgr UNCONN 0 0 * 1704 * 1703
u_dgr UNCONN 0 0 * 19370 * 1796
u_dgr UNCONN 0 0 * 14860 * 1796
u_dgr UNCONN 0 0 * 1703 * 1704
u_str ESTAB 0 0 * 12607 * 12608
u_str ESTAB 0 0 * 14910 * 14911
u_str ESTAB 0 0 * 15561 * 15560
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:*
udp UNCONN 0 0 127.0.0.1:123 0.0.0.0:*
udp UNCONN 0 0 192.168.2.10:123 0.0.0.0:*
udp UNCONN 0 0 10.0.2.15:123 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:*
udp UNCONN 0 0 [::]:111 [::]:*
udp UNCONN 0 0 [::1]:123 [::]:*
udp UNCONN 0 0 [fe80::a00:27ff:fedd:3798]%eth1:123 [::]:*
udp UNCONN 0 0 [fe80::a00:27ff:fe45:b8a7]%eth0:123 [::]:*
udp UNCONN 0 0 [::]:123 [::]:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
==== nmap ====
Comando que permite realizar el escaneo de puertos de una máquina e identificar los servicios y versión o tipo de sistema operativo.
El paquete ''nmap'' no viene instalado por defecto. Se instala con el paquete ''nmap''
Opciones útiles:
* ''-A'': habilita determinar el sistema operativo y versión de servicios.
* ''-F'': (Fast Scan)
nmap –A 10.0.2.15
Starting Nmap 7.70 ( https://nmap.org ) at 2021-04-08 11:52 CEST
Nmap scan report for 10.0.2.15
Host is up (0.000032s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 ab:a0:fc:53:7c:c5:ed:9d:de:50:41:39:51:e2:90:3f (RSA)
| 256 ce:41:ee:41:fb:8b:82:8f:8b:74:1d:14:18:a9:cd:bc (ECDSA)
|_ 256 ad:72:b1:81:b5:cc:6c:2b:26:7b:84:78:0e:77:fa:1f (ED25519)
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
|_ 100000 2,3,4 111/udp rpcbind
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.47 seconds
==== Wireshark ====
Antes conocido como **ethereal**, es una herramienta de análisis de red o "sniffer". Nos permite examinar datos en tiempo real que circulan a través de la red o volcarlos a un fichero.
Soporta gran cantidad de protocolos y nos permite filtrar la información para obtener de un modo mas detallado lo que buscamos.
==== lsof ====
Comando que permite establecer la lista de archivos abiertos por procesos en un sistema. Como Linux trata todo como un fichero, también nos muestra sockets de red abiertos.
Ejemplos:
lsof | grep httpd
lsof /var/lib/mysql
==== nc (netcat) ====
Herramienta que nos permite abrir puertos, establecer conexiones de red entre ellos, y transmitir datos.
Podemos utilizarlo para saber si un puerto está abierto.
Por ejemplo, si queremos ver si en nuestra máquina está abierto el puerto 80:
nc localhost 80
Si está abierto, obtendríamos lo que devuelve el servicio que corra detrás.
==== tcpdump ====
Es una herramienta que nos permite monitorizar e inspecionar paquetes en tiempo real a través de la red.
Podemos especificar origen (src), destino (dst), protocolo y puerto (port) con los operadores AND y OR para seleccionar.
Como Wireshark, pero a bajo nivel y desde línea de comandos.
* ''-w archivo'':Guarda el resultado en un archivo en formato libpcap.
* ''-i interfaz'': Indicamos la interfaz donde vamos a capturar el tráfico.
* ''-s ventana'': Permite limitar el tamaño de las tramas capturadas (default 65535 bytes)
* ''-n'': Indica las IPs en lugar de los nombres de las conexiones
Ejemplos:
tcpdump –w archivo.cap –i eth0 –s 0 –n port 22
tcpdump -i eth0 src 10.10.0.1 and dst 10.10.0.254 and tcp port 80
===== Tests =====
**Which single parameter, when passed to nmap, will instruct nmap to perform a fast scan? (Provide only the option)**
* ''-F'' (''nmap -F'')
** The following is an excerpt from the output of tcpdump -nli eth1 'udp'**:
13:03:17.277327 IP 192.168.123.5.1065 > 192.168.5.112.53: 43653+ A? lpi.org. (25)
13:03:17.598624 IP 192.168.5.112.53 > 192.168.123.5.1065: 43653 1/0/0 A 24.215.7.109 (41)
**Which network service or protocol was used?**
* FTP
* HTTP
* SSH
* DNS (**Solución**)
* DHCP
En el registro de ''tcpdump'' el último número que aparece en las direcciones IP hace referencia al puerto.