部署 n2n 实现异地组网

通过 n2n 访问异地内网资源

Why?

  • 最开始用的 WireGuard,但是每新加设备就得修改配置添加密钥对,并且对于用 ddns 的动态 IP 服务器不太友好(只会在启动时解析域名,假如服务器 IP 发生变动,客户端将永久断连,除非重启客户端)
  • 后来看到 NetMaker,结果也就只是看看
  • 然后看到了 TailScale 和 HeadScale,也使用了一段时间(后期会补一篇博客),还挺好用,就是设备加入有点繁琐
  • 这次看到了 n2n,来试一试

和 HeadScale 的区别

共同特性:

  • 均支持 P2P 且支持回退到中继模式
  • 均支持命名空间隔离网络

n2n:

  • 支持 supernode 之间建立连接以扩展网络
  • 支持在接口上运行 DHCP 服务器
  • 可选择是否加密

HeadScale:

  • TailScale 的第三方自建服务端
  • 底层基于 WireGuard
  • 需要服务端授权或者提前签发ID才能加入网络
  • 支持用户在线状态的查看与管理

架构

  • supernode 为服务器节点,但服务器本身不在网络内
  • edge 为客户端节点,会创建 tap 虚拟网口接入网络
eeeddpdgg2geeperelaysupernodesupernodeeeedpdpdg2g2gepepe

安装

无论服务端还是客户端,都需要安装 n2n

1# Arch Linux
2sudo pacman -Sy n2n
3
4# Debian (版本较低,建议手动安装)
5sudo apt update && sudo apt install -y n2n

最新 deb/rpm 安装包: https://github.com/ntop/n2n/releases/latest/

服务器配置

编辑 /etc/n2n/supernode.conf:

1-p=7654
2-t=5645
3-F=<federation_name>
4# 如果需要扩展网络,添加:
5#-l=<另一超级节点的IP>:<另一超级节点的端口>
6# 如果需要修改子网网段,默认 10.128.255.0-10.255.255.0/24
7#-a=192.168.0.0-192.168.255.0/24
  • 启动: sudo systemctl enable --now supernode.service
  • 查看服务器状态: netcat -u localhost 5645,每 ENTER 一次刷新一次

Tips:

客户端配置

编辑 /etc/n2n/edge.conf:

1-c=<community_name>
2-l=<server_address>:<server_port>
3-k=<encrypt_passwd>
4-A4
5-a=10.128.0.2
6-d=vlan0
  • 启动: sudo systemctl enable --now edge.service

Tips: 如果要加入多个网络:

  • 编辑 /etc/n2n/edge-name.conf
  • 启动: sudo systemctl enable --now edge@name.service

更多配置文件示例

防止别人蹭你的 supernode

方案一: 限制 community_name

  • 编辑 /etc/n2n/community.list:

    1# community_name subnet
    2# 例如
    3net 10.128.0.0/24
    
  • supernode.conf 配置文件中启用

    1-p=7654
    2-t=5645
    3-F=<federation_name>
    4-c=/etc/n2n/community.list
    
  • 在客户端使用 -c=net 加入网络

    1-c=net
    2-l=<server_address>:<server_port>
    3-k=<encrypt_passwd>
    4-A4
    5-a=10.128.0.2
    6-d=vlan0
    
  • 如何重载 community.list:

    1. netcat -u localhost 5645
    2. 发送 reload_communities

方案二: 密码验证

官方文档(GitHub) 给的方案无法使用,还在探索

  • 排查后发现原因出在 Header 加密,但未发现解决方案

其他

更多功能还在探索,比如中继 IPv6

注:因密码问题尚未解决,且官方未提供 Windows 客户端,大概率不会继续使用了

CC BY-NC-SA 4.0 转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
最后更新于 Apr 28, 2023 02:38 +0800
人最重要的特点是会思考,写博客的初衷是保存思维的电子快照。 当然各种文档工具亦或是简单的文本编辑器也能随时记录点滴,选择建个人网站无非是想满足技术爱好者的偏执。
Built with Hugo
主题 StackJimmy 设计