Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - DtxdF

#141
Recomiendo leer este post para elegir una VPN que funcione bien (incluso gratuita):

*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#142
Dudas y pedidos generales / Re:Que es git?
Marzo 16, 2023, 08:33:05 PM
¿Has hecho una búsqueda por la web?

*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#143
Una cosa más, pero mucho más importante: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#144
Probablemente lo que buscas:

*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Genérico:

*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#145
International forum / Python With Appjail | FastAPI
Marzo 04, 2023, 11:43:41 PM
In any development project, you usually have to worry about many components: databases, dependencies, configurations, network settings and so on. Things can get too complicated when you need to transfer your project to another colleague or, even worse, transfer the project to a production environment, and very bad things can happen... Those problems has been solved by some useful tools, such as those for creating and managing containers.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login is the framework we will use to create a container with our project: an API using the FastAPI framework. By using this tool we ensure that we can share and reproduce our project to guarantee that it will run smoothly with virtually the same environment as on the host. As a bonus, the host will not be affected.

Continue reading: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#146
Si estás seguro que solo es un filtrado de la dirección MAC: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#147
Posible duplicado: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#148

Fuente: WordPress

WordPress es un sistema de gestión de contenidos (en inglés, Content Management System o CMS) lanzado el 27 de mayo de 2003, enfocado a la creación de cualquier tipo de página web. Originalmente alcanzó una gran popularidad en la creación de blogs, para luego convertirse en una de las principales herramientas para la creación de páginas web comerciales.

Como se expresó en el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, Makejail es un archivo de texto plano para automatizar la creación de contenedores. WordPress es una excelente aplicación para demostrar el potencial de AppJail y sus Makejails.

La instalación y configuración de WordPress, sumando a sus dependencias, y la configuración de la base de datos obstaculiza el proceso principal: usarlo. Muchos consideran que es complejo por los aspectos antes mencionados. Afortunadamente hay un Makejail para solventar esto: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Recomiendo leer artículos anteriores para saber cómo usar las características de red de AppJail, aunque aquí solo se mostrará las redes virtuales por su simpleza. Recomiendo también leer la documentación de AppJail para obtener más detalles: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


WordPress

Dado que usaremos el Makejail del repositorio centralizado, no hará falta crear uno propio para automatizar los complejos procesos. Solo necesitamos el siguiente Makejail:

Makejail:

Código: text
INCLUDE options/network.makejail
INCLUDE gh+AppJail-makejails/wordpress

OPTION expose=80

Por supuesto, sé es libre de usar cualquiera puerto o no usar ninguno, y hacer otras cosas según sea necesario, aunque en ara a la simplicidad, se usará el anterior Makejail.

El archivo `options/network.makejail` es otro Makejail que será incluido indicando las opciones de red que usaremos. Es solo una convención puedes nombrarlo como desees.

options/network.makejail:

Código: text
ARG network
ARG interface=wordpress

OPTION virtualnet=${network}:${interface} default
OPTION nat

El otro Makejail, el de WordPress, contendrá las instrucciones necesarias para instalar WordPress y sus dependencias, PHP y PHP-FPM, MariaDB y NGINX, aparte de configurar cada uno. Todo de forma abstracta y simple.

Una vez creemos los Makejails necesarios, es tan sencillo realizar los procesos usando `appjail makejail`:


Código: sh
appjail makejail -j wordpress -- --network web

En en ejemplo anterior, el contenedor será nombrado como `wordpress` y se le está pasando el parámetro `--network` para indicar la red a utilizar, que en este caso es `web`. Usa la que realmente exista en tu sistema.

Una vez concluído el anterior proceso, solo hay que ingresar en nuestro navegador y seguir los pasos que indica el mismo WordPress.


Conclusión

Probablemente si no usaramos AppJail/Makejail este artículo contendría varias líneas explicando un montón de cosas, incluyendo qué dependencias usa WordPress, cuáles archivos de configuración utilizar para NGINX o PHP-FPM, o cualquier otra cosa que obstaculizaría el objetivo principal.

El Makejail de WordPress acepta varios parámetros, pero estos son descritos en su propia documentación.


~ DtxdF
#149

Fuente: EnterpriseAI

AppJail es la herramienta que permite crear y mantener contenedores de FreeBSD con extrema facilidad. Este automatiza muchísimas cosas para que solo nos podamos preocupar por nuestra aplicación, pero AppJail tiene más funcionalidades para automatizar cosas que podrían ser repetitivas, como es la creación de un contenedor.

