阿里云IPv6公网IP配置

前言

之前说过我现在这个项目技术上其实并不复杂,复杂的是网络。因为我们系统和外部系统交互,而无论是外部系统还是内部系统都有各种安全限制,其中不乏通过防火墙、IP白名单等来进行限制的。当然这是常规操作,然而集团有个系统需要我们提供H5页面嵌入到他们的app上,坑爹的是他们要求你必须支持IPv6。

好啦!坑爹事情就开始了,测试环境不提供公网IP,集团要求我们提供公网IPv6地址。没办法了只能用厂商那边的测试环境了,因为他们提供公网IP,但是他们提供的测试环境不支持IPv6。我度娘了一下,我草IPv6要找运营商申请...

于是就想了一下是否自费申请一个阿里云ECS服务器IPv6公网IP,然后使用nginx代理出去,于是就开始造。

操作

前提

已经购买的ECS服务器

操作系统CentOS 7.6

操作参考

搜索了好一阵没有看到配置公网IPv6的文档,只找到配置ECS实例的IPv6地址 文档。幸运的在步骤三中是开通IPv6公网带宽 的内容,地址如下:help.aliyun.com/zh/ecs/user...

实际操作

1、为已有实例分配IPv6地址时

检查自己的实例支持IPv6后,VPC开通IPv6和交换机开通IPv6。

进入控制台-专有网络,我们选择自己ECS所在的地域后发现专有网络已经存在,这一步可以跳过。

直接进入下一步,为已有VPC开通IPv6网段 ,直接开通IPv6

点击开通IPv6

确定后专有网络IPv6网段字段信息如下:

2、为已有实例分配IPv6地址

登录ECS管理控制台,进入实例,选择地域后,在需要开通IPv6的实例后打开网络和安全组

找到其下的管理辅助私网IP

进入找到IPv6地址,点击分配新IP

默认自动分配,直接确定

分配完了怎么查看你的IPv6地址?ECS管理控制台,选择实例与镜像 > 实例 ,找到目标实例,单击实例ID进入实例详情 页面,在绑定资源区域。

3、开通IPv6公网带宽

专有网络管理控制台,公网访问 > IPv6网关,点击id

进入IPv6网关的详情页面,点击开通公网带宽

按自己需要进行购买带宽流量

开通后这里显示就变了

4、配置IPv6地址

远程登录你自己的ecs服务,使用阿里云提供工具命令的自动配置IPv6地址(非CentOS参考文档自行获取相应的地址)

bash 复制代码
wget https://ecs-image-utils.oss-cn-hangzhou.aliyuncs.com/ipv6/rhel/ecs-utils-ipv6
#使用管理员权限执行以下命令,运行ecs-util-ipv6工具。
chmod +x ./ecs-utils-ipv6
./ecs-utils-ipv6

执行后结果如下

检查是否安装了多网卡配置工具,如果没安装就不用管了,如果安装了参照文档操作即可

bash 复制代码
#以下命令二选一
ls /sbin/eni-ifscan
systemctl cat eni.service

结果我的没有安装

5、添加IPv6安全组规则

ECS管理控制台,选择网络与安全 > 安全组 ,在操作 列中,单击管理规则 ,选择入方向出方向

配置安全组

添加80端口和8080端口的出入安全组,一般配入就行

6、测试IPv6的连通性

使用ipv6访问外部测试
复制代码
ping -6 aliyun.com
使用ipv6从外部访问
从外部使用telent访问ipv6和端口

按照结果连通性是没问题了,接下来测试一下安全组的端口80和8080,找一台能访问公网支持IPV6的ecs。

端口不通,各种方法试了一天,突然找到一条信息"端口需要监听"。

然后发现是因为对应的端口没有服务监听,然后马上安装nginx将80和8080端口配置上。

ini 复制代码
server {
      listen       8080;
      #这个是配置ipv6端口监听的配置,80也一样
      listen [::]:8080;
      server_name localhost;
​
      location / {
          root   html;
          index index.html index.htm;
      }
  }

安装后再使用telnet -6结果就通了

ipv6网站访问

