最近开始听很多敌人说 IPv6 曾经逐步遍及了,通过这十几二十年的倒退。于是我也蠢蠢欲动,尝试在本人的老笔记本上运行一个 IPv6 服务。
首先介绍一下我家的网络状况:联通宽带的光猫,因为信号太差,连了一个 TP-Link 的路由器。宽带是提供了 IPv6 的,在路由器配置里抉择开启 IPv6。笔记本是 Macbook-pro,手持一台 iphone,两者连贯同一个 WiFi。
我在 iphone 上装置了一个叫 Net Analyzer 的利用,收费的,能够看 IP 地址信息,发动 ping 申请,挺好用的。从这个利用里我看到手机从 WiFi 获取到的 IP 地址(以下皆指 v6 地址)是 2048 结尾。
在笔记本上,通过 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 SimpleHTTPRequestHandler
class 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_INET6
def 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
标签也就随之隐没了。