miércoles, 26 de mayo de 2021

Servidor DNS recursivo (caching) con Bind en CentOS/RockyLinux/AlmaLinux/RHEL 7

 En ésta entrada realizaremos un servidor DNS recursivo para nuestra red interna (192.168.2.0/24) y ofrecer más adelante un servidor web en una terminal de dicho segmento.

Nuestro escenario es el siguiente:

Nuestro servidor (CentOS 7) tiene dos interfaces de red, mínimo en interfaces para tener un firewall, entonces nuestra interfaz conectado a internet o al modem/router de nuestro proveedor es con nombre enp0s3 cuya ipv4 es 192.168.1.5/24 y la interfaz destinada a nuestra red interna tiene nombre enp0s8 cuya ipv4 es 192.168.2.5/24; existe un switch conectado a la interfaz interna y conecta un segmento de red completo con posibilidad de proveer 254 terminales, exceptuando la ipv4 ya utilizada.

Modem/Router (internet)====(enp0s3)CentOS(enp0s8)====Switch ethernet

El servicio dns resolverá nombres a ipv4, se usará la configuración de DNS recursivo (caching) usando el ejemplo que proporciona CentOS o similares.

Paso 1. instalaremos el equipamiento lógico

#yum install bind bind-utils bind-chroot

bind-chroot lo iniciaremos al final.

Paso 2. iniciaremos el servicio named

#systemctl enable named

#systemctl start named

#systemctl status named

Paso 3. los archivos a configurar son /etc/named.conf, /etc/named.rfc912

Paso 4. el directorio por defecto para los archivos donde estará la zona directa e inversa está en /var/named

Paso 5. configurando las opciones generales en named.conf, se añade estas líneas y se deja por defecto las que ya trae CentOS 7 (para 8 es lo mismo)

#vi /etc/named.conf

options    {

//escuchar en interface de la red interna y en IPv4 only

listen-on    port     53    { 127.0.0.1; 192.168.2.5;  };

listen-on-v6    port    53    { none; }; 

...

//consultas a nuestra red interna

allow-query    { localhost; 192.168.2.0/24; };

//no transferir a otro equipo

allow-transfer    { none; };

//consultas recursivas desde la lan

allow-recursion { 192.168.2.0/24; };

//no mostrar la version de bind

version none;

//opción por defecto, esta opción debe estar en yes, caso contrario no va //funcionar la resolución de nombres.
recursion yes;

...

//deshabilitamos dnssec, para no complicarnos :)

dnssec-enable no;

dnssec-validation no;

...

};

Puedes verificar si no tienes errores con el comando:

#named-checkconf /etc/named.conf

Si no muestra un mensaje, entonces el file esta bien :)

Paso 6. creamos nuestras zona directa e inversa en el archivo /etc/named.rfc912.zones

#vi  /etc/named.rfc912.zones

...

//nuestro dominio principal

zone "intranet.edu" IN {

type master;

//la ruta esta en /var/named

file  "db.intranet.edu";

allow-update "none";

};

//zona inversa

zone "2.168.192.in-addr.arpa" IN {

type master;

file "db.2.168.192";

allow-update "none";

};

Puedes revisar el file, si no muestra mensajes el file esta good :)

#named-checkconf /etc/named.rfc1912.zones

Paso 7. creamos los archivos en la ruta /var/named

#cd /var/named/

#cp named.localhost db.intranet.edu

#chown root:named db.intranet.edu

#vi db.intranet.edu

En este archivo se pudo haber usado @ en lugar del dominio intranet.edu., de igual manera donde hay espacio en blanco significa que está presente el @, por lo tanto es el dominio principal o zona directa.

Para la zona inversa

#cp db.intranet.edu db.2.168.192

#chown root:named db.2.168.192

#vi db.2.168.192

 Probar las zonas y buscar errores con el comando:

#named-checkzone intranet.edu db.intranet.edu

Paso 8. reiniciamos el servicio

#systemctl restart named

Paso 9. cambiamos la ip de nuestro servidor dns remoto a nuestra ip, a nuestro servicio dns local.

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

...

DNS1=192.168.2.5

#systemctl restart NetworkManager

#cat /etc/resolv.conf

Ya tomó nuestra ip.

Paso 10. pruebas en nuestro equipo y en clientes en nuestro segmento de red

#ping -c 2 www.intranet.edu