上述我们配置好了IPv6已经相应的端口,但是当我们使用本地想要访问IPV6的ip地址时需要注意格式为:

ruby 复制代码
http(s)://[ipv6]:port/path1/path2

当然,这还不是最主要的,你可能使用了上述的格式也访问不了。

因为能否使用ipv6的地址访问网站还需要你所在的网络和系统都支持ipv6,检测方式如下:

objectivec 复制代码
要判断本地电脑是否支持IPv6的网站访问,可以采取以下几种方法:
1、使用第三方测试网站:可以访问一些专门用于测试IPv6支持的网站,如http://test-ipv6.com/,如果能够正常访问并显示测试结果,则说明本地电脑支持IPv6。
2、使用命令行工具:在Windows系统中,可以打开命令提示符(CMD),然后输入"ping6 ::1",如果能够正常响应,则说明本地电脑支持IPv6。在Linux或Mac OS系统中,可以使用"ping6"命令进行类似的测试。
3、检查网络适配器设置:在Windows系统中,可以打开网络和共享中心,查看本地网络连接的状态,如果IPv6协议已经启用,则说明本地电脑支持IPv6。
4、使用浏览器测试:可以在浏览器地址栏输入"http://ipv6test.google.com/",如果能够正常访问并显示测试结果,则说明本地电脑支持IPv6。
***需要注意的是,即使本地电脑支持IPv6,也需要相应的网络设备和ISP提供IPv6服务才能正常使用。因此,在进行测试时需要确保网络连接正常,并且ISP已经提供了IPv6服务。***

访问test-ipv6.com/结论是网络都不支持

打开我的mac电脑系统偏好设置查看

markdown 复制代码
1、打开"系统偏好设置"并选择"网络"。
2、在左侧栏中选择你的网络接口(例如以太网或Wi-Fi),然后点击"高级"按钮。
3、在弹出的窗口中选择"TCP/IP"选项卡。
4、查找"IPv6地址"或"IPv6 配置"部分,这里会显示你的Mac的IPv6地址。
***也可以在终端使用命令ipconfig getifaddr en0***

呵呵,没戏!

收获

其实ipv6这个东西早好几年就听说过了,最近在这个公司做项目也遇到过好几次分配资源的给我们弄了个IPv6的服务器。然后被我果断拒绝了,引入从来没有接触过的东西绝对坑爹,毕竟我是菜鸡。

没想到这次因为一个bug,各种环境不相通导致自己不得不尝试接触ipv6,果然又让自己踩了个坑。

这样也好至少自己对ipv6这东西有点底了,反正后面有人想再让我ipv4转成ipv6,我肯定会弄死他。

这东西还没完全普及,在没有强大团队和领导支持下,不要轻易在生产上尝试很危险。

总结

1、阿里云的IPv6配置和申请,照着文档来就行,仔细点就不会错;

2、阿里云的服务器看型号,大多都是支持IPv6的,配置后使用另外一台测试可以测试连通性;

3、如果要telnet端口需要启动对应服务监听,监听IPv6的端口这里用nginx做了个简单的演示,确实可行;

4、就算部署了IPv6的网站,想要访问需要客户端的系统和网络以及其运营商支持;

5、如非必要,生产上"不要轻易尝试放纵的滋味,你可知这样会让你心碎";

虽然因为各种原因,公司提供给人集团不合规,但也算是一种学习。

本文只是粗浅的记录了一下自己遇到的 ipv6 的情况,如果你觉得本文描述不对或者你对 ipv6 有更好的理解,也希望能指正或者指教一下,感谢!

相关推荐
czhc11400756632 分钟前
Linux 77 FTP
linux·运维·服务器
張萠飛38 分钟前
Linux中程序的limits中的Max open files的配置由哪些参数决定
linux·运维·服务器
诗句藏于尽头8 小时前
完成ssl不安全警告
网络协议·安全·ssl
一心0928 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上8 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊9 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
代码老y9 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程10 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
会飞的鱼先生11 小时前
Node.js-http模块
网络协议·http·node.js
你想考研啊12 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins