IPv4网络
在现实生活中,我们需要给一个人,比如张三,传递信息或者物品的时候我们需要知道张三的地址或者手机号或者其它能找到张三的标识。
同理,在网络中我们要给张三通讯的时候我们需要知道张三的网络标识;
在现代网络通讯中这个标识就是IP
上图是一个简单的网络示意图
用户A需要给webserver通讯的时候只需要知道对方的IP就行了
但是某天用户A觉得每次都要记住IP那一串数字太单调了,而且用户A有好多个这样的通讯记录,每次都得查找通讯记录对应的IP才能通讯,人生不应该这样无趣。
于是用户A为通讯录里面的每一个联系的对象起了一个名字,但是这时候的名字也只有用户A自己知道,大家都不知道,怎么办?
于是用户A通知了通讯录里面的联系人,并跟这些联系人约定了各自的通讯名称,为了保证安全、准确、不被篡改、便于查询,用户A跟大家约定选择一个地方存放这份通讯目录,于是DNS服务器诞生了。
- 通讯地址:IP
- 各个联系人通讯名称:域名
- 通讯名称目录:IP-域名
- 通讯名称目录存放地:DNS 服务器
通讯场景:
当用户A访问 www.loveyou.com 的时候,用户A的电脑就会先查询 www.loveyou.com 对应的通讯地址(IP),然后根据通讯地址请求所需要的资源。
IPv6
随着蜘蛛网?一天天的扩张,某天用户A发现通讯地址(IPv4)不够用了,就跟大家商量着弄一个新的通讯地址,于是IPv6就来了。
那么IPv6怎么通讯?
小样,不就是改了给马甲,升级了一下吗?我还能不认识?
网络通讯的基本要素是不变的,不要看到IPv6就觉得很高大上,好像到了另一个世界,我什么都不知道了,剥了IPv6那层皮,还是一个样!
- 通讯地址:IP
- 各个联系人通讯名称:域名
- 通讯名称目录:IP-域名
- 通讯名称目录存放地:DNS 服务器
那么IPv6的配置需求理清了吗?
申请IPv6地址
1、IPv6地址,点击register注册一个账户
2、注册完成后需要校验,到填写的邮箱里面点击对应邮件的链接就行
3、登录后点击左边的Create Regular Tunnel
,在右边填写服务器的IP,点击底部的create Tunnel
就行了
4、创建完成后的页面
5、点击Example Configurations
,选择与服务器对应的操作系统就会自动生成相应的配置了,把自动生成的内容黏贴到/etc/network/interfaces
文件底部就行,这一步就是配置服务器的IPv6地址
6、服务器的IPv6服务默认是关闭的需要手动开启,修改/etc/sysctl.conf
里面的
net.IPv6.conf.all.disable_IPv6 = 1
net.IPv6.conf.default.disable_IPv6 = 1
net.IPv6.conf.lo.disable_IPv6 = 1
改为
net.IPv6.conf.all.disable_IPv6 = 0
net.IPv6.conf.default.disable_IPv6 = 0
net.IPv6.conf.lo.disable_IPv6 = 0
7、配置nginx、express或者其它的web服务支持IPv6就行了
这里以nginx为例:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 你的域名;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$server_name$request_uri;
}
server {
#使用HTTP/2,需要Nginx1.9.7以上版本
listen 443 ssl http2;
listen [::]:443 ssl http2;
}
8、重启服务器(应该不需要重启,但是我懒,记不住怎么热加载了)
9、给域名添加IPv6解析
- A (Address) 记录:配置域名指向一个IPv4地址(如8.8.8.1)增加A记录即可
- CNAME记录:别名;如果将域名指向一个域名,实现与被指向域名相同的访问效果,则需要增加CNAME记录
- MX记录:建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录
- NS记录:域名解析服务器记录,即把子域名指定某个域名服务器来解析,就需要设置NS记录
- TXT记录:用来做SPF记录,反垃圾邮件使用
- SRV记录:用来记录某台服务器提供的服务情况
- AAAA记录:域名指向一个IPv6地址记录
- URL记录:希望访问 A 域名时访问到 B 域名的内容,这时就可以通过URL转发来实现,可以将A域名转发到B域名或B域名某一个目录下;如 XXX.example.com 转发到 http://www.XXX.com/details。
根据DNS提供的解析规则,我们需要给域名添加一个AAAA的解析,这个解析一般10分钟左右生效
域名配置IPv6地址解析的
$ dig www.xxx.cn AAAA +noall +answer
; <<>> DiG 9.8.3-P1 <<>> www.xxx.cn AAAA +noall +answer
;; global options: +cmd
www.xxx.cn. 600 IN AAAA 20XX:4XX:XX:XXX::2
域名没有配置IPv6地址解析的
$ dig www.xxxa.cn AAAA +noall +answer
; <<>> DiG 9.8.3-P1 <<>> www.xxxa.cn AAAA +noall +answer
;; global options: +cmd
10、我们来测试一下webserver是否支持IPv6
输入刚刚配置的支持IPv6的nginx web域名即可
可以看到nginx相应的web已经支持IPv6了,但是下面有个IPv6 DNS Server
有个提示
This domain has no IPv6 DNS server, this may prevent some IPv6-only users from reaching it.
大意是:解析该域名的DNS服务器是IPv4的DNS server
,不是IPv6的DNS server
,这会导致只支持IPv6的用户不能访问该域名,所有需要一个支持IPv6的DNS server
11、修改域名解析的DNS服务器
目前万网的域名默认的NDS服务器是IPv4的DNS server,如果要支持IPv6-only,则需要修改DNS服务器
IPv6 DNS server参考链接1,不保证真实性,需自行承担责任
IPv6 DNS server参考链接2,不保证真实性,需自行承担责任
12、iOS的小伙伴可以愉快的玩耍了
自从2016年5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPv6-Only的网络
iOS APP需要的配置
1、API的域名需要支持IPv6
2、后台需要支持IPv6
3、APP里面需要支持IPv6
4、DNS
服务器可以使用IPv4
的DNS
服务器(因为目前大多数网络还不支持全链路IPv6
,使用IPv6
的DNS
服务器有可能解析失败)
非云服务器的配置
1、公司有自己的硬件服务器和防火墙的,需要在防火墙上设置IPv6的nat地址映射,保证用户使用IPv6地址访问的时候能够进入内网。
具体配置方法请查询对应硬件的配置手册,最好是咨询硬件提供商,看看硬件是否支持IPv6的nat配置
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。