连接到多个上游服务器时重复使用源端口吗?

连接到多个上游服务器时重复使用源端口吗?

我正在尝试设置反向代理,用于为多个 STUN 客户端提供服务,并将通信代理到多个上游服务器。我已增加服务的文件描述符限制,因此这应该不是问题。我的 nginx.conf 大致如下所示:

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
include /etc/nginx/sites-enabled/*.conf;

events {
    worker_connections 1000000;
    multi_accept on;
}

stream {

    upstream stun_backend {
        server 192.168.1.10:3478 max_fails=0;
        server 192.168.1.11:3478 max_fails=0;
    }
    server {
    proxy_timeout 30m;
    listen 3478 udp reuseport;
    proxy_pass stun_backend;

  }
}

一切正常,直到我与上游服务器建立大约 28232 个“udp ESTAB”连接(我的临时端口范围是这个大小)。这时我开始收到“资源暂时不可用”错误,并且客户端无法联系 stun 服务器。

我印象中,NGINX 自 1.11.2 版以来使用的“IP_BIND_ADDRESS_NO_PORT”选项可以通过重用现有的源端口来帮助解决问题,只要目的地不同,那么 4 元组就是唯一的,并且实际上我应该能够提供服务,28232 * number_of_upstream_hosts但事实似乎并非如此。

我是否误解了此选项的用途?我尝试做的事情是否可以实现?如果可以,如何实现?

答案1

相关内容