Cómo ejecutar telnet/tcpdump en el nodo OpenShift v4 CoreOS

A
Puede descargar este artículo en formato PDF a través del siguiente enlace para apoyarnos.

Descarga la guía en formato PDF

apagar
A

A
A

A partir de la versión OpenShift 4, Red Hat Enterprise Linux CoreOS (RHCOS) es el sistema operativo recomendado y compatible que se ejecuta en todas las computadoras OpenShift Container Platform. RHCOS combina los estándares de calidad de Red Hat Enterprise Linux (RHEL) con la función de actualización remota automática de Container Linux.

RHCOS no viene con un administrador de paquetes, como yum o dnf. El sistema operativo utiliza las siguientes funciones para las actualizaciones de transacciones:rpm-ostreeEl sistema es un sistema que entrega actualizaciones a través de imágenes de contenedores y es parte del proceso de actualización de la plataforma de contenedores OpenShift.

No hay un administrador de paquetes del sistema operativo y no se admite la descarga e instalación directa de paquetes RPM. La única forma de ejecutar herramientas que no están empaquetadas previamente con el sistema operativo es a través de contenedores. Lo bueno es que CoreOS viene con un paquete llamadoCaja de herramientasIniciará un contenedor y le permitirá introducir sus herramientas de administración o depuración favoritas.

Ejecute el contenedor de la caja de herramientas en la máquina OpenShift 4 RHCOS

Puede iniciar el contenedor de la caja de herramientas con el siguiente comandoCaja de herramientasEl guión proporcionado. Pero primero debes acceder al nodo OpenShift desde donde deseas ejecutar la herramienta de administración en el contenedor.

puedes usarlojefe depuraciónComando o SSH.

--- Access node with SSH ---
$ ssh [email protected]

--- Access node with oc debug command ---
$ oc debug node/
            
            
            
            
            
            
            
            

Utilice el ejemplo de depuración de oc para acceder.

$ oc debug node/node01.ocp.computingforgeeks.com
Starting pod/node01ocpcomputingforgeekscom-debug ...
To use host binaries, run `chroot /host`

El mensaje proviene de un contenedor de herramientas especial que monta el sistema de archivos raíz del nodo en/AnfitriónCarpeta y le permite verificar archivos desde ese nodo.

Como muestra el resultado del comando, debe iniciar un shell chroot en la carpeta /host. Esto le permitirá utilizar archivos binarios de host en Shell.

chroot /host

Verá el siguiente resultado:

chroot /host
Pod IP: 10.10.30.235
If you don't see a command prompt, try pressing enter.
sh-4.2# chroot /host
sh-4.4# 

Para iniciar el contenedor de la caja de herramientas, utilice el siguiente comando.

$ /usr/bin/toolbox

La primera vez que ejecute el script, descargará la imagen del contenedor de la caja de herramientas en su nodo.

Trying to pull registry.redhat.io/rhel8/support-tools...
Getting image source signatures
Copying blob ec1681b6a383 done  
Copying blob c4d668e229cd done  
Copying blob 6b1688d3542f done  
Copying config 50b63c2aff done  
Writing manifest to image destination
Storing signatures
50b63c2aff8c13f9f8594c9eaf5fc961f39c74df6d9c6ddde8ca705f78f3c14d

Luego, gira el contenedor con Podman.

Spawning a container 'toolbox-core' with image 'registry.redhat.io/rhel8/support-tools'
Detected RUN label in the container image. Using that as the default...
command: podman run -it --name toolbox-core --privileged --ipc=host --net=host --pid=host -e HOST=/host -e NAME=toolbox-core -e IMAGE=registry.redhat.io/rhel8/support-tools:latest -v /run:/run -v /var/log:/var/log -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -v /:/host registry.redhat.io/rhel8/support-tools:latest

Ejecute telnet/tcpdump en el servidor OpenShift v4 CoreOS

Después de ingresar al shell del contenedor, puede usar el administrador de paquetes yum para instalar las herramientas de administración y depuración necesarias.

