Tutoriales y Manuales
Entradas Mensuales
-
▼
2025
(Total:
244
)
-
▼
enero
(Total:
165
)
-
Inteligencia artificial, TOPs y tokens
-
uBlock Origin dejará de funcionar en Chrome
-
Francia tenía su propia IA para competir con ChatG...
-
México pide en una carta a Google corregir lo que ...
-
GPU AMD RX 7900 XTX supera a la NVIDIA RTX 4090 en...
-
El FBI cierra los dominios de los foros de pirater...
-
DeepSeek sufre una filtración de datos
-
Actualizaciones de seguridad críticas para iPhone,...
-
Parece un inocente PDF, pero es una estafa bancari...
-
DeepSeek tendrá un clon «100% abierto» desarrollad...
-
¿Qué son los tokens en el contexto de los LLM?
-
¿Qué es el destilado de una LLM?
-
Se saltan el sistema de cifrado BitLocker de Windo...
-
Facebook bloquea cualquier tema de Linux de Distro...
-
Ramsomware Makop y Lynx
-
NVIDIA pide explicaciones a Super Micro por vender...
-
Investigadores canadienses afirman que un ajuste d...
-
Vulnerabilidad crítica en Cacti (SNMP)
-
FARM discos duros Seagate
-
DeepSeek habría sido entrenada con datos robados a...
-
Alibaba presenta Qwen2.5-Max, su poderosa IA
-
Huawei dice tener un chip para IA igual de potente...
-
El fabricante de móviles Oppo es víctima de una gr...
-
DeepSeek puede crear malware para robar tarjetas d...
-
Historia del fabricante Asus
-
Instalar DeepSeek (destilado) con Ollama en tu ord...
-
Lossless Scaling: ¿Qué es y cómo funciona?
-
Una hora de anuncios para ver un simple vídeo de Y...
-
Herramientas gratuitas para transcribir de audio a...
-
OpenAI Operator: el agente de IA que automatiza ta...
-
DeepSeek Janus-Pro-7B, otro modelo de IA multimoda...
-
DeepSeek es víctima de un ataque DDoS
-
NVIDIA DLSS 4 (Tecnología de Escalado de nvidia)
-
Sony abandona los discos Blu-Ray grabables, MiniDi...
-
Vulnerabilidad en el framework Llama Stack de Meta...
-
PayPal pagará 2 millones de dólares por la filtrac...
-
DeepSeek, la herramienta china que revoluciona la ...
-
119 vulnerabilidades de seguridad en implementacio...
-
Cómo bloquear y demorar bots IA de Scraping web
-
Oracle, en negociaciones con ByteDance para compra...
-
Descubren que Elon Musk hacía trampas en los juego...
-
Por ser cliente de Movistar en España tienes grati...
-
HDMI 2.2 VS DisplayPort 2.1
-
Filtrados datos personales de asegurados de Asisa
-
Los fallos que cometió Ulbricht para ser detenido:...
-
Instagram desata las críticas de los usuarios espa...
-
Donald Trump indulta a Ross Ulbricht, creador del ...
-
Alia, la IA del Gobierno Español, es un desastre: ...
-
Stargate, un proyecto de Estados Unidos para inver...
-
Ataques del ransomware BlackBasta mediante Microso...
-
El mayor ataque DDoS registrado alcanzó 5,6Tb/s me...
-
Tras el éxito de Doom en documentos PDF, ahora tam...
-
Cae una banda de ciberestafadores que enviaba hast...
-
Cómo desactivar el Antimalware Service Executable ...
-
Herramienta Restablecer Windows
-
Seagate llega a los 36 TB con sus nuevos discos du...
-
YST (‘Yo soy tú’, como se autodenominó irónicament...
-
¿Qué es la pipeline?
-
Una chica de 28 años se enamora de ChatGPT
-
Copilot+ ya permite la búsqueda local
-
DORA: la normativa europea que obliga a los bancos...
-
Apple desactiva funciones de Apple Intelligence po...
-
La empresa de hosting GoDaddy, obligada a reforzar...
-
Domina los ficheros PDF con dos servicios Docker
-
OpenAI desarrolla una IA para prolongar la vida hu...
-
TikTok cierra en Estados Unidos
-
Vulnerabilidad permite eludir UEFI Secure Boot
-
Normativa Drones España 2025
-
Robados los datos personales de 97.000 aspirantes ...
-
¿Cómo volar un dron de noche? Esta es la normativa...
-
Expuestas 15.000 configuraciones robadas de FortiG...
-
Filtración masiva en China expone 1.500 millones d...
-
Un ciberataque expone la identidad de 160.000 guar...
-
La Policía de España advierte sobre una nueva técn...
-
Microsoft estrena protección del administrador de ...
-
Windows 11 con sólo 184 MB de RAM
-
Evilginx 3 para ataques man-in-the-middle mediante...
-
Cómo Barcelona se convirtió en un centro de empres...
-
El Gobierno de España anuncia la creación de un Ce...
-
RDP Bitmap Forensics para investigaciones DFIR
-
Más de 660.000 servidores Rsync expuestos a ataque...
-
El FBI elimina el malware chino PlugX en 4.250 ord...
-
Hiren's BootCD PE con Windows 11
-
Las chicas del ENIAC y las programadoras de los Co...
-
Trucos de Windows 11
-
Millones de cuentas vulnerables por fallo en OAuth...
-
Si no actualizas a Windows 11, no podrás usar Offi...
-
Jugar al DOOM dentro de un archivo PDF
-
Los mejores procesadores para jugar en 2025, ¿cuán...
-
"Explotación masiva" de los firewalls de Fortinet ...
-
Cómo funciona la sincronización en el almacenamien...
-
Parallels ya permite emular Windows y Linux las Ma...
-
Ransomware en Servidores ESXi: Amenazas, Vulnerabi...
-
Roban información con Infostealer Lumma mediante t...
-
Cómo compartir contraseñas en Google Chrome con "M...
-
El arquitecto jefe de Xeon cambia de Intel a Qualc...
-
Hackean cuentas de Path of Exile 2 tras robar una ...
-
Microsoft consigue que su IA se vuelva experta en ...
-
Cómo instalar Stremio en Raspberry Pi para conecta...
-
"Free our Feeds" quiere evitar que los millonarios...
-
-
▼
enero
(Total:
165
)
-
►
2024
(Total:
1110
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Fortinet ha publicado una actualización de seguridad que aborda una vulnerabilidad de alta gravedad en su FortiOS Security Fabric, la...
-
Windows tiene un cliente SSH integrado y un servidor SSH que puede usar en Terminal Windows. En este tutorial, aprenderá a configurar un p...
-
Existen muchas herramientas que nos permiten tener un mayor control sobre el sistema como DoNotSpy11 o la popular WinAero Tweaker . Ahora n...
Optimizar rendimiento de OPNsense: Tunables
¿A quién no le gusta un Internet más rápido y con mejor rendimiento? ¿Especialmente cuando estamos utilizando hardware de alto rendimiento? Vamos a ir en un viaje de ajuste de nuestro Firewall OpnSense para mejor su rendimiento.
Ejemplo de velocidad 4,2Gbps de bajada y 5,5Gbps de subida:
OPNsense Tunables (sysctl)
Tunning
- OPNsense con una conexión FTTP de 1 Gbps y PPPoE
en OPNsense puedes ir a System -> Settings -> Tunables que en última instancia actualizará /boot/loader.conf por ti)
Activar y configurar Receive Side Scaling:
# un valor de -1 significa crear 1 por cpu core
net.isr.maxthreads = -1
net.isr.bindthreads = 1
# Permitir a los drivers NIC usar las colas ISR
net.isr.dispatch = deferred
# Habilitar RSS
net.inet.rss.enabled = 1
# porque tengo 4 núcleos
net.inet.rss.bits = 2
Entre ellas, estas opciones aseguran que hay múltiples hilos (1 por núcleo de CPU) para recibir paquetes y, al decirle a los controladores que usen las colas ISR, distribuyen la carga de procesamiento entre los núcleos. Para aquellos interesados, los documentos de OPNsense sobre este tema son bastante informativos.
Para ayudar a liberar algunos ciclos, también desactivar la mitigación de Spectre:
hw.ibrs_disable = 1
La mitigación probablemente no estaba añadiendo mucho valor de todos modos: Estoy ejecutando en hardware dedicado, por lo que un atacante tendría que ser capaz de ejecutar algo en el firewall con el fin de aprovechar el canal lateral - en ese punto probablemente tengo mayores preocupaciones de todos modos.
También he aumentado la longitud de la cola de entrada IP:
#net.inet.ip.intr_queue_maxlen=2048 # (default 256)
net.inet.ip.intr_queue_maxlen = 3000
En realidad no estaba viendo problemas con la profundidad de la cola (se puede comprobar con sysctl net.inet.ip.intr_queue_drops), pero los diversos documentos que estaba leyendo sugieren que probablemente se convertiría en un problema si me las arreglé para conseguir la velocidad.
También ajustar algunos sintonizables para el controlador igc (utilizado para las NIC i225 e i226):
hw.igc.max_interrupt_rate = 20000
hw.igc.rx_process_limit = 5000
El primero aumenta la tasa de interrupciones, mientras que el segundo aumenta el número de paquetes que se pueden procesar. La mejora derivada de este cambio asciende a unas decenas de megabits.
Comprobar config:
comando:
sysctl -a | grep rss
Resultado:
net.inet.rss.bucket_mapping: 0:0 1:1 2:2 3:3
net.inet.rss.enabled: 1
net.inet.rss.debug: 0
net.inet.rss.basecpu: 0
net.inet.rss.buckets: 4
net.inet.rss.maxcpus: 64
net.inet.rss.ncpus: 4
net.inet.rss.maxbits: 7
net.inet.rss.mask: 3
net.inet.rss.bits: 2
net.inet.rss.hashalgo: 2
hw.bxe.udp_rss: 0
hw.ix.enable_rss: 1
IP Socket buffer
# speed: 1 Gbit maxsockbuf: 2MB wscale: 6 in-flight: 2^6*65KB = 4MB (default)
# speed: 2 Gbit maxsockbuf: 4MB wscale: 7 in-flight: 2^7*65KB = 8MB
# speed: 10 Gbit maxsockbuf: 16MB wscale: 9 in-flight: 2^9*65KB = 32MB
# speed: 40 Gbit maxsockbuf: 150MB wscale: 12 in-flight: 2^12*65KB = 260MB
# speed: 100 Gbit maxsockbuf: 600MB wscale: 14 in-flight: 2^14*65KB = 1064MB
#kern.ipc.maxsockbuf=2097152 # (wscale 6 ; default)
#kern.ipc.maxsockbuf=4194304 # (wscale 7)
kern.ipc.maxsockbuf=16777216 # (wscale 9)
#kern.ipc.maxsockbuf=157286400 # (wscale 12)
#kern.ipc.maxsockbuf=614400000 # (wscale 14)
TCP Buffers
Según Guía de Ajuste de Rendimiento de Red de FreeBSD, este era su valor recomendado para si tiene adaptadores de red de 10Gbps. El valor por defecto que venía con mi instalación de OPNsense correspondía con el valor de la guía para redes de 2Gbps. Decidí que ya que podría querer expandirme en el futuro, incrementaría esto a este absurdo nivel para no tener que lidiar con esto de nuevo. Es posible que desee establecer un valor más racional, 16777216 debe trabajar para 10Gbps. La guía enlazada arriba explica lo que hace este valor y otros valores que afecta en gran detalle.
net.inet.tcp.recvbuf_max=4194304
net.inet.tcp.recvspace=65536
net.inet.tcp.sendbuf_inc=65536
net.inet.tcp.sendbuf_max=4194304
net.inet.tcp.sendspace=65536
O bien:
net.inet.tcp.recvbuf_inc=65536 # (default 16384)
net.inet.tcp.recvbuf_max=4194304 # (default 2097152)
net.inet.tcp.recvspace=65536 # (default 65536)
net.inet.tcp.sendbuf_inc=65536 # (default 8192)
net.inet.tcp.sendbuf_max=4194304 # (default 2097152)
net.inet.tcp.sendspace=65536 # (default 32768)
stream (TCP) sockets
net.inet.tcp.soreceive_stream = 1 # (default 0)
Tomé esto de la guía de ajuste también, es probable que no ayudó con mi problema de hoy, pero puede evitar problemas en el futuro. Esto aumenta el tamaño de la tabla hash del cortafuegos PF para permitir más conexiones en la tabla antes de que se deteriore el rendimiento.
- PF: Increase the size of the pf(4) source nodes hashtable from 32k to 1M.
net.pf.source_nodes_hashsize = 1048576 # (default 32768)
Tomé estos valores de la guía de ajuste que están destinados a mejorar la eficiencia durante el procesamiento de fragmentos de IP. Hay valores ligeramente más agresivos que se pueden establecer aquí también, pero parece que estos son los valores más seguros, así que me fui con ellos.
net.inet.tcp.mssdflt=1240 # Option 1 (default 536)
#net.inet.tcp.mssdflt=1240 # Option 2 (default 536)
Y
net.inet.tcp.abc_l_var=44 # (default 2) if net.inet.tcp.mssdflt = 1460
#net.inet.tcp.abc_l_var=52 # (default 2) if net.inet.tcp.mssdflt = 1240
Otro valor de la guía de ajuste en el que no me fijé demasiado, pero que configura el tamaño mínimo del segmento, o la carga útil más pequeña de datos que un único segmento TCP IPv4 aceptará transmitir, con el objetivo de mejorar la eficiencia.
net.inet.tcp.minmss = 536
Esto no está relacionado con la red en absoluto, pero era un valor recomendado por la guía de ajuste para mejorar la piscina entropía RNG. Dado que estoy haciendo cosas VPN en este sistema, me imagino que más RNG es mejor.
kern.random.fortuna.minpoolsize=128 # (default 64)
Este valor se originó en mi hilo de Reddit enlazado anteriormente, se añadió rápidamente durante el último lote de sintonizables que finalmente me llevó al límite en términos de rendimiento, y decidí que lo dejaría incluso si no estaba haciendo nada significativo. El aumento de los valores de cola parece haber sido un tema de la puesta a punto en general.
# qlimit for igmp, arp, ether and ip6 queues only (netstat -Q) (default 256)
net.isr.defaultqlimit=2048
Otros parámetros:
# Enables a faster but possibly buggy implementation of soreceive
net.inet.tcp.soreceive_stream="1" # (default 0)
- NOTE: disable net.inet.tcp.soreceive_stream when using
- # rndc to update BIND DNS records otherwise the following error will trigger,
- # "rndc: recv failed: host unreachable".
# increase the network interface queue link - the default (50) is way
# too low. txd should be half that
. If # hw.igb.txd="1024" then set the net.link.ifqmaxlen="2048".
hw.igb.txd="1024"
net.link.ifqmaxlen="2048" # (default 50)
- enable /dev/crypto for IPSEC of custom seeding using the AES-NI Intel
# enable hardware accelerated AES (can speed up TLS)
aesni_load="YES"
HardenedBSD and DoS mitigation
hw.kbd.keymap_restrict_change=4 # disallow keymap changes for non-privileged users (default 0)
kern.ipc.shm_use_phys=1 # lock shared memory into RAM and prevent it from being paged out to swap (default 0, disabled)
kern.msgbuf_show_timestamp=1 # display timestamp in msgbuf (default 0)
kern.randompid=1 # calculate PIDs by the modulus of an integer, set to one(1) to auto random (default 0)
net.bpf.optimize_writers=1 # bpf is write-only unless program explicitly specifies the read filter (default 0)
net.inet.icmp.drop_redirect=1 # no redirected ICMP packets (default 0)
net.inet.ip.check_interface=1 # verify packet arrives on correct interface (default 0)
net.inet.ip.portrange.first=32768 # use ports 32768 to portrange.last for outgoing connections (default 10000)
net.inet.ip.portrange.randomcps=9999 # use random port allocation if less than this many ports per second are allocated (default 10)
net.inet.ip.portrange.randomtime=1 # seconds to use sequental port allocation before switching back to random (default 45 secs)
net.inet.ip.random_id=1 # assign a random IP id to each packet leaving the system (default 0)
net.inet.ip.redirect=0 # do not send IP redirects (default 1)
net.inet6.ip6.redirect=0 # do not send IPv6 redirects (default 1)
net.inet.sctp.blackhole=2 # drop stcp packets destined for closed ports (default 0)
net.inet.tcp.blackhole=2 # drop tcp packets destined for closed ports (default 0)
net.inet.tcp.drop_synfin=1 # SYN/FIN packets get dropped on initial connection (default 0)
net.inet.tcp.fast_finwait2_recycle=1 # recycle FIN/WAIT states quickly, helps against DoS, but may cause false RST (default 0)
net.inet.tcp.fastopen.client_enable=0 # disable TCP Fast Open client side, enforce three way TCP handshake (default 1, enabled)
net.inet.tcp.fastopen.server_enable=0 # disable TCP Fast Open server side, enforce three way TCP handshake (default 0)
net.inet.tcp.finwait2_timeout=1000 # TCP FIN_WAIT_2 timeout waiting for client FIN packet before state close (default 60000, 60 sec)
net.inet.tcp.icmp_may_rst=0 # icmp may not send RST to avoid spoofed icmp/udp floods (default 1)
net.inet.tcp.keepcnt=2 # amount of tcp keep alive probe failures before socket is forced closed (default 8)
net.inet.tcp.keepidle=62000 # time before starting tcp keep alive probes on an idle, TCP connection (default 7200000, 7200 secs)
net.inet.tcp.keepinit=5000 # tcp keep alive client reply timeout (default 75000, 75 secs)
net.inet.tcp.msl=2500 # Maximum Segment Lifetime, time the connection spends in TIME_WAIT state (default 30000, 2*MSL = 60 sec)
net.inet.tcp.path_mtu_discovery=0 # disable for mtu=1500 as most paths drop ICMP type 3 packets, but keep enabled for mtu=9000 (default 1)
net.inet.udp.blackhole=1 # drop udp packets destined for closed sockets (default 0)
net.inet.udp.recvspace=1048576 # UDP receive space, HTTP/3 webserver, "netstat -sn -p udp" and increase if full socket buffers (default 42080)
security.bsd.hardlink_check_gid=1 # unprivileged processes may not create hard links to files owned by other groups, DISABLE for mailman (default 0)
security.bsd.hardlink_check_uid=1 # unprivileged processes may not create hard links to files owned by other users, DISABLE for mailman (default 0)
security.bsd.see_other_gids=0 # groups only see their own processes. root can see all (default 1)
security.bsd.see_other_uids=0 # users only see their own processes. root can see all (default 1)
security.bsd.stack_guard_page=1 # insert a stack guard page ahead of growable segments, stack smashing protection (SSP) (default 0)
security.bsd.unprivileged_proc_debug=0 # unprivileged processes may not use process debugging (default 1)
security.bsd.unprivileged_read_msgbuf=0 # unprivileged processes may not read the kernel message buffer (default 1)
Flow Control
hw.ix.flow_control=0#Interface igc0 Flow Control (Increases CPU usage?)dev.igc.0.fc =0 # default 3dev.igc.1.fc =0dev.igc.2.fc =0dev.igc30.fc =0
0:No Flow Control1:Receive Pause2:Transmit Pause3:Full Flow Control, Default
Chelsio: Need to add hw.cxgbe.pause_settings="0" into /boot/loader.conf
Mellanox: Need to add dev.mce.X.rx_pauseframe_control=0 into /boot/loader.con or adding -mediaopt rxpause,txpause to the ifconfig_XX line of /etc/rc.conf
Intel: Need to add dev.[ix|igb|em].X.fc=0 into /etc/sysctl.conf
Energy Efficient Ethernet (EEE)
#Disable or enable Energy Efficient Ethernet Default 1 (disabled)hw.em.eee_setting=1
dev.igb.0.eee_disabled=1dev.igb.1.eee_disabled=1dev.igb.2.eee_disabled=1dev.igb.3.eee_disabled=1
Enable TCP Offload Engine
Enable Hardware Checksum Offloading
Mbuf Exhaustion
Un problema común al que se enfrentan los usuarios de hardware básico es el agotamiento del mbuf. Para simplificar, los «mbufs» son búferes de memoria de red; porciones de RAM reservadas para ser utilizadas por la red para mover datos.
El recuento de mbufs activos se muestra en el panel de control y se controla mediante un gráfico en Estado > Monitorización.
Ver también: Para obtener más información sobre los mbufs y la supervisión de su uso, consulte Clústeres de mbufs.
Si el cortafuegos se queda sin mbufs, puede producirse un pánico en el núcleo y un reinicio bajo ciertas cargas de red que agoten todos los búferes de memoria de red disponibles. En ciertos casos, esta condición también puede provocar que las interfaces esperadas no sean inicializadas y puestas a disposición por el sistema operativo. Esto es más común con NICs que utilizan múltiples colas o que están optimizados para el rendimiento sobre el uso de recursos.
Además, el uso de mbufs aumenta cuando el cortafuegos utiliza determinadas funciones, como los limitadores.
Para aumentar la cantidad de mbufs disponibles, añada lo siguiente como un Loader Tunable:
kern.ipc.nmbclusters=1000000
En sistemas de 64 bits con varios GB de RAM, 1 millón (1000000) de clusters mbuf es un punto de partida seguro. En caso de que los clusters mbuf se asignen por completo, esto consumiría alrededor de 2,3 GB de memoria física:
1000000 memory buffer clusters available × (2048 KB per cluster + 256 bytes per
memory buffer)
La cantidad de clusters disponibles puede reducirse para sistemas con poca cantidad de RAM física, o incrementarse aún más según sea necesario, siempre y cuando el valor no exceda la memoria disponible.
Fuentes:
https://binaryimpulse.com/2022/11/opnsense-performance-tuning-for-multi-gigabit-internet/
https://www.bentasker.co.uk/posts/blog/general/opnsense-pfsense-fttp-and-1gbps-pppoe.html
https://teklager.se/en/knowledge-base/opnsense-performance-optimization/
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.