Paso 11. añadimos el servicio a nuestro firewall, se está usando firewallD

#firewall-cmd --add-service=dns --zone=internal --permanent

Ahora ya pueden consultar los clientes.

Paso 12. aquí utilizaremos a bind-chroot, para ello debemos parar y deshabilitar or disable named service, and start named-chroot, e.g.

#systemctl stop named

#systemctl start named-chroot

#systemctl enable named-chroot

Ahora todo estará montado de forma automática, no necesitamos hacer otros cambios, hay que mirar la ruta /var/named/chroot/..., ahi se montaron todos los archivos que hemos configurado y otros.

recomienda la web de rhel que si se va a editar se haga con una copia, por ejemplo:

~]# vim -c "set backupcopy=yes" /etc/named.conf

Pero si editas el archivo al reiniciar el servicio observas que el mismo se ha modificado en la ruta chroot.

En los clientes:



Nota: se adicionó un servicio en un cliente del segmento de red interno con ip 192.168.2.7/24 que presta un servicio web.

Como ya existe servicio de dominio, entonces buscará las ips correspondientes a un nombre, en neustro caso le dijimos que si se escribe un alias www.intranet.edu, buscará la ip 192.168.2.7/24

Si te gustó, estate atento a nuestro blog y canal de youtube, porque al igual que Debian y Ubuntu se complementará con soporte a php y mysql para instalar wordpress :)

jueves, 20 de mayo de 2021

Shell scripting: suma de dos números enteros

 Podemos sumar números y por ende restar, multiplicar, etc. Pero hay que considerar algunas cuestiones, en este apunte realizamos una suma básica, pero aclaramos algunas situaciones a considerar.

$touch operaciones.sh

La extensión del archivo no es relevante, podría no utilizarse, en éste caso hago explícito la extensión del archivo porque utilizaré sh como shell.

$vi operaciones.sh

#!/bin/sh
echo "####Suma de números####"
sleep 1
read -p "Enter first number: " n1
read -p "Enter second number: " n2
sum=$(($n1+$n2))
sleep 1
echo "===Your answer is==="
sleep 2
echo "Answer $n1 + $n2 =  $sum"
sleep 2

La primera línea es importante porque se le indica que intérprete se va a usar, como ya dijimos será sh, con sleep le damos un segundo u dos, read lee la entrada que le da el usuario por teclado y se añade una descripción, sum almacena la suma entera, ojo solamente sumará números enteros.

Ejecutaremos el archivo asi:

$sh operaciones.sh

Como observas no se ha dado permiso de ejecución, con sh ya se ejecuta; si se desea utilizar de la siguiente forma:

$./operaciones.sh

Se debe darle permiso de ejecución al archivo.

$chmod a+x operaciones.sh

Se podría utilizar solamente +x, pero se hace explícito a+x, que es lo mismo y se le indica que todos (usuario, grupo,otros) tendrán permiso para ejecutar el archivo.

lunes, 17 de mayo de 2021

Servidor DNS autoritativo en Debian con Bind

 En alguna oportunidad en una intranet o similares se necesita conocer o ubicar algunos hosts en la red de datos, pero por IPs muchas veces no es fácil cuando hay muchos equipos o se tiene algunos equipos que dan algún servicio, como podría ser un servidor web, entonces ubicarlo con nombre es mucho más fácil.

Otra ventaja al realizar un servidor DNS autoritativo es que las consultas a dns de otros servidores del mundo se realizan en nuestro equipo que implementa un servicio DNS (domain name system, o sistema de nombre de dominio), eso quiere decir que ya no se depende de otros servidores DNS públicos en internet como podría ser el conocido 8.8.8.8 de google o el que te da tu proveedor de servicio a internet, entonces es algo interesante que podemos realizar con un sistema operativo GNU/Linux o un BSD utilizando Bind (software para implementar servicio DNS).

Nota: por ahora solamente se realiza un servidor DNS principal, no un secundario.

1. Nuestro escenario: tenemos un equipo con dos interfaces de red (eth0 y eth1), eth0 es la que conecta al modem/router del proveedor y eth1 conecta a un switch en nuestra red LAN (192.168.2.0/24), las interfaces en versiones nuevas de Debian podrían ser enp0s3, enp0sx...

2. configurando ips a nuestras interfaces: a la interface eth0 le asignamos 192.168.1.5/24 y a eth1 192.168.2.5/24

