%3A%2090%20mensajes%20demasiado%20largos.png)
Intentando proxy del tráfico udp. nginx no arroja ningún error sobre la configuración. El cliente se conecta hasta la mitad (dice que podría llegar al servidor final), pero la conexión se bloquea y finalmente se cierra con un tiempo de espera.
Versión de nginx: 1.21.3 Sistema operativo: Ubuntu 18.04
nginx.conf:
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
worker_rlimit_nofile 30000;
events {
worker_connections 30000;
multi_accept on;
}
stream{
server {
listen *:4800-4899 udp;
proxy_pass 217.178.x.x:$server_port;
}
}
registro de errores:
2213#2213: *3 recv() failed (90: Message too long) while proxying and reading from upstream, udp client: 49.98.x.x, server: 66.42.x.x:4801, upstream: "217.178.x.x:4801", bytes from/to client:1464/0, bytes from/to upstream:0/1464
49.98.xx: IP del cliente 66.42.xx: IP del proxy 217.178.xx: IP del servidor final
ip una salida
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 56:00:03:95:cc:59 brd ff:ff:ff:ff:ff:ff
inet 66.42.x.x/23 brd 66.42.x.255 scope global dynamic enp1s0
valid_lft 57402sec preferred_lft 57402sec
inet6 fe80::5400:3ff:fe95:[xxx]/64 scope link
valid_lft forever preferred_lft forever
¿Alguna idea de qué pasa? ¿Alguien puede ver algún problema en la configuración?
Gracias
Respuesta1
Quizás el problema "90: Mensaje demasiado largo" pueda estar asociado con el error EMSGSIZE ( If the message is too long to pass atomically through the underlying protocol, the error EMSGSIZE is returned, and the message is not transmitted
), en cuyo caso puede intentar solucionarlo aumentando el tamaño del búfer de envío del socket. Los siguientes parámetros tienen valores estándar:
net.core.wmem_default = 212992
net.core.wmem_max = 212992
Los valores actuales en su servidor se pueden verificar con el comando:
sysctl -a | grep "net.core.wmem"
Para la prueba, utilizando el siguiente comando, puede establecer, por ejemplo, los siguientes valores:
sysctl -w net.core.wmem_default = 9999999
sysctl -w net.core.wmem_max = 9999999
echo "net.core.wmem_default = 9999999
net.core.wmem_max = 9999999 ">> /etc/sysctl.conf
A continuación, comprueba que se aplicaron correctamente (ahora debe ser 9999999):
sysctl -a | grep "net.core.wmem"
Y trate de reproducir el problema.