La co

Me levanto y mi ordenador me esta esperando, se podría decir casi que está en la interrupción “rnek0 díme algo”
¡ que fuerte ! mi colegui el ordenata me va a llevar a dar la vuelta al mundo y …
mucho más lejos pienso yo, si pasamos por la estación internacional. jajaja

La Red y la co

La co ? la conexión a internet claro esta.

A veces con mi pc me gustaría tener el comando de desconexión !!! Si señor, cierra la puerta y quedate en casa sin que esto se ponga a sonar por todos lados, y enfin podré concentrarme en lo que me gusta sin tener miedo que un delincuente transeunte encuentre el puerto abierto por donde entraba la corriente de aire.

Señorita porfa, donde esta el boton desconecta en el teclado ?
Como señorita no responde nos lo vamos a créar. Enfin poco mas o menos.

Se me viene à la mente de decir al principio que hay una utilidad NetworkManager prevista para simplificar el uso de redes de computadoras en Linux. No es que no me guste, lo hace muy bien pero no te aprende a hacerlo por ti mismo. Asi aprendes como funciona todo esto, esto hace parte de las 4 libertades del software libre

 

La Tarjeta de red

Para entrar en este mundillo de la red hay que tener por lo menos algo que sepa hablar tcp/ip y que haga de interfaz entre tu y la red para poder enviar o recibir un paquete de datos, pero primeramente si tu pc no puede conectarse a ese dispositivo y hablar con el no te enteraras de nada; el constructor del dispositivo con toda su amabilidad a pensado en poner a disposicion del universo entero un piloto o driver para que tu ordenador sepa utilizar la targeta.

La pregunta es : “El driver de mi tarjeta esta en su sitio y funciona correctamente?”

  • El que me pregunte si el cable esta enchufado es un listillo

Vamos a ver con udev que es el encargado de saber cual es tu dispositivo y cargar el modulo del kernel necesario para el.
Para ello primero buscamos el dispositivo en el sistema con lspci

❯ lspci -v | grep Ethernet -A 6
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V
	DeviceName: Onboard - Ethernet
	Subsystem: ASRock Incorporation Device 15b8
	Flags: bus master, fast devsel, latency 0, IRQ 130
	Memory at df100000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: e1000e
	Kernel modules: e1000e

Al parecer, la tarjeta anda que va zumbando, pues muy bien pero eso no es todo, vamos a por la fase 2 :
hacemos un listing de los mensajes del kernel sobre e1000e con dmseg

sudo dmesg | grep e1000e
[    3.783252] e1000e: Intel(R) PRO/1000 Network Driver
[    3.783254] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    3.783546] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    4.021513] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[    4.089459] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) xx:xx:xx:xx:xx:xx (mi MAC)
[    4.089468] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[    4.089545] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF
[    4.251647] e1000e 0000:00:1f.6 eno1: renamed from eth0
[  369.233824] e1000e 0000:00:1f.6 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[90727.210384] e1000e 0000:00:1f.6 eno1: NIC Link is Down
[132746.073884] e1000e 0000:00:1f.6 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

Bien, ya os habeis dado cuenta de que el nombre del modulo del kernel es e1000e, y de pasage aqui el enlace del driver en kernel.org

Con esta linea ya podemos decir que la tarjeta funciona :

NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

 


Las interfaces

Interfaces

Vale, la tarjeta funciona pero como la puedo utilizar ?

El kernel de Linux distingue universalmente entre dos tipos de interfaces de red de software, física o virtual:

Interfaces de red física

eth0, eth8, radio0, wlan19, .. siempre representan un dispositivo de hardware de red real, como una NIC , WNIC o algún otro tipo de módem . Tan pronto como el controlador del dispositivo se carga en el kernel, la interfaz de red física correspondiente se vuelve presente y está disponible.

Cualquier interfaz de red física es una representación de software nombrada por el sistema operativo para el usuario para permitirle configurar el dispositivo de red de hardware y también para integrarlo en programas y scripts.

Interfaces de red virtual

lo, eth0:1, eth0.1, vlan2, br0, pppoe-dsl, gre0, sit0 tun0, imq0, teql0, .. son interfaces de red virtual que NO representan un dispositivo de hardware existente sino que están vinculados a uno (de lo contrario, serían inútiles). Las interfaces de red virtual se inventaron para brindar al administrador del sistema la máxima flexibilidad al configurar un sistema operativo basado en Linux. Una interfaz de red virtual generalmente se asocia con una interfaz de red física (eth6) u otra interfaz virtual (eth6.9) o es independiente, como la interfaz de bucle invertido lo .

Entonces ya sabes cual es la diferencia cuando haces un ip addr o un ls /sys/class/net entre eno1 y lo (loopback) por ejemplo, o que tipo de interface es tun0 cuando te conectas a HTB.

Pregunta 2 : cuales sont mis interfaces ?

Vamos a ver con ls /sys/class/net , con ip addr tienes todos los détalles

ls /sys/class/net
docker0  eno1  lo

Aqui vemos 3 interfaces, la unica que me da accèso a internet es eno1

En général, si no tienes la co haces un ping para saber que pasa, digamos que mandamos un paquete al router y esperamos que nos devuelva una respuesta, asi de sencillo, para ello esta echo el comando ping. Si hay una respuesta esta claro que hay una co