3. agregamos el equipamiento lógico necesario en Debian:

#apt-get install bind9 bind9-doc dnsutils

4. ingresamos a la ruta donde encontraremos todos los archivos a modificar

#cd /etc/bind/

Los archivos principales a modificar son named.conf, named.conf.options, named.conf.local; los archivos que se editan principalmente son named.conf.options (para opciones generales) y named.conf.local, este último para nuestras zonas.

5. editamos el archivo named.conf.options y solamente son necesarias algunas líneas como las que escribo aquí abajo:

//Escuchar en interfaces locales ipv4

listen-on port 53 { 127.0.0.1; 192.168.2.5; };

listen-on-v6 { none; };

//No transferir la información de zona a dns secundario

allow-transfer { none; };

//Aceptar consultas de nuestra red LAN, únicamente.

allow-query { 192.168.2.0/24; };

//Permitir consultas recursivas para la red LAN

allow-recursion { 192.168.2.5; };

//No hacer público la versión de BIND

version none;

6. opciones por defecto se dejan en el archivo named.conf.options, en este caso no se usa reenviadores osea forwarders, nosotros no utilizamos otros dns, nuestro servidor resolverá nombres.

7. creamos las zona principal y la zona inversa en el archivo named.conf.local

//Mi zona principal

zone "intranet.edu" {

        type master;

        file "/etc/bind/db.intranet.edu"; 

};

//zona inversa

zone "2.168.192.in-addr.arpa" {

        type master;

        file "/etc/bind/db.2.168.192";

};

Nota: puedes verificar si el archivo está bien configurado con el comando

#named-checkconf named.conf

#named-checkconf named.conf.local

8. los permisos de los archivos que crearemos ya están por defecto correctos, no debemos cambiar, al crearlos Debian GNU/Linux les asigna para usuario root y grupo bind, para no complicarnos copiaremos de los ejemplos, luego lo editamos a nuestros requerimientos.

#cp db.local db.intranet.edu

9. escribimos las líneas como muestra en la imagen de abajo.

Donde observamos el servidor principal con nombre server1.intranet.edu., no tenemos otros servidores y la zona está en la misma ip.

10. creamos la zona inversa

#cp db.intranet.edu db.2.168.192

11. debe quedar como en la imagen de abajo.

 Este archivo al indicarle una ip resuelve el nombre.

Nota: en ambos casos se puede comprobar que no haya errores luego de editar dichos archivos con el comando siguiente:

#named-checkzone intranet.edu db.intranet.edu

#named-checkzone 2.168.192.in-addr.arpa db.2.168.192

Se entiende que estamos en la ubicación de los archivos y luego de ejecutar los comandos nos muestra la zona con su serial de año-mes-dia-modificacion (01, es la primera modificación)

Nota: para cualquier cambio en archivos named.conf.local u otro debe reiniciarse el servicio.

#systemctl restart bind9 

Verificar cómo está resolviendo

#tail -f /var/log/syslog

12. cambiamos nuestro servidor dns en la ruta /etc/resolv.conf o si usa resolvconf se tendría que cambiar en /etc/network/interfaces o en Ubuntu reciente en el archivo netplan, en nuestro caso es en resolv.conf

13. ahora debes probar en el servidor y en clientes (usar el servidor dns que hemos creado con ip 192.168.2.5)

#dig intranet.edu NS

#ping -c 2 www.intranet.edu

#host intranet.edu

Salir al exterior

#ping -c 2 debian.org

#host debian.org

14. en el cliente podrías utilizar nslookup

Update:

Si existe un servidor web en la red interna LAN con ip 192.168.2.7/24 se debe añadir la ip al archivo db.intranet.edu y apuntar el alias al nombre del servidor web (server2), también un puntero en el archivo db.2.168.192 con número 7

 

Buscamos el servidor web en la red interna LAN

 visita mi canal de Youtube y suscríbete, ahí muestro cómo esta funcionando este servidor DNS 😀

miércoles, 12 de mayo de 2021

