IPv6|IPv6 初体验 -- over MacOS
最近开始听很多朋友说 IPv6 已经逐渐普及了,经过这十几二十年的发展。于是我也蠢蠢欲动,尝试在自己的老笔记本上运行一个 IPv6 服务。
首先介绍一下我家的网络情况:联通宽带的光猫,因为信号太差,连了一个 TP-Link 的路由器。宽带是提供了 IPv6 的,在路由器配置里选择开启 IPv6。笔记本是 Macbook-pro,手持一台 iphone,两者连接同一个 WiFi。
我在 iphone 上安装了一个叫 Net Analyzer 的应用,免费的,可以看 IP 地址信息,发起 ping 请求,挺好用的。从这个应用里我看到手机从 WiFi 获取到的 IP 地址(以下皆指v6地址)是 2048 开头。
文章图片
【IPv6|IPv6 初体验 -- over MacOS】在笔记本上,通过 ifconfig
命令可以查到我在 en0 下有一个同样以 2048 开头的 IP 地址:
inet6 2408:..:..:..:..:..:..:.. prefixlen 64 autoconf secured// 安全起见,省略掉具体地址
推测出这两个地址应该是同属与一个路由。
prefixlen 64
表示 IP 地址的前 64bits 是路由给的前缀,autoconf
表示这个地址是自动配置的, secured
表示这个地址是通过密码学手段生成的(可能是采用 CGA,但我暂时找不到更多信息)。接下来我决定用 python 在笔记本上建立一个简单的 HTTP 服务:
import socket
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandlerclass MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/ip':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('Your IP address is %s' % self.client_address[0])
return
else:
return SimpleHTTPRequestHandler.do_GET(self)class HTTPServerV6(HTTPServer):
address_family = socket.AF_INET6def main():
server = HTTPServerV6(('::', 8080), MyHandler)
server.serve_forever()if __name__ == '__main__':
main()
代码来自 https://gist.github.com/akoro... 。
将代码保存到一个文件,执行
python [文件名]
,即可在 8080 端口启动简易的Http服务器。接下来在手机上访问我们笔记本的 IP 地址,从浏览器访问时需要对格式做一些修改:
http://[2048:..:..:..:..:..:..:..]:8080
访问成功!
附录 尽管我从网上找到了一些资料,证明 Apple 实现了 CGA(cryptographically generated addresses) 地址的生成,但是我找不到如何获取对应的私钥,所以没办法做其它的事情。
All Apple operating systems support IPv6, implementing several mechanisms to protect the privacy of users and the stability of the networking stack. When Stateless Address Autoconfiguration (SLAAC) is used, the IPv6 addresses of all interfaces are generated in a way that helps prevent tracking devices across networks and at the same time allows for a good user experience by ensuring address stability when no network changes take place. The address generation algorithm is based on cryptographically generated addresses as of RFC 3972, enhanced by an interface-specific modifier to warrant that even different interfaces on the same network eventually have different addresses.我试着将 IP 地址配置从自动模式改为手动,可以正常使用。但 ifconfig 里的
secured
标签也就随之消失了。推荐阅读
- c语言|学习了循环碰到了编写计算n的阶乘的题目,由此引发了一系列问题,包括一些初学者常见的坑,以及如何简化代码
- c语言|c语言初学者对scanf函数难分辨理解的两个点(欢迎补充)
- [初遇那骑士]The|[初遇那骑士]The 13 如果你的王子不是他
- 数据库|实践练习一(OceanBase Docker 体验)
- 最佳实践|意出望外的一次相遇|利楚初探 OceanBase
- 早报!2月6日(年初十),星期一!
- 简年13:走,散步去
- 汽车出行|传统大厂的30万元级豪华纯电,体验奥迪Q4 e-tron
- 简奥斯汀|简奥斯汀 | 遇见你,如梦初醒
- 新的开始与伤心