openGauss/MogDB 配置 IPv6

openGauss/MogDB 支持多种网络接口,假如我们想在支持 IPv6 的网络上部署使用,只需简单操作即可,本文将介绍在 Centos 上如何配置使用。

关于 IPv6

IPv6(Internet Protocol Version 6),是 Internet Engineering Task Force (IETF)设计用于替代 IPv4 的下一代 IP 协议,使用 IPv6 能解决网络地址资源数量的问题。

我们使用 ipconfig /all 命令查看 windows 网络接口,会看到 IPv6 地址。

以太网适配器 以太网 7:

本地链接 IPv6 地址. . . . . . . . : fe80::828a:5e20:53cb:7719%6(首选)

IPv4 地址 . . . . . . . . . . . . : ...(首选)

Centos 下使用 ip addr 命令查看 linux 网络接口,也会看到 IPv6 地址。

ip addr

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 .../8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:b5:54:32 brd ff:ff:ff:ff:ff:ff

inet .../24 brd ... scope global enp0s3

valid_lft forever preferred_lft forever

inet6 fe80::a00:27ff:feb5:5432/64 scope link

valid_lft forever preferred_lft forever

IPv6 分类

1.本地关联 IPv6

本地关联的 IPv6,是以 fe80 开头,与网卡的物理地址(MAC 地址)有关,不需要通过 DHCP 自动分配或者手工设置。

2.全局 IPv6

如果需要跨网络或者跨路由器进行通信,则需要使用全局的 IPv6。

创建全局 IPv6

创建全局 IPv6 有多种的方式,例如 DHCPv6、Stateless address autoconfiguration (SLAAC) 以及手工配置。

手工配置可以使用 ip 命令来配置:

ip -6 addr add 2022:1:0:0::db1/64 dev enp0s3

或者使用 ifconfig 命令来配置:

ifconfig enp0s3 inet6 add 2022:1:0:0::db1/64

通过上面任意一种方式配置后,可以看到 enp0s3 网络接口将增加一个 inet6,并且是 global 属性的。

ip addr

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 .../8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:b5:54:32 brd ff:ff:ff:ff:ff:ff

inet .../24 brd ... scope global enp0s3

valid_lft forever preferred_lft forever

inet6 2022:1::db1/64 scope global

valid_lft forever preferred_lft forever

inet6 fe80::a00:27ff:feb5:5432/64 scope link

valid_lft forever preferred_lft forever

注意:上面 IPv6 字符串配置中有 db1,这符合 HEX 字符规则,非 HEX 字符则不允许设置,比如我们把 db 换成 dx,则会提示下面的错误信息。

ifconfig enp0s3 inet6 add 2022:1:0:0::dx1/64

2022:1:0:0::dx1: Resolver Error 0 (no error)

IPv6 连通性测试

在本地使用 ping6 进行连通性测试,先使用全局 IPv6 进行测试

ping6 2022:1::db1 -c3

PING 2022:1::db1(2022:1::db1) 56 data bytes

64 bytes from 2022:1::db1: icmp_seq=1 ttl=64 time=0.027 ms

64 bytes from 2022:1::db1: icmp_seq=2 ttl=64 time=0.047 ms

64 bytes from 2022:1::db1: icmp_seq=3 ttl=64 time=0.028 ms

--- 2022:1::db1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 0.027/0.034/0.047/0.009 ms

再使用本地关联 IPv6 进行测试,此时需要带上网络接口名称

ping6 fe80::a00:27ff:feb5:5432%enp0s3 -c3

PING fe80::a00:27ff:feb5:5432%enp0s3(fe80::a00:27ff:feb5:5432%enp0s3) 56 data bytes

64 bytes from fe80::a00:27ff:feb5:5432%enp0s3: icmp_seq=1 ttl=64 time=0.040 ms

64 bytes from fe80::a00:27ff:feb5:5432%enp0s3: icmp_seq=2 ttl=64 time=0.041 ms

64 bytes from fe80::a00:27ff:feb5:5432%enp0s3: icmp_seq=3 ttl=64 time=0.022 ms

