不见春山
骑马倚斜桥,满楼红袖招。
Home
Categories
Archives
Tags
About
Home
N2N 搭建教程
N2N 搭建教程
取消
N2N 搭建教程
由
ctaoist
发布于 2022-04-12
·
最后更新:2023-02-08
1
之前从 Zerotier 切换到 Tinc,但是在 ArchLinux 和创建的 Alpine 镜像中,连接成功一段时间后老是提示 `Metadata socket read error for xxxxx: Connection reset by peer`,搜了一圈也没有找到解决办法,干脆切换到 [N2N](https://github.com/ntop/n2n) 算了。 N2N是一款十分简单且强大的p2p组网软件。它可以实现组网和p2p直连。只需要拥有一台服务端,任何主机都可以接入进来做为客户端,功能更贴近 Zerotier。  ## 安装 ### supernode 服务端 由于 VPS 的 Debian 软件仓库里的版本非常低,做了一个Docker镜像:`ctaoist/tools:n2n_alpine3.15`,安装的是 n2n_3.0。 ```yaml n2n: container_name: "n2n" image: ctaoist/tools:n2n_alpine3.15 volumes: - /etc/localtime:/etc/localtime:ro cap_add: - NET_ADMIN command: [supernode, -f, -c vpn_name,-p 1234] restart: unless-stopped hostname: "n2n" network_mode: "host" ``` ### 客户端 #### OpenWRT **OpenWRT** 可以使用对应的SDK编译[lean版本的n2n](https://github.com/coolsnowwolf/lede/tree/master/package/lean/n2n_v2),已经升级到了v3,附上已经编译好的 **x86_64 版本**:[edge_x86_64](/downloads/openwrt/n2n-edge_3.0_git-66f557af97b9c2ad42537516101fd04df2639ef0-1_x86_64.ipk) 和 [supernode_x86_64](/downloads/openwrt/n2n-supernode_3.0_git-66f557af97b9c2ad42537516101fd04df2639ef0-1_x86_64.ipk),按需编辑配置文件 `/etc/config/n2n_v2`,客户端对应的 `edge` 段,编辑完后启动并设为开机自启: ```sh /etc/init.d/n2n_v2 start /etc/init.d/n2n_v2 enable ``` #### Linux 客户端 **Linux 客户端**仍然可以使用上述镜像: ```yaml edge: container_name: "edge" image: ctaoist/tools:n2n_alpine3.15 volumes: - /etc/localtime:/etc/localtime:ro - /dev/net/tun:/dev/net/tun - path/edge.conf:/edge.conf cap_add: - NET_ADMIN #command: [/bin/sh, -c, "edge -f -a static:vpn_local_ip -c vpn_name -l 服务端ip:1234 -k keypass, -d n2n, -r"] command: [edge, /edge.conf] restart: unless-stopped hostname: "edge" network_mode: "host" ``` >不通过配置文件虽然可以运行,但ping不通,如果不加 `/bin/sh -c`,则提示:`supernode2sock fails to resolve supernode host 127.0.0.1`,这就非常奇怪了,连 `127.0.0.1` 都无法解析了。通过**配置文件**就可以正常运行:`edge path/edge.conf`,我估计问题还是出在**命令行中的冒号**上。 #### Windows 客户端 **Windows 客户端**需要先安装[TAP驱动](http://build.openvpn.net/downloads/releases/),如果未安装或者安装过但想添加一个新的TAP设备,管理员权限执行: ```sh tapinstall.exe install OemVista.inf tap0901 ``` >1. [tap-windows-9.24.6](http://build.openvpn.net/downloads/releases/tap-windows-9.24.6.zip) 支持千兆,但不支持win7,win7还是推荐安装 [9.21.2](http://build.openvpn.net/downloads/releases/tap-windows-9.21.1.zip) 版本。 >2. 如果安装过TAP驱动,也可以在设备管理器中**添加过时设备**来添加一个新的TAP设备。 >3. 删除设备可以在设备管理器中进行删除 **windows n2n 下载地址**:https://github.com/lucktu/n2n,如果需要后台运行,创建一个新的 **vbs 脚本**: ```vbs CreateObject("WScript.Shell").Run "path\edge.exe -a static:vpn_local_ip -c vpn_name -l 服务端ip:1234 -k keypass -d tuntap_name -r", 0 ``` #### MacOsX 客户端 ```sh brew install --cask tuntap ``` 从 [n2n_mac 下载地址](https://github.com/lucktu/n2n/tree/master/Mac) 下载需要的版本。 以后端服务运行请参考[Tinc 搭建教程-MacOSX 客户端](https://blog.ctaoist.cn/blog/post/ctaoist/Tinc%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B#mac-osx-%E5%AE%A2%E6%88%B7%E7%AB%AF),方法是一样的。 ## 添加静态路由 **Windows 客户端**想访问 OpenWRT NAT 内部资源,需要手动添加路由,假设 OpenWRT 内部网段为 `192.168.1.0/32`,OpenWRT 在 VPN 网络中的 ip 为 `10.0.0.1`,则在 Windows cmd 中执行: ```sh route add -p 192.168.1.0 mask 255.255.255.0 10.0.0.1 ``` **Linux 客户端**需要执行的则是: ```sh ip route add 192.168.1.0/24 via 10.0.0.1 ``` >**注**:edge 启动参数中 `-r` 不能缺失,表示允许数据包在同虚拟小组间转发,对应的 OpenWRT 的配置为 `/etc/config/n2n_v2` 中 `edge` 段的 `option route '1'` >Linux 添加的路由重启会失效,可以在 `/etc/rc.local` 中添加命令,这里不赘述。
VPN
VPN
虚拟组网
该博客文章由作者通过
CC BY 4.0
进行授权。
分享
最近更新
ROS修改 MTU 和 MSS 解决上网慢和页面显示不全问题
WireGuard 搭建组网教程
EPUB 格式详解
Quartus ii 调用 Modelsim
vscode + verilog 环境配置
热门标签
Tensorflow
VPN
Linux
Router
虚拟组网
ROS
zerotier
C++
WIn10
Math
文章目录
迁移学习入门
WireGuard 搭建组网教程