AppJail, en vez de usar un largo y tedioso archivo yaml o json, usa un simple archivo de texto con determinadas instrucciones para recrear un contenedor, el cual veremos con más detalles en un momento. Con este simple archivo podemos crear un contenedor, con sus aplicaciones e incluso configurarlas, aparte de que podemos configurar las opciones de redes y mucho más.

Solo se mostrarán algunas instrucciones, por lo que es recomendable leer la documentación si se desea saber todas las que están disponibles: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Recomiendo ver el repositorio central de los Makejails, tanto si deseas usar un Makejail de un software existente o si quieres colaborar en el proyecto: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Introducción a Makejail:


Los archivos Makejails son archivos de texto plano que tienen la siguiente sintaxis:

Código: text
# Comentario
COMANDO argumento

Es solo eso, no tienes que preocuparte por llaves, corchetes, punto y coma, o cualquier otro carácter raro. Veamos el siguiente ejemplo real:

Código: text
OPTION start

CMD echo "Hello, world!"

Con el comando `OPTION` pasamos opciones a `appjail quick` y con `CMD` ejecutamos un comando usando `sh(1)`. Cabe aclarar que, de forma predeterminada, `CMD` ejecuta el comando en el contenedor, no en el host.

Si queremos ejecutar el ejemplo anterior, tenemos que usar `appjail makejail`.


Código: sh
appjail makejail -j hello

El nombre de la jaula es opcional, por lo que si no se define, se usa uno aleatorio.

Conclusión

El punto de los Makejails es que el usuario final solo tenga que preocuparse por usar la aplicación y no aprender los detalles implicados. Esto es válido normalmente con aplicaciones complejas, que requieran configurarse previamente o se necesiten conocer ciertos detalles para hacerla funcionar correctamente.

En esta breve introducción solo se mostró lo básico para usar los Makejails y en los siguientes artículos se mostrarán ejemplos con aplicaciones reales.


~ DtxdF
#150
Gracias You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login o/

Sí, es parecido a la virtualización, aunque se le conoce normalmente como "virtualización imperfecta", "virtualización ligera", "contenedores" o para el caso de FreeBSD, jaulas.

Se puede usar para lo que comenta, para probar aplicaciones que podrían arruinar o desordenar el host, por ejemplo.

En el mismo README dejé documentos o enlaces que hablan en profundidad sobre las jaulas o tecnologías relacionadas. También le recomiendo la wiki de FreeBSD, ahí hay información variada de las jaulas.

~ DtxdF
#151

Fuente: CoinDesk

La información que se ha recopilado en la parte You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login es valiosa para explicar configuraciones un poco más complejas que se adaptan a aplicaciones más específicas. Afortunadamente, AppJail abstrae todos los procesos necesarios para llevar a cabo las operaciones sin necesidad de que conozcamos los detalles intrinsecos.

Después de leer este artículo sabrás cómo organizar tus jaulas para que se adapten a tu aplicación y entorno.

Es recomendable leer la documentación de todas formas: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


multi-(virtual)net & bridges:


Una jaula puede estar en varias redes virtuales al mismo tiempo. Esto es bastante útil para mantener un orden lógico que se adapte más a nuestro entorno. Por ejemplo, podemos crear tres jaulas: `jdb`, un DBMS, `jweb`, un servidor web y `jdev`, una jaula donde estará la aplicación que estamos desarrollando que usará los servicios de las otras jaulas. Además de las jaulas, hay que tener tres redes: `web`, para los servidores web o cosas relacionadas (nginx, apache, php-fpm, APIs, etc.), `db`, para bases de datos (mongodb, mysql, redis, etc.) y `development`, para jaulas que se usarán estrictamente para desarrollar aplicaciones usando los demás servicios. Nuestra jaula `jdev` debe estar en todas las redes para que la comunicación pueda tener efecto.

Las redes virtuales no proveen una conexión al exterior, pero fácilmente se puede solucionar con NAT o los puentes. Es importante saber cual elegir porque uno provee características que el otro no puede y ofrece un mejor aislamiento que el otro no dispone, lo cual puede o no ser estrictamente necesario. Es recomendable leer la documentación para obtener más detalles.

En este caso, los puentes serán la elección actual.


Código: sh
#
# Networks
#

# db
appjail network add db 10.42.0.0/24
# web
appjail network add web 10.0.0.0/24
# development
appjail network add development 172.16.0.0/10