VirtualBox 6.0 en equipos que no tengan Tecnología de virtualización

 Hola 😃, el otro día yo feliz usando mi compaq 610 (si pues ya es antiguo el equipo, pero esta muy bueno, lo tengo en buen estado) utilizando un sistema operativo Bodhi Linux (basado en Ubuntu 20.04) de 64 bits  y oh sorpresa cuando se instala VirtualBox 6.1 por defecto ya requiere un equipo que tenga tecnología de virtualización, en mi caso mi equipo no tiene esa característica, por lo tanto no puedo utilizar VirtualBox 6.1, debo usar una versión menor, podría ser VirtualBox 6.0, pues si escogí la 6.0, en los repositorios de oracle me ofrece 6.0 y 6.1, felizmente.

Veamos un "cómo" hacer funcionar virtualbox:

Instalas virtualbox 6.0, sabiendo que si podrás utilizar, pero hay que hacer ajustes como los siguientes.

Nos muestra de esta forma


Luego de quitar hardware de virtualización


Ahora si ya puedes usar VirtualBox 😃, pero recordar que hay sistemas operativos que si requieren hardware de virtualización, en ese caso no podrás utilizarlos, pero no todos son así, yo estoy viertualizando Debian 10 de 32 bits y super, Ubuntu server i386 versión 16.04, este último ya sin soporte, pero se puede 😃.

Espero que te haya gustado el tutorial.

Shell script para descargar videos desde Youtube en GNU/Linux Ubuntu 20.04.x

 Hola 😀, el otro día decidí utilizar un sistema operativo actualizado, instalé Bodhi Linux, una distribución liviana que está basada en Ubuntu 20.04.x y de verdad que he quedado muy contento, bueno la cosa es que disfrutando mi distro nueva 😂 decidí usar Youtube-dl para descargar videos de Youtube, ya me gustó 😁 desde Linux Lite 3.8.x, y qué creen, si pues no funciona y eso que tiene una versión más reciente que Linux Lite, con SMPlayer se instala youtube-dl desde repositorio, la verdad es que no sé por qué no funciona normalmente, luego procedí como en mi entrada anterior respecto a youtube-dl y nada, me muestra este mensaje:

edgar@compaq610:~$ youtube-dl laurldeyoutubeuotrositiosoportadoporyoutube-dl

Presiono enter y dice:

/usr/bin/env: «python»: No existe el archivo o el directorio

Solución: ya mucha cosa, leyendo en ask Ubuntu dan ideas, una muy cierta es que se debe decirle a youtube-dl que use python3 que si esta en Bodhi Linux y pues si funciona, escribiendo así:

edgar@compaq610:~/Vídeos$ python3 /usr/local/bin/youtube-dl urldeyoutube

Lo normal es escribir youtube-dl laurldelvideo, pero no funciona, como mostré líneas arriba, no existe el archivo o el directorio.

Pues dije es hora de hacer un script shell (ya estaba aprendiendo 😂), dije nos vamos a divertir y crearemos algo útil, este es mi script sencillito, pero útil 😃

Paso 1. creamos un archivo, en el ejemplo crearemos youtube-dl.sh, la extensión del archivo no es relevante, pero yo usé interprete sh, no bash, no sé por qué, pero ya me acostumbré, ojo eh que sh para cálculos numéricos no funciona, mejor es bash.

$cd Videos
$echo '#!/bin/sh' > youtube-dl.sh
$chmod a+x youtube-dl.sh
$vi youtube-dl.sh

Escribimos las líneas que muestro


Paso 2. cada vez que deseemos descargar un vídeo ejecutaremos dicho archivo youtube-dl.sh, debemos ubicarnos en algún directorio de nuestra preferencia y ejecutar:

$./youtube-dl.sh

Seguir las instrucciones, con eso ya nos evitamos escribir python3 y indicarle la ruta del ejecutable, espero que te sirva en algo, yo lo estoy usando, saludos cordiales.

Script para descargar AQUÍ.

martes, 11 de mayo de 2021

Descargar videos de Youtube con Youtube-dl en Linux

 Si estas en Linux o Windows puedes descargar videos usando línea de comandos con el software Youtube-dl, el sitio del proyecto nos indica que no solamente se puede descargar desde Youtube, hay una lista de muchos sitios desde el cual se puede descargar videos.

El sitio web del proyecto esta AQUI, como puedes observar el proyecto está más activo que nunca, hay instrucciones de cómo instalar en Unix/Linux y Windows.

La anécdota que yo tuve fue que cuando agregué VLC o Smplayer o similar ya me agregó Youtube-dl, pero al parecer una versión antigua (2016) y al decirle descarga desde youtube no permite, muestra un mensaje de error, entonces leyendo el foro de Linux Mint indican que se debe actualizar como dice el sitio web oficial.