--- fe80::a00:27ff:feb5:5432%enp0s3 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 0.022/0.034/0.041/0.010 ms

openGauss/MogDB 配置 IPv6

编辑 postgresql.conf 文件,修改监听参数

listen_addresses = '*'

修改完后重启服务,数据库将监听本机所有的网络接口。

编辑 pg_hba.conf 文件,添加数据库客户端连接的 IPv6 认证条目

host all all fe80::a00:27ff:feb5:5432/128 md5

host all all 2022:1::db1/128 md5

使用 gsql 客户端进行测试

1.使用本地关联 IPv6 进行测试,此时需要带上网络接口名称

$ gsql -h fe80::a00:27ff:feb5:5432%enp0s3 -Umoguser postgres -r -p6432

postgres=> \conninfo

You are connected to database "postgres" as user "moguser" on host "fe80::a00:27ff:feb5:5432%enp0s3" at port "6432".

postgres=> SELECT datname,usename, client_addr FROM pg_stat_activity where usename='moguser';

datname | usename | client_addr

----------+---------+--------------------------

postgres | moguser | fe80::a00:27ff:feb5:5432

(1 row)

2.使用全局 IPv6 进行测试

$ gsql -h 2022:1::db1 -Umoguser postgres -r -p6432

postgres=> \conninfo

You are connected to database "postgres" as user "moguser" on host "2022:1::db1" at port "6432".

postgres=> SELECT datname,usename, client_addr FROM pg_stat_activity where usename='moguser';

datname | usename | client_addr

----------+---------+-------------

postgres | moguser | 2022:1::db1

(1 row)

使用 java jdbc 进行测试

通过 java 程序 test.jar 包进行测试,test.jar 需要三个入参,分别是 jdbc url、jdbc username、jdbc password。

1.使用普通的 IPv4 进行测试

$ java -jar test.jar jdbc:postgresql://...:6432/postgres moguser Admin@1234

执行结果如下,可以看到数据库连接测试成功

Input jdbc url:jdbc:postgresql://...:6432/postgres

Input jdbc username:moguser

Connection test successfully.

2.使用本地关联 IPv6 进行测试,进行测试

$ java -jar test.jar jdbc:postgresql://fe80::a00:27ff:feb5:5432:6432/postgres moguser Admin@1234

执行结果如下,可以看到数据库连接测试成功

Input jdbc url:jdbc:postgresql://fe80::a00:27ff:feb5:5432:6432/postgres

Input jdbc username:moguser

Connection test successfully

3.使用全局 IPv6 进行测试

$ java -jar test.jar jdbc:postgresql://2022:1::db1:6432/postgres moguser Admin@1234

执行结果如下,可以看到数据库连接测试成功

Input jdbc url:jdbc:postgresql://2022:1::db1:6432/postgres

Input jdbc username:moguser

Connection test successfully.

总结

1.openGauss/MogDB 配置 IPv6 只需简单修改 listen_addresses = ‘*’ 即可。

2.使用 gsql 客户端进行连接时,本地关联 IPv6 还需要使用网络接口名进行访问,全局 IPv6 不需要。

3.使用 jdbc 客户端进行连接时,无论是本地关联 IPv6 还是全局 IPv6,直接使用地址即可。

