群晖下使用N2N的一种方法

N2N 2022/01/14

群晖下使用N2N的有两种:直接运行、Docker

因为我不用Docker(主要是考虑到要群晖要睡眠),所以这里分享一下我的方法(直接运行)

准备

群晖的DSM其实内核还是定制化的Linux,只要找到正确架构的可执行文件就可以直接运行

可以从 这里 直接下载到适用于Linux下各个架构的已编译好的N2N组件,这里以x86_64架构为例

比如:静态编译包含zstd的无UPX版本edge

开启群晖的SSH并获取root权限,然后我用的WinSCP,将上述组件(edge)解压并上传

赋予执行权限

测试

Edge

回到SSH端,执行 edge 测试一下,运行正常没问题!

TAP\TUN

群晖DSM系统默认没有加载tun模块,需要手动开启,否则运行edge时就会报错

ERROR: unable to configure virtual network port: could not open TUN/TAP device: No such file or directory

开启教程这里就不写了,直接 参考这篇

路由表

添加一行路由表

#edge0为n2n网卡名称,通过ifconfig查看
#IP段改为自己的虚拟IP段,192.168.123.0/24表示192.168.123.1 - 192.168.123.254
route add -net 192.168.123.0/24 dev edge0

脚本

下载脚本

到上一步,就可以直接通过命令行启动edge。但是我需要开机自启+进程监控,所以就再写个脚本,利用群晖的计划任务功能来控制edge的启动

下载Shell 脚本 ,并修改脚本里的参数,赋予执行权限后丢到比如 /root 目录下

则完整的执行命令为 sh /root/checkedge.sh

#!/bin/sh

start_edge(){
	killall edge
	/usr/bin/edge -a 192.168.123.200 -c bugxia_9527 -l n2n.s1.bugxia.com:9527 -r
}

check_running(){
	PID=`ps -ef | grep edge | grep -v grep | grep -v $0 | awk '{print $2}'`
	if [[ -z $PID ]];then
		start_edge
	else
		echo "Edge is running"
	fi
}

check_running

定时任务

在群晖的定时任务中添加每隔5分钟执行一次上述脚本,添加过程不写了,就一张图

运行



7 条评论

  • Tkgoldpig 评论于 回复

    大佬您好,我如果想使用unraid在docker上部署的话是该怎么做呢
    想求一份docker的镜像试试自己部署

  • 星火燎原 评论于 回复

    楼主你好,N2N组件有新的下载链接吗?最上面的那个链接下载不了

  • 星火燎原 评论于 回复

    执行edge报错Bus error (core dumped)是为什么啊?

  • zz 评论于 回复

    在这里记录一下,使用supernode -p 端口号时,需要把该端口的udp打开,因为没有开udp,失败了好久…

    • Bug侠 评论于 回复

      @zz
      感谢分享~~~

  • 蓝蓝天空 评论于 回复

    n2n_v3_linux_x64_v3.1.0-54_r1127_all_by_heiye.zip 文件下载不了,楼主能提供文件吗?谢谢

    • Bug侠 评论于 回复

      @蓝蓝天空
      备份下载:
      x86:http://down.bugxia.com:8080/d/N2N/n2n_v3_linux_x86_v3.1.0-54_r1127_all_by_heiye.zip
      x64:http://down.bugxia.com:8080/d/N2N/n2n_v3_linux_x64_v3.1.0-54_r1127_all_by_heiye.zip

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)