HAProxy:如果我绑定到端口 32768-65535,计算机将无法访问其他服务器

HAProxy:如果我绑定到端口 32768-65535,计算机将无法访问其他服务器

我需要像这样配置 HAProxy 前端:

frontend web-server
    option forwardfor       except 127.0.0.0/8

    bind :8080
    bind :32768-65535

    default_backend service

但是,该配置不允许我连接到其他服务器(内部或外部)。

$ wget www.google.com
--2016-12-22 23:21:13--  http://www.google.com/
Resolving www.google.com (www.google.com)... 172.217.6.196, 2607:f8b0:4006:804::2004
Connecting to www.google.com (www.google.com)|172.217.6.196|:80... failed: Cannot assign requested address.
Connecting to www.google.com (www.google.com)|2607:f8b0:4006:804::2004|:80... failed: Network is unreachable.

如果我注释该行bind :32768_65535并重新启动 HAProxy,我就可以再次连接到其他服务器。

我认为我正在将 HAProxy 绑定到启动连接所需的端口,这就是该配置导致此问题的原因。

我怎样才能配置 HAProxy 来监听这些端口,而不会出现连接问题?

编辑:

  • HAProxy 1.6
  • Ubuntu 16.04(全新安装)

答案1

因此,haproxy 绑定了从 32768 到 65535 的每个本地端口(含)。这是一个问题,因为默认情况下,传出连接会绑定此范围内的本地端口:

# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    60999

要解决此问题,您需要选择一个系统上不会使用的本地端口范围,然后重新配置此 sysctl 以使用它。例如:

sudo sysctl -w net.ipv4.ip_local_port_range="24576 32767"

(并使其在 中持久化/etc/sysctl.conf。)

相关内容