El enrutador / firewall CentOS 6 parece estar acelerando el rendimiento

12

TL; DR

El enrutador / firewall CentOS6 NAT detrás de una conexión de módem por cable de 120Mbps parece limitar el rendimiento a 30Mbps después de las actualizaciones recientes y el "endurecimiento" de la seguridad.

Antes de las actualizaciones y el endurecimiento, obtenía 90 Mbps.

He verificado el uso de la CPU y la red y ninguno de ellos parece ser un factor limitante. tcno muestra que se esté formando ningún tráfico y no sé cómo solucionarlo aún más.

Detalles

Tengo un sistema CentOS 6 ejecutándose como un enrutador / firewall NAT detrás de un módem de cable Comcast, que también funciona como un enrutador NAT

                              1000     100
                              eth1     eth0
Internet-------Modem-------------CentOS6-----------------LAN
                     10.0.0.0/24         192.168.10.0/24

El doble NAT es un legado del sistema CentOS que anteriormente sirvió como enrutador / firewall detrás de un cable módem Time-Warner que se ejecutaba en modo puente. Cuando me mudé al territorio de Comcast, tenía la intención de cambiar el módem al modo puente, pero nunca lo conseguí, y el doble NAT nunca causó un problema. Estaba obteniendo un rendimiento de 90 Mbps sin problemas.

Al preparar la conversión al modo puente en el módem Comcast, decidí "fortalecer" el sistema CentOS deshabilitando algunos servicios innecesarios y haciendo "yum update", lo que no había hecho en mucho tiempo. Después de endurecer hice una prueba de velocidad y me sorprendió encontrar un rendimiento de hasta 30Mbps.

Traté de conectar mi sistema de escritorio primario directamente al módem como este

                          eth1     eth0
Internet---Modem-------------CentOS6-----------------LAN
              |  10.0.0.0/24         192.168.10.0/24
              |
              +--------------Desktop(Win7)

La ejecución de speedtest.net verificó que mi conexión de Comcast es capaz de 120Mbps, por lo que algo que cambié en el sistema CentOS resultó en un rendimiento de límite a 30Mbps. Cada vez que hago una prueba de velocidad desde la LAN (detrás del sistema CentOS) obtengo un valor dentro del 1-2% de 30Mbps, por lo que casi parece que algo está limitando artificialmente el rendimiento.

Pensé que tal vez la configuración del tráfico se habilitó de alguna manera, pero tcparece indicar que no está activa

[jhg@perseus ~]$ sudo tc -s qdisc
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 64159459406 bytes 44745482 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 2871293442 bytes 26151570 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0

El "endurecimiento" consistió en

  1. eliminar algunos paquetes innecesarios
  2. cerrar servicios innecesarios
  3. configurar iptables para filtrar todo el tráfico entrante, excepto un puerto no estándar para ssh
  4. instalar y configurar tripwire

Paquetes eliminados:

redis                    dovecot
redhat-lsb-compat        ipa-client
redhat-lsb               nfs-utils-lib
redhat-lsb-printing      nfs-utils
foomatic                 subversion
foomatic-db              spamassassin
foomatic-db-ppds         certmonger
cups                     yp-tools
mysql-server             ypbind
mysql                    rpcbind

Servicios habilitados actualmente:

abrt-ccpp            cpuspeed               kdump            nmb       
abrt-oops            crond                  lvm2-monitor     ntpd      
abrtd                dhcpd                  mcelogd          postfix   
acpid                dkms_autoinstaller     mdmonitor        rsyslog   
atd                  haldaemon              messagebus       smb       
auditd               ip6tables              named            sshd      
autofs               iptables               netfs            sysstat   
blk-availability     irqbalance             network          udev-post 

Mi pregunta es: ¿qué debo hacer a continuación para descubrir por qué mi enrutador CentOS 6 parece limitar artificialmente el rendimiento a 30 Mbps?

Ex umbris
fuente
Método científico ... ¿Qué hiciste para "endurecer" el sistema? ¿Qué hardware está en uso? ¿Es saludable?
ewwhite
@ewwhite ver las actualizaciones de la publicación.
Ex Umbris
¿Qué sucede si deshabilita la inspección de iptables?
ewwhite
Configuré las políticas predeterminadas para ACEPTAR en las tres cadenas (entrada, reenvío, salida) y eliminé todas las reglas ... sin cambios, todavía 30Mbps
Ex Umbris
¿Downvoter quiere comentar?
Ex Umbris

Respuestas:

17

Entonces, el problema aquí resultó ser un problema de hardware. Las cosas funcionaban bien hace un mes, y uno no espera que el hardware fallido siga "funcionando" en un modo degradado, pero eso es lo que estaba sucediendo.

El paso de resolución de problemas que reveló el problema fue mirar realmente las luces del puerto ethernet en la parte posterior del módem por cable. En lugar de la luz verde "1Gbps", era naranja, lo que significa "100Mbps". En ese modo, parece que el módem solo admite un rendimiento de hasta 30 Mbps.

Sé que el módem (Arris TG-852G) tiene puertos GBEthernet, por lo que algo impedía que los Centos hablaran con el módem a 1 Gbps. Usando ethtoolvi esto:

Settings for eth1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes

que esencialmente decía (desde el punto de vista del adaptador Centos) "Puedo soportar GBEthernet, y estoy anunciando GBEthernet, pero el par no es compatible con GBEthernet, así que estoy conectado a 100Mbps" .

Intenté varias soluciones sugeridas en varios foros en línea (incluido aquí), como usar un cable diferente, desactivar la negociación automática, anunciar solo 1 GB de velocidad o establecer la velocidad en 1 GB manualmente. Desactivar el autoneg y probar varios cables Cat6 diferentes no tuvo ningún efecto, y los otros dos impidieron que se estableciera una conexión.

Llegué a la conclusión de que tenía que ser el adaptador en sí y pedí un nuevo adaptador. Cuando se instaló, se conectó inmediatamente a 1 Gbps. Problema resuelto.

La moraleja de la historia es, por supuesto, que aunque las fallas de hardware en dispositivos sin partes móviles son raras en estos días, aún son posibles y deberían eliminarse antes de culpar al software.

Ex umbris
fuente
1
Según esta salida, el par literalmente ni siquiera ofrece GBE, por lo que ninguna cantidad de su configuración anularía eso. Si fuera, por ejemplo, un cable defectuoso, vería una velocidad de enlace negociada más baja, pero aún vería GBE en las velocidades anunciadas de su par. Dado que se resolvió cambiando su tarjeta de red, eso significa que algo en un nivel muy bajo dentro o cerca del [G] MII se estaba comportando mal. Esto es lo suficientemente profundo en un territorio "extraño" que haré como miles de net.engs han hecho antes que yo y diré: "Culpo al firmware".
BMDan
7

Lo que haría aquí es revertir los cambios individualmente y ejecutar una prueba de velocidad después de cada uno o revertir todos los cambios. Compare una versión no modificada de CentOS (línea de base) y luego aplique cada cambio individualmente y ejecute la prueba de velocidad después de cada cambio.

usuario9517
fuente