无法使用docker连接到ipv6中的postgres

问题描述

我的情况如下:我在ubuntu 20.04服务器上安装了一个postgres 12,并在另一个启用了ipv6的主机上运行了一个docker容器。

我无法使用ipv6从docker容器内部访问Postgres服务器。

这些命令可在容器内使用:

$ ping POSTGRES_SERVER_IPv4
$ ping POSTGRES_SERVER_IPv6
$ telnet POSTGRES_SERVER_IPv4 5432

但这在容器内部不起作用(但在docker主机上有效):

$ telnet POSTGRES_SERVER_IPv6 5432

我已经设置了listen_address ='*'并在postgres pg_hba.conf中“托管所有md5”。

编辑:

我意识到我的网络适配器正在使用两个IPv6,一个是我在netplan中定义的静态适配器,另一个是在我的网络范围内的适配器,但是我没有分配它。

解决方法

在您的netplan配置中,尝试添加:

accept-ra:否

示例:

network:
  version: 2
  ethernets:
    ens192:
      accept-ra: no
      addresses: ...