路由器长期运行版 n2n 方案
下面给你一套 路由器长期运行版 n2n 方案(稳定、自恢复、自动启动)。
这个方案适合嵌入式 Linux 路由器,例如你现在的小米路由器上运行的 n2n。
目标:
-
开机自动启动
-
进程崩溃自动重连
-
防止重复启动
-
自动写日志
-
支持多 supernode
-
适合
/data持久存储
一、目录结构(标准布局)
建议统一放在:
/data/n2n
结构:
/data/n2n
├── edge
├── supernode
├── edge.conf
├── start.sh
├── monitor.sh
└── edge.log
├── edge
├── supernode
├── edge.conf
├── start.sh
├── monitor.sh
└── edge.log
创建目录:
mkdir -p /data/n2n
二、edge.conf(推荐稳定配置)
编辑:
vi /data/n2n/edge.conf
写入:
-c mynet
-k 123456
-a 10.10.10.2
-l 112.15.88.165:2999
-l 112.15.88.166:2999
-M 1400
-f
-v
-k 123456
-a 10.10.10.2
-l 112.15.88.165:2999
-l 112.15.88.166:2999
-M 1400
-f
-v
说明:
| 参数 | 作用 |
|---|---|
| -c | VPN 社区 |
| -k | 加密 key |
| -a | 虚拟 IP |
| -l | supernode |
| -M | MTU |
| -f | 前台运行 |
| -v | 日志 |
多 -l 表示 自动切换 supernode。
三、启动脚本 start.sh
创建:
vi /data/n2n/start.sh
写入:
#!/bin/sh
EDGE="/data/n2n/edge"
CONF="/data/n2n/edge.conf"
LOG="/data/n2n/edge.log"
echo "===== n2n start $(date) =====" >> $LOG
if pidof edge >/dev/null; then
echo "edge already running" >> $LOG
exit 0
fi
ARGS=$(tr '\n' ' ' < $CONF)
$EDGE $ARGS >> $LOG 2>&1 &
赋权:
chmod +x /data/n2n/start.sh
四、守护脚本(自动重连)
创建:
vi /data/n2n/monitor.sh
写入:
#!/bin/sh
LOG="/data/n2n/edge.log"
while true
do
if ! pidof edge >/dev/null
then
echo "edge stopped, restarting $(date)" >> $LOG
/data/n2n/start.sh
fi
sleep 30
done
赋权:
chmod +x /data/n2n/monitor.sh
五、测试启动
先运行:
/data/n2n/start.sh
查看:
ip addr
应该出现:
n2n0
查看日志:
tail -f /data/n2n/edge.log
六、启动守护
/data/n2n/monitor.sh &
作用:
-
每 30 秒检查
-
如果 edge 挂了自动重启
七、开机自动启动
小米路由器一般支持:
/etc/rc.local
编辑:
vi /etc/rc.local
加入:
/data/n2n/monitor.sh &
保存。
八、重启测试
reboot
启动后检查:
ps | grep edge
或:
ip addr
看到:
n2n0
说明成功。
九、性能优化(路由器建议)
建议加入:
-M 1380
原因:
-
路由器 NAT
-
避免 MTU fragmentation
十、推荐网络结构(最稳定)
典型架构:
公网服务器
│
│
supernode
│
┌────┴────┐
│ │
路由器A 路由器B
edge edge
10.10.10.2
10.10.10.3
│
│
supernode
│
┌────┴────┐
│ │
路由器A 路由器B
edge edge
10.10.10.2
10.10.10.3
设备之间:
ping 10.10.10.3
即可互通。
共有 0 条评论