AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 747895
Accepted
StephenKing
StephenKing
Asked: 2016-01-10 10:32:09 +0800 CST2016-01-10 10:32:09 +0800 CST 2016-01-10 10:32:09 +0800 CST

绑定到 haproxy 中 IPv4 和 IPv6 的所有接口

  • 772

我想将haproxy配置为绑定到所有接口(即和)上的 atcp和套接字。tcp60.0.0.0:80:::80

我能够通过以下设置达到这个目标:

listen web
  bind :80 v4v6
  bind :::80 v6only

还有比这更短的方法吗?

虽然我希望它表现不同,但该v4v6关键字使haproxy 仅绑定到 v4 套接字。

haproxy
  • 4 4 个回答
  • 31252 Views

4 个回答

  • Voted
  1. Best Answer
    Michael - sqlbot
    2016-01-11T05:08:52+08:002016-01-11T05:08:52+08:00

    要在同一端口上侦听 IPv6 和 IPv4,请使用以下命令:

    bind :::80 v4v6
    

    诚然,这是一个直观的猜测,似乎是正确的......但不是仅仅发布一个“幸运”的猜测作为答案,即使它有效,似乎我应该证明它是合理的。

    v4v6 关键字使 haproxy 仅绑定到 v4 套接字。

    我的第一个直觉是,导致此套接字仅在 IPv4 上侦听的不是v4v6使用:80(或者更准确地说,根本不使用 IP 地址,只是使用端口号)。

    这似乎在以下文档中得到证实bind:

    address是可选的,可以是主机名、IPv4 地址、IPv6 地址或'*'. 它指定前端将侦听的地址。如果未设置,系统的所有 IPv4 地址都将被监听。同样将申请'*'或系统的特殊地址“ 0.0.0.0”。IPv6 等价物是 '::'。

    http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#4.2-bind(已添加重点)

    所以下面三种形式都是等价的,都被HAProxy解释为IPv4:

    bind :80
    bind *:80
    bind 0.0.0.0:80
    

    接下来,文档中有一句话v4v6可以单独阅读,以表明v4v6可能可用于扩展上述绑定语句之一以侦听 IPv6...

    v4v6

    它用于在使用默认地址时将套接字绑定到 IPv4 和 IPv6。

    ...嗯,但我怀疑这实际上意味着“v6 默认地址”(::)...

    在默认情况下仅绑定到 IPv6 的系统上有时需要这样做。

    ……现在,我更加怀疑了……

    它对非 IPv6 套接字没有影响,并被该v6only选项覆盖。

    http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.1

    因此,似乎v4v6只修改bind了指定 IPv6 默认侦听地址的指令,即::(第三个:是地址和端口之间的分隔符),而其他人则忽略。

    • 31
  2. foobar
    2017-09-28T20:37:07+08:002017-09-28T20:37:07+08:00

    接受的答案对我不起作用,至少在 OpenBSD 上使用 haproxy-1.6.11p0。此外,TL; DR。做就是了:

    bind 0.0.0.0:80
    bind :::80
    

    它会起作用:

    # netstat -an|grep "*.80"
    tcp          0      0  *.80                   *.*                    LISTEN
    tcp6         0      0  *.80                   *.*                    LISTEN
    
    • 8
  3. Private_Citizen
    2021-05-20T08:41:04+08:002021-05-20T08:41:04+08:00

    我知道我迟到了。我不允许发表评论,所以我不得不添加这个答案。

    如果您不喜欢三冒号 ::: 的方式,我只是想补充一下

    bind :::80
    

    您始终可以将 IPv6 地址括在括号中。

    bind [::]:80
    
    • 2
  4. cherouvim
    2022-05-31T02:03:47+08:002022-05-31T02:03:47+08:00

    我这样配置它:

        bind *:80,[::]:80 v6only
        bind *:443,[::]:443 v6only ssl crt ...
    
    • 0

相关问题

  • 具有动态路由的代理服务器

  • nginx 访问日志忽略某些请求

  • HAProxy 和“分片”

  • 带有 HAProxy 的远程 IP

  • SSL 网站的高可用性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve