Skip to content

XuHg-zjcn/IPv6-Net

Repository files navigation

IPv6 Net

一个分布式IPv6地址同步网络

背景介绍

目前我的宽带和手机流量能获取动态公网IPv6地址,每次IPv6地址变化后都需要手动修改,很麻烦。
我不想使用第三方的DDNS解析服务,自己实现一个IPv6地址同步工具。

协议介绍

每个设备储存一份数据库,含有其他设备的名称,局域网IPv4,公网IPv6地址等信息。
当设备间能通信时(都处于局域网中,知道对方IPv6等)时,实时同步数据库,并写入hosts文件中。
具体协议请看docs/spec.md

安装方法

  1. 安装依赖库sudo pip3 install prettytable ed25519(如果需要写入hosts,必须root用户安装)
  2. 添加开机启动
    files/ipv6netd文件中的WORKDIR改为您的安装目录
    sudo cp files/ipv6netd /etc/init.d  #复制启动脚本
    sudo update-rc.d ipv6netd defaults  #更新自动启动
    下次开机就能在后台自动启动了

写入系统hosts需要root权限,如果不需要写入,可以将conf.pyhosts_file设置为其他路径。

使用方法

  1. 在至少两台机器上安装该软件
  2. 配置时需要停止daemon.py,如果在后台运行请用sudo service ipv6netd stop停止
  3. ./cli.py->2查看底部公钥(第一次运行会自动生成)
  4. 在其他机器上./cli.py->1添加节点,按照提示填写信息
  5. 双方都添加对方节点才能顺利连接
  6. (可选)在hosts文件的# IPv6Net Start# IPv6Net End之间插入想要写入hosts的节点
    IPv6地址不足39个字符必须用空格补上,中间用\t制表符分割,主机名为节点名+conf.py中的domain_suffix
  7. 在A机和B机上同时运行daemon.py
    可以用./daemon.py前台运行或sudo service ipv6netd start后台运行

更新计划

  1. ip monitor address代替定期执行ip address ...
  2. 实现数据库同步
  3. 加密通信
  4. 日志记录可读指令而不是十六进制
  5. 使用try防止出错
  6. 添加更多配置选项
  7. 全部数据都进行签名
  8. 更新通信协议,使用key,value模型,可自定义扩展
  9. 同时发布多个地址, 按照网关MAC地址来判断是否为同一个
  10. 制作Windows, Android, MCU版本
  11. 英文文档和操作界面

版本历史

v0.1.0: (2022.3.19)

  • 实现了一些简单功能,自动同步IPv6地址,记录一些信息
  • 添加了README文档

v0.2.0: (2022.5.14)

  • CLI操作界面
  • ed25519签名
  • 更新通信协议

About

IPv6 Address P2P exchange network

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published