❯ ping -c3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) octets de données.
64 octets de 192.168.1.1 : icmp_seq=1 ttl=64 temps=0.701 ms
64 octets de 192.168.1.1 : icmp_seq=2 ttl=64 temps=0.509 ms
64 octets de 192.168.1.1 : icmp_seq=3 ttl=64 temps=0.553 ms

--- statistiques ping 192.168.1.1 ---
3 paquets transmis, 3 reçus, 0% packet loss, time 2041ms
rtt min/avg/max/mdev = 0.509/0.587/0.701/0.082 ms

 


¡¡¡ Quiero la CO !!!

Vale antes de hablar de la co, hay que saber sobre lo que estoy hablando:

  • En este articulo te hablo sobre todo de Ethernet (conexión por cable).
  • No hablo de DHCP, es decir que logicamente en tu casa conectas el ordenador con el cable y el router te da la IP automaticamente, y ya !
  • Hablo de como conectar tu tarjeta de red por el terminal con una IP fija

El router proporciona a los clientes con DHCP, una dirección IP dinámica, la máscara de subred, la dirección IP de la puerta de enlace predeterminada y, opcionalmente, también servidores de nombres DNS.

Eso es el plug and play, no veo porque ando escribiendo todo esto si funciona así de rapido :D
Bueno con la frase mas arriva ya ves que aunque parezca magico hay muchas cosas que suceden por detras de esa simple acción, y de ello va lo que cuento aqui.

Activando la interfaz de red

La interfaz de red debe tener su dirección IP, concretamente para esta maquina ya hemos pasado por la configuracion del router y le hemos dado una IP fija (192.168.1.18).

Bueno, ya iva siendo hora de activar esa interfaz de red, y para ello:

el comando magico : ip

El comando ip te brinda su ayuda con el comando man, eso ya lo sabiamos pero nunca esta de mas de repetirlo.

❯ man ip | grep -E "^NAME" -A2
NAME
       ip - show / manipulate routing, network devices, interfaces and tunnels

 

A continuacion el script de co que se conectara con la ip 192.168.1.18 (leelo atentivamente antes de ejecutar)

Con el script de arriba me conecto à la red, seria la parte ON de nuestro boton.

 

Enroutamiento

En el script anterior se supone que la maquina esta en una red local y que el router esta en la ip 192.168.1.1

Por otra parte, quien es el administrador de resolución de nombres de red de mi sistema ?
systemd-resolved es un servicio systemd que proporciona resolución de nombres de red a aplicaciones locales a través de una interfaz D-Bus

uranus# systemctl status systemd-resolved
● systemd-resolved.service - Network Name Resolution
     Loaded: loaded (/usr/lib/systemd/system/systemd-resolved.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-02-10 10:01:06 CET; 2 days ago
       Docs: man:systemd-resolved.service(8)
             man:org.freedesktop.resolve1(5)
             https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
             https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients

Si no teneis resolucion DNS haciendo un ping -c1 google.com o al abrir el navegador teneis que habrir el fichero /etc/resolv.conf y cambiar las ip del resolver :

 

!!! Atencion con el conflicto de openvpn o otros programas que sobreescriben el resolv.conf

 

Creo haber identificado el problema de la perdida de los dns en /etc/resolv.conf : ver en https://wiki.archlinux.org/title/OpenVPN#Route_configuration_fails_with_systemd-networkd , efectivamente cuando me connecto con openvpn a Hackthebox se produce igualmente el mismo comportamiento.

En este ejemplo ponemos el nameserver de nuestro enrutador local el cual se encargara de hacer las peticiones a tu ISP (internet service provider), pero mas abajo tenemos un script que opera con los resolvers de cloudflare o google o otros segun el orden de escritura.

└╼rnek0$cat /etc/resolv.conf
───────┬─────────────────────────────
       │ File: /etc/resolv.conf
───────┼─────────────────────────────
   1   │ nameserver 192.168.1.1
───────┴─────────────────────────────

Como saber que no tienes resolucion de dns ? pues pingueas una ip externa y si te lo devuelve tienes acceso a la red externa pero si con el nombre de dominio no te lo devuelve pues ya lo sabes. Una alternativa es abrir tu navegador internet y hacer una peticion, sea la que sea; como esta por ejemplo.

Aparentemente cuando se establece la conexion con la resolución dns del systemd-resolved el fichero de resolución se sobreescribe, he hecho pues otro script para lanzarlo despues de la co (leelo atentivamente antes de ejecutar) :

Los he probado con Archlinux y Parrot, o sea que hay sabores en algunas distribuciones que no sé si se comportaran asi.
Una excelente lectura sobre el tema en el wiki de Archlinux

 

Il el boton off ? Donde esta ?

Bien esto lo he dejado para el final, asi si has llegado hasta aqui eso quiere decir que estas interesado en la solución y te puedo dejar el script de deconnexión para que juegues con todo esto. Imagina que haces esto al principio y te quedas a dos velas, ¡ hé, que paso !? ¡¡¡Auxilio!!!

(leelo atentivamente antes de ejecutar)

Una co Ethernet sin NetworkManager personalizada.

Pregunta: que hay del arranque ?

Eso tambien se puede automatizar y para ello mas adelante veremos la creacion de scripts systemd. Asi puedes poner el de la co en el arranque del systéma.

Esperando que esta humilde contribucion os haya aprendido un poco algo, o dado ganas de curiosear y aprender al respecto.

Happy hacking !