#
# Jails
#

# jdb
appjail quick jdb virtualnet="db:jdb" bridge="jdb iface:jext" start
# jweb
appjail quick jweb virtualnet="web:jweb" bridge="jweb iface:jext" start
# jdev
appjail quick jdev virtualnet="db:jd1" virtualnet="development:jd2" virtualnet="web:jd3" bridge="jdev iface:jext" start

Es así de sencillo crear una jaula que esté en múltiples redes virtuales. Después de instalar algunos paquetes, actualizarlos o hacer cualquier cosa que necesite conexión al exterior, podríamos quitar las interfaces que están agregadas al puente para que las jaulas que solo deben ofrecer servicios locales no se puedan comunicar hacia el exterior.

Código: sh
appjail network detach jdb
appjail network detach jweb

Es necesario editar la plantilla de las jaulas para que los cambios persistan como es descrito en la documentación.

multi-bridges:


Las redes virtuales son bastante útiles, pero los puentes ofrecen un rango de aplicaciones un poco más amplias por ser más flexibles. Por ejemplo, podríamos usar `dns/dnsmasq` para que este asigne las direcciones IPs en un rango específico a determinadas jaulas que estén en un puente privado.

Código: sh
# jpub
appjail quick jpub \
    bridge="jpb1 iface:jext bridge:public" \
    bridge="jpb2 bridge:private" \
    mount_devfs \
    devfs_ruleset=10 \
    dhcp="sb_jpb1" \
    dhcp="sb_jpb2" \
    overwrite
# jpriv
appjail quick jpriv \
    bridge="jpv bridge:private" \
    mount_devfs \
    devfs_ruleset=10 \
    dhcp="sb_jpv" \
    overwrite

En el ejemplo anterior, `jpub` está tanto en `public` como en `private`, por lo que puede comunicarse tanto con las jaulas que estén en `private` como comunicarse con el exterior ya que `public` tiene como miembro a la interfaz del host `jext`. `jpriv` solo puede comunicarse con las jaulas que estén en `private`.

Ahora se iniciará `dnsmasq` para que las jaulas que estén en `private` puedan obtener una dirección IP.


Código: sh
# AppJail crea el puente si no existe, pero dado que primero necesitamos agregarle una dirección IP ya que dnsmasq lo requiere, es necesario crearlo manualmente antes de iniciar las jaulas.
ifconfig bridge create name private
ifconfig private inet 129.0.0.1/24
dnsmasq --interface=private --dhcp-range=129.0.0.2,129.0.0.150,12h -d

En este punto es posible iniciar las jaulas para observar el resultado.

Código: text
# appjail start jpub
...
# appjail cmd jexec jpub ifconfig sb_jpb1 inet
sb_jpb1: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255
# appjail cmd jexec jpub ifconfig sb_jpb2 inet
sb_jpb2: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        inet 129.0.0.15 netmask 0xffffff00 broadcast 129.0.0.255
# appjail start jpriv
...
# appjail cmd jexec jpriv ifconfig sb_jpv inet
sb_jpv: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        inet 129.0.0.112 netmask 0xffffff00 broadcast 129.0.0.255

Conclusión:

En este punto, es posible crear jaulas que usen distintos tipos de configuración según necesitemos para crear una variedad de aplicaciones.

En los siguientes artículos, se mostrarán algunas cosas interesantes de AppJail usando todo el conocimiento adquirido hasta el momento.


~ DtxdF
#152

Fuente: InfoWorld

En la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login se presentó los usos básicos de redes para los contenedores en FreeBSD utilizando AppJail. AppJail puede lidiar con problemas más complejos para poder adaptarse a entornos o necesidades mucho más específicas, como se verá acontinuación.

Al igual que la parte anterior, no se mostrarán configuraciones del host para que las opciones sean efectivas, ya que de eso se encarga la documentación: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Es importante leer la primera parte para conocer cómo son nombradas las interfaces.


DHCP & SLAAC:

AppJail puede confiar los parámetros de la red a otro nodo de la red, por lo que será más sencillo y rápido crear y administrar jaulas genéricas.

Primero que nada, necesitamos configurar algunas reglas `devfs.ruleset(5)` para habilitar `bpf(4)` ya que `dhclient(8)` lo requerirá.


/etc/devfs.rules:
Código: text
[devfsrules_dhcp=10]
add include $devfsrules_jail_vnet
add path 'bpf*' unhide

Con lo anterior, los ejemplos posteriores serán efectivos.