openGauss/MogDB配置IPv6的更多相关文章

  1. nmcli配置ipv6

    nmcli配置ipv6 作者:Eric 微信:loveoracle11g [root@racooler ~]# nmcli connection show eno16777736 | grep ipv ...

  2. 在 Linux 中自动配置 IPv6 地址

    在 Linux 中自动配置 IPv6 地址 在本文中,我们将学习如何为 ULA 自动配置 IP 地址. 何时使用唯一本地地址 唯一本地地址unique local addresses(ULA)使用 f ...

  3. 在 Windows 中为高级用户配置 IPv6 的指南

    在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...

  4. 第11章 拾遗4:IPv6(3)_配置IPv6路由

    5. 配置IPv6路由 5.1 配置IPv6静态路由 (1)在路由器上配置静态路由(以R1路由器为例) //静态路由 R1#config t R1(config)#ipv6 unicast-routi ...

  5. 第11章 拾遗4:IPv6(2)_给计算机配置IPv6地址

    4. 给计算机配置IPv6地址 4.1 无状态自动配置IPv6地址 (1)网络拓扑 ①无状态地址自动配置是指不需要DHCP服务器进行管理,由客户端向路由器发送前缀请求(RS)询问其所在网段.路由器收到 ...

  6. IPv6系列-彻底弄明白有状态与无状态配置IPv6地址

    深入研究自动分配IPv6地址的Stateless(无状态)与Stateful(有状态)方式 小慢哥的原创文章,欢迎转载 目录 ▪ 一. Link-Local Address的生成方式 ▪ 二. Glo ...

  7. 工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙

    一.启用SELinux保护 目标: 本例要求为虚拟机 server0.desktop0 配置SELinux: 确保 SELinux 处于强制启用模式 在每次重新开机后,此设置必须仍然有效 方案: SE ...

  8. 配置IPv6公网地址DDNS并开放外网访问端口

    目前使用三大运营商宽带服务都会下发公网IPv6地址,这样我们想要在外网访问家里的路由.NAS等设备就可以直接通过IPv6地址来访问了.但是每次重新拨号后IPv6地址都会改变,而且IPv6的地址很长,这 ...

  9. 配置IPv6地址跳变——网络测试仪实操

    第一部分:什么是IPv6地址跳变? IPv6地址跳变是指IPv6地址进行一系列有规则的变化,Renix支持对IPv6地址进行递增.递减.列表和随机变化. 如当用户想要仿真大量的源IPv6地址变化的数据 ...

  10. Linux之如何配置IPV6网络

    配置IPV6地址小笔记 #例题: 1)为server添加一个IPv6地址fd00:ba5e:ba11:10::10/64: 2)为client添加一个IPv6地址fd00:ba5e:ba11:10:: ...

随机推荐

  1. 【Azure 应用服务】调用Azure Function经常提示超时的分析

    问题描述 Azure Data Factory 通过 Pipeline 调用Azure Function Http Trigger时遇到返回错误" 500 - The request tim ...

  2. Choreographer原理

    Android 系统在 VSYNC 信号的指引下,有条不紊地进行者每一帧的渲染.合成操作,使我们可以享受稳定帧率的画面.引入 VSYNC 之前的 Android 版本,渲染一帧相关的 Message ...

  3. VC-MFC 登陆界面 + 数据库账号+密码

    1 // DlgUser.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "Login.h" 6 #inc ...

  4. 从0开始搭建开发环境 -实现servlet原生开发

    开发环境:  JDK1.8 + Servlet + Mysql 搭建项目 项目搭建参考博客 https://www.cnblogs.com/oyww-2027/p/15347137.html File ...

  5. vim技巧--提取文本与文本替换

    前几天遇到一个使用情景,需要从一个包含各个读取代码文件路径及名字的文件中把文件路径提取出来,做一个filelist,这里用到了文本的提取和替换,这里做个小总结记录一下. 从网上找了一个作者写的代码用来 ...

  6. Vue3.x知识图谱

    Vue3.x知识图谱 https://gitee.com/jishupang/vue3-knowledge-map/tree/master 回头有时间再贴图吧

  7. The History of the English language 英语语音的起源 - 英语的历史 - 古英语 印欧语 希腊语 拉丁语

    印欧语 希腊语 拉丁语 日耳曼语 都是什么年代的语言 https://time.graphics/line/776755 印欧语是指印欧语系,它最初被认为在公元前2500年左右分散流传于欧洲.亚洲和印 ...

  8. day03-1-查看账单&结账功能

    满汉楼03 4.功能实现05 4.8查看账单功能 按照之间搭建起来的框架,在BillService编写方法 4.8.1代码实现 1.修改Bill类 重写Bill类中的toString方法 @Overr ...

  9. MyEclipse设置自动提醒(补全)功能

    1. 打开MyEclipse,然后"window"→"Preferences" 2. 选择"java",展开,"Editor&qu ...

  10. 大端(big endian) 小端(little endian) --- 在多字节存储 和 多字节通信中的含义(我还是太年轻了)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...