--- Install network tools ---
# yum -y install iproute net-tools

--- Install telnet ---
# yum -y install telnet

--- Install tcpdump ---
# yum -y install tcpdump

--- Install any other tool ---
# yum -y install 
            
            
            
            
            
            
            
            

Utilice telnet:

# telnet 
            
            
            
            
            
            
            
             
             
             
             
             
             
             
             
             
            
            
            
            
            
            
            
            

Utilice tcpdump:

Identifique el nombre de la interfaz: necesita instalar herramientas de red.

# ip link show | head 
1: lo: 
            
            
            
            
            
            
            
            
             
             
             
             
             
             
             
              mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: 
             
             
             
             
             
             
             
             
              
              
              
              
              
              
              
               mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:1a:4a:16:01:73 brd ff:ff:ff:ff:ff:ff
7: ovs-system: 
              
              
              
              
              
              
              
              
               
               
               
               
               
               
               
                mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 4e:66:b9:32:0d:26 brd ff:ff:ff:ff:ff:ff
8: br0: 
               
               
               
               
               
               
               
               
                
                
                
                
                
                
                
                 mtu 1450 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 72:d6:df:e8:13:48 brd ff:ff:ff:ff:ff:ff
9: vxlan_sys_4789: 
                
                
                
                
                
                
                
                
                  mtu 65000 qdisc noqueue master ovs-system state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 4a:c4:7f:c1:85:f7 brd ff:ff:ff:ff:ff:ff 
                
               
               
               
               
               
               
               
               
              
              
              
              
              
              
              
              
             
             
             
             
             
             
             
             
            
            
            
            
            
            
            
            

Utilice tcpdump.

# tcpdump 
            
            
            
            
            
            
            
            

Este ejemplo se utiliza para capturar paquetes desde cualquier interfaz enviada al puerto.443. Guardamos el resultado en una ruta en el sistema de archivos de Node, la ruta puede ser/AnfitriónTabla de contenido.

# tcpdump -i any port 443 -s 0 -vv -s 0 -w  /host/tmp/testpacketname.pcap

puedes reemplazarCualquierTener un nombre de interfaz, por ejemplo:

-i ens3

Para finalizar la captura, presione Control-C.

Ejecute la captura tcpdump desde el contenedor

Abra el shell de depuración o SSH en el nodo donde se ejecuta el Pod de destino:

$ oc debug node/
            
            
            
            
            
            
            
            
             
             
             
             
             
             
             
             

--- OR ---
$ ssh [email protected]
            
            
            
            
            
            
            
            

Utilice el comando crictl ps para determinar el ID del proceso del Pod de destino:

# crictl ps

Mi identificación de contenedor es51a17d9a4b376. Guardémoslo como una variable.

container_id="51a17d9a4b376"

Obtenga el PID del contenedor:

container_pid=$(crictl inspect --output yaml $container_id  | grep 'pid:' | awk '{print $2}')

Valor de confirmación:

# echo $container_pid
1124033
# ps 1124033
    PID TTY      STAT   TIME COMMAND
1124033 ?        Ss     0:00 /bin/sleep 3650d

Puede utilizar el siguiente comando para iniciar tcpdump en el espacio de nombres de red del contenedor.

# nsenter -n -t $container_pid -- tcpdump 
            
            
            
            
            
            
            
            
             
             
             
             
             
             
             
             

--- Example ---
# tcpdump -i any port 443 -s 0 -vv -s 0 -w  /host/tmp/testpacketname.pcap
            
            
            
            
            
            
            
            

Tenga en cuenta que debe instalar tcpdump en el contenedor antes de ejecutar el comando.

Más artículos sobre OpenShift.

Cómo instalar ArgoCD en el clúster OpenShift

Cómo instalar Istio Service Mesh en OpenShift 4.x

Ejecute Ceph Toolbox para Rook en Kubernetes/OpenShift

A
Puede descargar este artículo en formato PDF a través del siguiente enlace para apoyarnos.

Descarga la guía en formato PDF

apagar
A

A
A

Artículos Relacionados