Código: sh
# VNET + DHCP
 appjail quick jdhcp \
    vnet=em0 \
    dhcp=em0 \
    mount_devfs \
    devfs_ruleset=10 \
    start
# Netgraph + DHCP
appjail quick jdhcp \
    jng="jdhcp em0" \
    dhcp=ng0_jdhcp \
    mount_devfs \
    devfs_ruleset=10 \
    start \
    overwrite
# Netgraph + Bridge + DHCP
appjail quick jdhcp \
    jng="jdhcp em0" \
    bridge="iface:jext jdhcp" \
    dhcp=ng0_jdhcp \
    dhcp=sb_jdhcp \
    mount_devfs \
    devfs_ruleset=10 \
    start \
    overwrite

IPv6 está creciendo rápidamente a lo largo del mundo por lo que AppJail tiene soporte para esta característica. AppJail puede confiar en SLAAC para configurar algunos parámetros de red para una interfaz dada.

Código: sh
# VNET + SLAAC
appjail quick jslaac \
    vnet="em0" \
    slaac="em0" \
    start \
    overwrite
# VNET + SLAAC + Bridge + DHCP
appjail quick jds \
    vnet="em0" \
    slaac="em0" \
    bridge="iface:jext jds" \
    dhcp="sb_jds" \
    mount_devfs \
    devfs_ruleset=10 \
    start

NAT:

Gracias a las redes virtuales, NAT es posible, siendo este un camino alternativo a los puentes para que la jaula pueda comunicarse con el exterior.

Este tipo de configuración es la forma alternativa a los puentes y no tendría sentido combinarla. Ver la documentación para más detalles.


Código: sh
appjail quick jnat virtualnet="development:jnat default" nat start
# explicitly
appjail quick jnat virtualnet="development:jnat default" nat="network:development" overwrite start

La opción `nat` requiere que el parámetro `network` esté definido, pero como se pudo observar, dado que `development` está marcada como la red predeterminada usando el parámetro `default`, se puede usar de forma implícita en opciones como `nat` o `expose` como veremos más adelante. Cuando no hay ninguna red predeterminada, `nat` se quejará si no se define el parámetro `network`.

Es posible aplicar NAT a varias redes en las que se encuentre la jaula, lo cual es útil si se usará la dirección de origen para diferentes propósitos.


Código: text
# appjail quick jnat virtualnet="development:jn1 default" virtualnet="web:jn2" nat nat="network:web" start overwrite
...
# appjail network hosts -REj jnat
192.128.0.2     development
10.0.0.2        web
# appjail cmd jexec jnat ping -c4 -S 192.128.0.2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.128.0.2: 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=45.209 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=44.204 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=44.436 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=44.864 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 44.204/44.678/45.209/0.387 ms
# appjail cmd jexec jnat ping -c4 -S 10.0.0.2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 10.0.0.2: 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=44.984 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=45.167 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=44.426 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=44.581 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 44.426/44.789/45.167/0.298 ms

También podemos realizar el proceso de `appjail quick` de forma manual.

Código: sh
appjail quick jnat virtualnet="development:jn1 default" overwrite
appjail nat add jail -n development jnat
appjail config -Ia 'exec.prestart="appjail nat on jail ${name}"' -j jnat
appjail config -Ia 'exec.poststop="appjail nat off jail ${name}"' -j jnat
appjail start jnat

AppJail también puede aplicar NAT a una red entera en lugar de hacerlo por cada jaula.

Código: text
# appjail nat add network db
# appjail nat on network db
# appjail nat boot on network db
# service appjail-natnet status
NAT Information:

BOOT  NAME  RULE
1     db    nat on "jext" from 10.42.0.0/24 to any -> ("jext:0")

Status:

nat on jext inet from 10.42.0.0/24 to any -> (jext:0) round-robin

En el ejemplo anterior, NAT se aplicará al inicio del servicio `appjail-natnet`, ya que el boot flag está ajustado a 1.

Aplicar NAT a una red entera ahorra tiempo y recursos, pero hay veces en las que determinadas jaulas no deberían comunicarse con el exterior. AppJail soluciona esto aplicando una regla NONAT evitando así enmascarar la dirección IP de la jaula.


Código: text
# Usando appjail quick:
appjail quick jnonat virtualnet="db:jnonat default" nonat overwrite start
# Manualmente:
appjail quick jnonat virtualnet="db:jnonat default" overwrite
appjail nat add jail -n db -N jnonat
appjail config -Ia 'exec.prestart="appjail nat on jail ${name}"' -j jnonat
appjail config -Ia 'exec.poststop="appjail nat off jail ${name}"' -j jnonat
appjail start jnonat