Entonces mi lógica dice que debo remover la versión que tengo desde repositorio, pues así fue y funcionó.

Esta es la versión que tuve:

ii  youtube-dl     2016.02.22-1 all          downloader of videos from YouTube

Debemos remover dicho software.

#apt-get remove youtube-dl

Por ahí nos indica que hay paquetes que ya no se usarán y que debo remover.

#apt-get autoremove

Listo!

Ahora realizaremos la instalación como indica el sitio web, usaremos wget.

#wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl

Ojo eh, estamos como root, se debe realizar como super usuario okay?

 Ahora a ese script agregamos lectura y ejecución para todos los usuarios

#chmod a+rx /usr/local/bin/youtube-dl

Ejecutamos el comando siguiente:

# youtube-dl -U

Debe mostrarnos la salida:
youtube-dl is up-to-date (2021.04.26)

Ya está todo okay, ahora podemos descargar un video de youtube en alta calidad o HD, por defecto youtube-dl descarga el mejor resultado, no fue necesario indicarle formatos.

Descarga asi:

edgar@compaq610:~/Pictures/Test1/Videos$ youtube-dl aquilaurldelvideo

😀

domingo, 2 de mayo de 2021

Avidemux en Ubuntu 16.04.7/Linux Lite

 Hola 👋 😀, como ya sabrán tengo mi canal de Youtube 😅 y subo videos a la plataforma de manera periódica, entonces tengo la necesidad de tener el equipamiento lógico (software) necesario para editar videos, por cierto no soy un experto y no es mi rubro el diseño gráfico. 

Los videos que realizo son sencillos, pero tienen edición, cortar partes que no salieron bien, unir partes, entre otros detalles; hasta ahora me acompañan dos herramientas lógicas para dichos objetivos como son Avidemux y Openshot (este último es más completo).

También les comento que para poder utilizar el software se debe instalar desde lugares confiables como son los repositorios de las distribuciones, en mi caso yo uso tres: derivados Debian (Ubuntu 16.x ya no lo tiene en sus repos), Derivados RHEL (Fedora si lo tiene en rpmfusion) y derivados SuSe Linux (de igual manera está en repositorio packman), entonces como observas depende de la distribución.

En esta oportunidad estoy en mi equipo portátil de hace 8 años 😅, una intel core 2 duo que tiene recursos regulares, ahí tengo Linux Lite (derivado Ubuntu y a su vez derivado Debian), la versión que tengo es la 16 LTS, y no está por defecto en los repos Avidemux 😟, pero leyendo en ask ubuntu y en otros blogs en internet pues logré agregar de la siguiente manera, como te darás cuenta siempre añado algo más, no solo es hacer copy/paste.

Paso 1.  nos aconsejan que debemos usar Qt4 o Qt5 y ya no GTK porque ya no son soportados, entonces teniendo en consideración ello procedemos:

Nos autenticamos como superusuario

#sudo -s

Ingresar tu contraseña

Paso 2. Agregamos el software

#add-apt-repository ppa:ubuntuhandbook1/avidemux

Usamos esa forma porque es más fácil 👍

Es necesario una conexión a internet para luego proceder.

Debe observar una salida como la siguiente:

 The PPA contains unofficial Avidemux packages while www.getdeb.net is not updated for a few months.
 Más información: https://launchpad.net/~ubuntuhandbook1/+archive/ubuntu/avidemux
Pulse [Intro] para continuar o ctrl-c para cancelar

gpg: anillo «/tmp/tmpwqt73b9i/secring.gpg» creado
gpg: anillo «/tmp/tmpwqt73b9i/pubring.gpg» creado
gpg: solicitando clave 852541CB de hkp servidor keyserver.ubuntu.com
gpg: /tmp/tmpwqt73b9i/trustdb.gpg: se ha creado base de datos de confianza
gpg: clave 852541CB: clave pública "Launchpad PPA for Panda Jim" importada
gpg: Cantidad total procesada: 1
gpg:               importadas: 1  (RSA: 1)
OK

Paso 3. debemos actualizar los repositorios

#apt-get update

Paso 4. buscamos el programa

#apt-cache search avidemux

Observas que existe versiones, escoges la última disponible y agregas.

Paso 5. es tiempo de instalar

#apt-get install avidemux2.7-qt5 avidemux2.7-plugins-settings