Port forwarding:

Exponer los servicios de red que se encuentren en una jaula hacia el exterior para que nuestros clientes puedan aprovechar esto resulta bastante útil. Por ejemplo, NGINX puede ser usado para proveer un servidor web a nuestros clientes:

Código: sh
# Usando appjail quick:
appjail quick nginx virtualnet="web:nginx default" nat expose=80 start
# Mnualmente:
appjail quick nginx virtualnet="web:nginx default" nat overwrite
appjail expose set -k web -p 80 nginx
appjail config -Ia 'exec.prestart="appjail expose on ${name}"' -j nginx
appjail config -Ia 'exec.poststop="appjail expose off ${name}"' -j nginx
appjail start nginx
# www/nginx:
appjail pkg jail nginx install -y nginx
appjail sysrc jail nginx nginx_enable="YES"
appjail service jail nginx nginx start

Dado que somos el host, podemos realizar una petición HTTP directamente a la dirección IP de la jaula:

Código: text
# fetch -qo - http://10.0.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

En cambio otro host dentro de la red podría usar la dirección IP del host, asumiendo en este caso que es `192.168.1.105`:

Código: text
# fetch -qo - http://192.168.1.105
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

Conclusión:

En este pequeño artículo se mostraron más características de AppJail que permiten tener más control acerca de la red y sus parámetros. Es un complemento de la parte anterior, por lo que es recomendable leer ambas partes. No obstante, tanto esta como la anterior parte forman lo esencial para adaptar una o más jaulas a nuestro entorno. En la parte siguiente se mostrarán configuraciones más complejas asumiendo lo anteriormente aprendido.

~ DtxdF
#153

Fuente: IONOS

En una You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login se brindó una breve introducción a los contenedores en FreeBSD usando AppJail, pero eso solo es una pequeña parte de todo el conjunto. Las redes son un aspecto fundamental cuando se trata de contenedores, ya que son la forma en cómo interactúan los contenedores tanto con los clientes, como con nosotros mismos, los administradores, y también como interactúan entre ellos mismos. No solo es una forma de comunicación, también es una cuestión de organización.

AppJail está hecho para tratar con estos aspectos adaptándose a diferentes necesidades, como se verá a continuación.

No se mostrarán las configuraciones que necesita el host, ni como configurar el firewall o cosas similares, ya que de eso se encarga la documentación: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


IP aliasing:

Aunque el IP aliasing no provea aislamiento, para cierto tipo de aplicaciones puede ser bastante útil.

Código: sh
# IPv4
appjail quick myjail alias=jext ip4="192.168.1.120/24" overwrite start resolv_conf
# IPv6
appjail quick myjail alias=jext ip6="2001:db8:0:1::2/64" overwrite start resolv_conf
# Dual
appjail quick myjail alias=em0 ip4="192.168.1.120/24" ip6="2001:db8:0:1::2/64" overwrite start resolv_conf
# Múltiples interfaces
appjail quick myjail alias ip4="jext|192.168.1.120/24" ip6="em0|2001:db8:0:1::2/64" overwrite start resolv_conf

Tanto `ip4` como `ip6` pueden ser especificadas múltiples veces. La opción `overwrite` detiene y destruye la jaula si existe, y `resolv_conf` copia el archivo `/etc/resolv.conf` del host a la jaula. Aunque la opción `resolv_conf` realmente no sea necesaria especificarla, ya que en el archivo de configuración de AppJail está habilitada por defecto, es útil para ilustrar como es el proceso manualmente.

Redes virtuales:


AppJail puede crear redes aisladas y privadas, las cuales son llamadas «redes virtuales». Una jaula puede estar en más de una red virtual. Esto es increiblemente útil para organizar de forma lógica un montón de jaulas.

Recomiendo usar rangos privados especificados con más detalles en RFC 1918:

* 10.0.0.0/8
* 172.16.0.0/12
* 192.168.0.0/16

Antes de crear una jaula, necesitamos tres cosas: la dirección de red, el CIDR y el nombre. En el siguiente ejemplo, la red `development` tendrá como dirección de red `10.42.0.0` y el CIDR será `24`.


Código: sh
appjail network add development 10.42.0.0/24

Ahora que tenemos nuestra red, es posible crear una jaula que esté en ella.

Código: sh
appjail quick myjail virtualnet="development:myjail" overwrite start

En este caso la jaula llamada `myjail` estará en la red `development` y usará una interfaz llamada `myjail`. El nombre de la interfaz puede ser igual al nombre de la jaula, pero recomiendo mantenerlo corto (menos de 10 caracteres).

Una forma de ilustrar las redes virtuales es creando otra que esté en la misma red que `myjail`.


Código: sh
appjail quick otherjail virtualnet="development:otherjail" overwrite start

Una vez lo anterior esté concluido, necesitamos conocer la dirección IP de cada jaula, lo cual se puede lograr usando el comando `appjail network hosts`.

myjail:
Código: text
# appjail network hosts -REj myjail
10.42.0.2      development

otherjail:
Código: text
# appjail network hosts -REj otherjail
10.42.0.3      development

Ahora podemos utilizar `ping(8)` para verificar el éxito de la comunicación.

Código: text
# appjail cmd jexec otherjail ping -c4 10.42.0.2
PING 10.42.0.2 (10.42.0.2): 56 data bytes
64 bytes from 10.42.0.2: icmp_seq=0 ttl=64 time=0.369 ms
64 bytes from 10.42.0.2: icmp_seq=1 ttl=64 time=0.211 ms
64 bytes from 10.42.0.2: icmp_seq=2 ttl=64 time=0.172 ms
64 bytes from 10.42.0.2: icmp_seq=3 ttl=64 time=0.129 ms

--- 10.42.0.2 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.129/0.220/0.369/0.090 ms

IP aliasing & Redes virtuales:

La razón principal por la que las redes virtuales y el IP aliasing se pueden combinar es para proveer opciones de red para las jaulas que no pueden utilizar `vnet(9)`, como las jaulas con linux, aunque perfectamente se puede utilizar una jaula estándar.

Código: sh
appjail quick jalias alias="appjail0" virtualnet="development" start

Herendado el stack del host:

Aunque esto puede causar algunos problemas con algunas aplicaciones, heredar el stack de red del host puede ser útil para ciertas aplicaciones, aunque este método no provee aislamiento de ninguna manera.

Código: sh
appjail quick myjail alias ip4_inherit ip6_inherit resolv_conf overwrite start

Deshabilitando el stack de red:

AppJail puede crear una jaula con IPv4 o IPv6 deshabilitado usando `ip4_disable` y `ip6_disable`.

Código: sh
appjail quick myjail alias ip4_disable ip6_disable resolv_conf overwrite start

Netgraph:

AppJail puede utilizar Netgraph para crear puentes y enlaces de la misma forma que los puentes. AppJail utiliza el script `jng` por lo que es necesario tenerlo instalado de antemano:

Código: sh
install -m 555 /usr/share/examples/jails/jng /usr/local/bin/jng

Ahora podemos usar la opción `jng` del comando `appjail quick` para crear nuestra jaula con el tipo de configuración mencionada anteriormente.

Código: sh
appjail quick myjail jng="myjail jext" overwrite start

El nombre `myjail` será utilizado por los enlaces y `jext` es la interfaz de nuestro sistema que será agregada como miembro del puente que creará `jng`. En el ejemplo anterior, se creará un nodo llamado `ng0_myjail` y un puente llamado `jextbridge`.

Puentes:


AppJail puede crear puentes, interfaces y agregar interfaces existentes como miembros del puente en demanda. Esta opción provee una forma distinta de manejar el apartado de redes para las jaulas, y es mucho más flexible.

Código: sh
appjail quick jbridge bridge="jpub iface:jext" start
# Si no se define ningún puente, como en el anterior ejemplo,
# appjail será usado.
appjail quick jbridge bridge="jpub iface:jext bridge:public" start

En el ejemplo anterior, dos interfaces serán creadas: `sa_jpub` que será agregada como miembro del puente y `sb_jpub` será para la jaula.

Supongamos que ya hemos instalado los paquetes que necesitamos para la jaula anterior, y no queramos que esa jaula vuelva a tener conexión con el exterior hasta que realmente se vuelva a necesitar. AppJail puede lograr esto quitando `jpub` como miembro del puente.


Código: sh
appjail network detach jpub

Sin embargo, es necesario editar la plantilla de la jaula y eliminar las líneas donde se hace referencia a esta interfaz para que en un reinicio no la vuelva a crear y agregar.