Como observas hago explícito qt5 y 2.7, añado un paquete sugerido por apt-get

Paso 6. a disfrutar de Avidemux 👏👐

Nota: si apt-get te sugiere que remuevas algún paquete usando apt autoremove, entonces puedes usar apt-get autoremove, hacen la misma tarea.

sábado, 1 de mayo de 2021

Formatear una memoria USB en Linux usando línea de comandos

 Hola amigo Linuxero 👦👋, alguna vez estas en una distribución GNU/Linux y deseas formatear la memoria USB (pen drive) y no tenemos insterfaz gráfica para dicho objetivo, entonces ¿cómo podemos realizar dicha labor?

Paso 1. debemos verificar que tenemos el equipamiento lógico 😀👏, el software necesario.

Por ejemplo estoy en un derivado Debian, pero el software es para cualquier distribución. Debes estar como super usuario.

$sudo -s

Ingresas la contraseña.

debe cambiar la entrada a símbolo numeral, #

Preguntar por el software

#dpkg --list dosfstools

La salida es (lo tengo agregado por defecto):

ii  dosfstools     3.0.28-2ubun i386         utilities for making and checking

Paso 2. debes preguntar y ubicar la momenclatura que le ha dado a la memoria, su ruta.

#fdisk -l

 Debes observar en la parte final líneas como la siguiente, también conoces la capacidad de almacenamiento de tu USB y te darás cuenta muy rápido. 😀

Disposit.  Inicio Start    Final Sectores  Size Id Tipo
/dev/sdb1  *       2048 31950719 31948672 15,2G  c W95 FAT32 (LBA)

Paso 3. debemos anotar /dev/sdb1 en mi caso, es una USB hp de 16 GB.

Paso 4. desmontar nuestra unidad

#umount /dev/sdb1

Paso 5. es momento de dar formato de la siguiente manera.

# mkfs.vfat -F 32 -n HP_USB /dev/sdb1

También sin argumentos

#mkfs.vfat /dev/sdb1

Update:

Para formato ntfs escribir

#mkfs.ntfs /dev/sdb1

Tenemos varios formatos y eso lo observas al escribir mkfs. y presionas la tecla tabulador y salen todas las posibilidades, por ahi se observa ntfs (sirve para poder copiar archivos grandes, supongamos que quisiéramos copiar un archivo de 5 GB con el formato o sistema de ficheros ntfs no tendremos problemas, pero con fat 32 no se podrá). En nuestro caso hemos dado formato con fat32, se mantuvo la que se observó, para más información puedes mirar la página man, man mkfs.

También anoto que se añadió la opción -F 32 porque será fat 32 y -n para darle un nombre descriptivo 👏 , super! Aclaramos que hemos usado dicho formato porque querramos o no el formato windows es el más utilizado, fat, fat32, ntfs.

Espero que te haya servido, yo ya he formateado mi USB 👦👏 usando mi notebook antigua con Linux Lite 16.04 lts.

Rocky Linux 8.3 RC1 ya está disponible para la descarga

 Hola amigos Linuxeros 😀😎, ya está disponible la versión RC1 (versión candidata previa a la estable), hoy visitando la web de Rocky Linux pude apreciar el esperado botón 👦 de descarga o Download.

Te puedo contar que se ha retrasado un mes como originalmente se tenía planeado, entonces ahora si ya tenemos el enlace para descarga.

Enlace de Descarga AQUÍ 👏

Como nos indica es un candidato antes que se libere la versión estable, entonces nos recomienda que no debería usarse en producción, se tiene que hacer las última pruebas y encontrar algunos posibles errores y reportar.

Nosotros los usuarios que apoyamos al proyecto debemos probar estas liberaciones y reportar algunos fallos o detalles, se puede hacer mediante su foro AQUÍ 😉 o directamente a donde nos recomienda  AQUÍ 😇

Como dice en la página web de Rocky Linux es un esfuerzo grande de meses de preparación y necesita de la comunidad para que el proyecto sea bien conducido.

A probar Rocky Linux y reemplazar a CentOS Linux 8.x

Extensiones php en FreeBSD 14 para PhpSysinfo, PhpMyAdmin y Simple Machines Forum

 En FreeBSD 14 ocurre algo especial, por defecto no se activa las extensiones PHP para los softwares como PhpSysinfo, PhpMyAdmin ySimple mac...