Cabe aclarar que dado que `jpub` no es miembro del puente, AppJail no la destruirá al detener la jaula, para forzar esto podríamos usar `appjail detach -df`.


Código: sh
appjail network detach -df jpub

VNET:

Probablemente se tiene una tarjeta de red sobrante que una jaula puede aprovechar para su máximo rendimiento. AppJail puede tomar ventaja de esto usando la opción `vnet`.

Código: sh
appjail quick jvnet vnet=em0 start

Conclusión:

En este pequeño artículo de una serie de artículos se explica lo básico para configurar el apartado de redes de nuestras jaulas. AppJail ofrece más opciones que se adaptan a determinados entornos, cada vez un poco más complejos, por lo que se detallarán en siguientes episodios.

~ DtxdF
#154
Muchas gracias You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. Como siempre, un placer.

Poco a poco iré publicando más cosas sobre AppJail.

~ DtxdF
#155

Fuente: FreeBSD Foundation

Las jaulas son un mecanismo de virtualización a nivel de sistema operativo que permite a un administrador de sistema particionar el sistema operativo en pequeños sistemas derivados e independientes, todos compartiendo el mismo kernel, con solo una pequeña sobrecarga. Aunque este mecanismo sea implementado a través de la llamada al sistema jail(2), también se puede usar en el espacio de usuario gracias a jail(8), sumando además a que una gran parte de las herramientas base también tienen este mecanismo implementado para manipular características dentro de la jaula, como se verá más adelante. Esta funcionalidad fue introducida por You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login en 1999 y lanzada a partir de la versión 4.0 de FreeBSD.


Algunos comandos de AppJail.

Administrar pequeños sistemas con sus propias cosas en lugar de un solo sistema con todas las cosas que necesite la organización, trae con sí varias ventajas, como usar una aplicación de forma aislada sin que el host se vea afectado; ventajas como la seguridad y el mantenimiento del mismo sistema hacen tentativa esta opción.

No obstante, las jaulas aunque sean relativamente fáciles de crear y mantener, cuando se necesitan varias para diferentes propósitos, delegadas para diferentes administradores, la dificultad puede aumentar y por lo tanto los errores se hacen presente. Además, si le sumamos a que las jaulas por sí solas no controlan las reglas de nuestro cortafuegos, no restringen los recursos, no descargan una imagen con FreeBSD para que podamos usarla como el sistema que usará la jaula, no configuran la parte de la red para, por ejemplo, usar DHCP, no exponen puertos, etc. Las jaulas no hacen tal cosa porque en el sistema base ya hay herramientas que hacen esto por nosotros, pero debemos conocer cuales son esas herramientas y como usarlas, aparte de tener un orden en nuestra configuración para que otros administradores pueden realizar su trabajo sin interferencias.

Esto no es desalentador si se está dispuesto a realizar este proceso, de forma vainilla, sin ningún ayudante o framework presente. No obstante, hay personas u organizaciones que simplemente necesitan abstraer y automatizar estos procesos; necesitan ser eficientes, por lo que nacen otro tipo de personas: los desarrolladores de los frameworks que usan estas desventajas para convertirlas en virtudes en un solo conjunto.

La idea de los helpers/frameworks no es nueva [1], ya que hay una docena de ellos actualmente creados, muchos parecidos unos a otros, pero hay otros que tienen sus diferencias. Ya sea que se especialicen en hacer ciertas cosas mejor, o tener determinado público objetivo, o simplemente tener un modelo de desarrollo completamente distinto.

Pese a que existan varias alternativas presentes, AppJail es un nuevo framework que tiene como objetivo tanto a desarrolladores como administradores de sistemas. Esta herramienta tiene con sí docenas de características para que los procesos repetitivos, simplemente lo sean muchísimo menos, y muchos de ellos, abstraídos para que el usuario solo tenga que encargarse de lo principal: administrar sus aplicaciones en un entorno aislado.

Este pequeño artículo será parte de una serie de pequeños artículos mostrando las características de este framework, pero no me es posible mostrar absolutamente todas porque de eso se encarga la misma documentación: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Cosas como la instalación, simplemente no se mostrarán aquí, por lo que se deja implícito que se explica en la misma documentación.


Características:


* Fácil de usar.
* Inicio y parada de las jaulas en paralelo.
* Soporte para UFS y ZFS.
* Soporte para RACCT/RCTL para restringir los recursos de una jaula.
* Soporta IPv4 y IPv6.
* Soporta DHCP y SLAAC.
* Redes virtuales para organizar de forma lógica las jaulas.
* Puentes para proveer aislamiento entre jaulas.
* Soporta VNET.
* Despliegue sencillo usando los Makejails.
* Soporta Netgraph.
* Soporta LinuxJails.
* Soporta thin y thick jails.
* TinyJails, una característica experimental para exportar una jaula bastante despojada que es bastante útil para su distribución.
* Control del inicio y parada de las jaulas usando prioridades y el boot flag.
* Soporta las dependencias de jaulas.
* Initscripts, para crear jaulas interactivas.
* Respaldos sencillos con un solo comando.
* Estructura modular, lo cual hace que AppJail sea fácil de mantener: cada archivo tiene una responsabilidad propia.
* La mayoría de comandos tienen una interfaz como una tabla, bastante familiar en varias herramientas de administración de sistemas.
* Sin base de datos, todos los archivos son guardados individualmente en entidades separadas (redes, jaulas, etc.), lo cual hace su respaldo y mantenimiento mucho más sencillo.
* Supervisor - Próximamente ...
* ...


Creación de una jaula:


Creando una jaula con dos simples comandos.

Dos cosas son necesarias para la creación de nuestra jaula: obtener los componentes (`base.txz`, `lib32.txz`, etc.) y usar esos componentes para crear la jaula.

Código: sh
appjail fetch
appjail quick myjail start login

Usando el comando `appjail fetch` descargaremos el archivo `MANIFEST` para verificar la suma de verificación de los components. Después, los componentes se descargarán. Por defecto, solo `base.txz` será descargado.

Una vez tengamos un `release` con los componentes deseados, podremos crear nuestra jaula con el comando `appjail quick`. Este caso nuestra jaula se llamará `myjail`. Además, usamos la opción `start` para iniciar la jaula después de su creación, y `login` para iniciar sesión dentro de la jaula después de iniciarla.

No es necesario ejecutar `appjail fetch` nuevamente al menos que se quiera crear otro release con diferentes componentes.


Notas:

[1] You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#156
No es necesario comentar que necesitas ayuda. Si alguien quiere y puede ayudarte, simplemente lo hace, solo tienes que ser paciente.

Te recomiendo usar el buscador del foro, probablemente encontrarás a un usuario con tu misma cuestión. También esta puede ser la razón por la que aún no has recibido una respuesta, ya que seguro que es un duplicado.

~ DtxdF
#157
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Pueden ser varias cuestiones para tu caso, no necesariamente tienen que ser los DNS.

Si estás usando ping, el servidor donde está la página web podría bloquear los paquetes ICMP, pero no necesariamente quiere decir que no esté funcionando.

Tal vez el destino al que estás contactando no esté disponible realmente y no sea problema de una configuración del ISP o local.

No sé a donde tratas de acceder, pero si no es algo que el ISP no quiere que veas, no es necesario usar una VPN. Muchas veces, no es necesario usarla para evitar la censura por parte del ISP, con solo cambiar el DNS está listo.

Aquí va una lista de servidores DNS (IPv4):

* OpenDNS: 208.67.222.222, 208.67.220.220
* Google: 8.8.8.8, 8.8.4.4
* Cloudflare: 1.1.1.1, 1.0.0.1

Hay muchos más servidores, pero con cualquiera de estos debería funcionar. Yo uso OpenDNS.

~ DtxdF
#158
Al menos que vaya a ser el servidor que manipule los nodos, no es recomendable usar Python, en especial si se desea usar en el cliente. Es mejor usar lenguajes como C/C++ o Go. Claro está que si el nodo es un servidor web, también usar el lenguaje que permita (PHP, por ejemplo) sería lo recomendable, aunque no siempre el más efectivo ni eficiente.

~ DtxdF
#159
Underc0de / Re: Feliz Navidad y Próspero 2023!!
Diciembre 25, 2022, 09:35:30 AM
@AXCESS

Cada año se luce más realizando estos excelentes resumenes del año dándole más vida al foro. Gracias por eso.

---

Hay rumores, pero solo son eso: rumores, que mencionan que el que usa la cuenta de ANTRAX no es el propio dueño, sino un caniche del ejército de La Caniche que se quiere apoderar del foro, y mira las estrategias...

Pilas señores, pilas...

~ DtxdF
#160
Muchas gracias por la aclaratoria, es una excelente noticia, y como mencioné antes, una forma creativa de hacer negocios por parte de Telegram.

~ DtxdF