上一篇写了在路由器上使用 WireGuard 在 IPv6 上直连组网,效果也不错。但是 WireGuard 是使用 UDP 通信的,有可能会被运营商 QoS 限速,所以还可以试试使用 TCP 通信的 Tinc 来组网。
安装 Tinc
在两台路由器上均进行安装。
opkg update
opkg install tinc
配置 Tinc
此处假设使用两台路由器来配置互相连接,名称为 A 和 B。
路由器 A 的 DDNS 地址为 A.router.com,路由器 B 的 DDNS 地址为 B.router.com,这里解析出来的地址无论是 IPv4 还是 IPv6 都没关系,只要是公网能访问的地址就可以。
路由器 A 和 B 均使用 665 端口监听 tinc 的传入连接。
路由器 A 的局域网为 192.168.88.0/24,路由器 B 的局域网为 192.168.99.0/24。
在 tinc 网络中,路由器 A 使用 IP 10.0.0.88,路由器 B 使用 IP 10.0.0.99。
路由器 A
首先需要定义一个网络名称,这里使用 tincnet
。
在 /etc/tinc/
目录中新建文件夹,名字为网络名称,即创建 /etc/tinc/tincnet/
目录。
在此目录下创建 tinc.conf tinc-up tinc-down
文件和 hosts
文件夹。
tinc.conf
为 tincnet
的配置文件,tinc-up
为启动该网络时自动执行的脚本,tinc-down
为关闭该网络时自动执行的脚本,hosts
文件夹保存着各个节点(路由器)的信息。
tinc.conf
文件中保存着路由器 A 的配置信息:
Name = A #路由器 A 的名称
BindToAddress = * 665 #监听端口
Interface = tinc #虚拟接口名称
Device = /dev/net/tun
Mode = switch #交换机模式
ConnectTo = B #默认连接路由器 B
tinc-up
文件是网络启动时执行的脚本,一般在这里为 tinc 的接口添加地址信息:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.88/24 dev $INTERFACE
ip route add 192.168.99.0/24 via 10.0.0.99 dev tinc src 10.0.0.88 onlink
tinc-down
文件是网络关闭时执行的脚本,一般在这里为 tinc 的接口清除配置:
#!/bin/sh
ip route del 192.168.99.0/24
ip addr del 10.0.0.88/24 dev $INTERFACE
ip link set $INTERFACE down
配置好 tinc-up tinc-down
文件之后,不要忘了为这两个文件增加执行权限:
chmod +x tinc-up
chmod +x tinc-down
hosts
文件夹中先创建好本机的文件,名称需要与上方 tinc.conf
中第一行的配置保持一致,即文件 A
:
Address = A.router.com
Port = 665
Subnet = 10.0.0.88/32
接下来为 tincnet
创建密钥信息,在询问保存位置时直接回车使用默认位置即可:
tinc -n tincnet generate-rsa-keys
tinc -n tincnet generate-ed25519-keys
此时路由器 A 的 /etc/tinc/tincnet/
目录下的情况为:
├── ed25519_key.priv
├── hosts/
│ └── A
├── rsa_key.priv
├── tinc-down*
├── tinc-up*
└── tinc.conf
最后需要编辑 /etc/config/tinc
文件:
config tinc-net tincnet
option enabled 1
option Name A
config tinc-host A
option enabled 1
option net tincnet
路由器 B
首先需要定义一个网络名称,这里还是使用 tincnet
。
在 /etc/tinc/
目录中新建文件夹,名字为网络名称,即创建 /etc/tinc/tincnet/
目录。
在此目录下创建 tinc.conf tinc-up tinc-down
文件和 hosts
文件夹。
tinc.conf
为 tincnet
的配置文件,tinc-up
为启动该网络时自动执行的脚本,tinc-down
为关闭该网络时自动执行的脚本,hosts
文件夹保存着各个节点(路由器)的信息。
tinc.conf
文件中保存着路由器 B 的配置信息:
Name = B #路由器 B 的名称
BindToAddress = * 665 #监听端口
Interface = tinc #虚拟接口名称
Device = /dev/net/tun
Mode = switch #交换机模式
ConnectTo = A #默认连接路由器 A
tinc-up
文件是网络启动时执行的脚本,一般在这里为 tinc 的接口添加地址信息:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.99/24 dev $INTERFACE
ip route add 192.168.88.0/24 via 10.0.0.88 dev tinc src 10.0.0.99 onlink
tinc-down
文件是网络关闭时执行的脚本,一般在这里为 tinc 的接口清除配置:
#!/bin/sh
ip route del 192.168.88.0/24
ip addr del 10.0.0.99/24 dev $INTERFACE
ip link set $INTERFACE down
配置好 tinc-up tinc-down
文件之后,不要忘了为这两个文件增加执行权限:
chmod +x tinc-up
chmod +x tinc-down
hosts
文件夹中先创建好本机的文件,名称需要与上方 tinc.conf
中第一行的配置保持一致,即文件 B
:
Address = B.router.com
Port = 665
Subnet = 10.0.0.99/32
接下来为 tincnet
创建密钥信息,在询问保存位置时直接回车使用默认位置即可:
tinc -n tincnet generate-rsa-keys
tinc -n tincnet generate-ed25519-keys
此时路由器 B 的 /etc/tinc/tincnet/
目录下的情况为:
├── ed25519_key.priv
├── hosts/
│ └── B
├── rsa_key.priv
├── tinc-down*
├── tinc-up*
└── tinc.conf
最后需要编辑 /etc/config/tinc
文件:
config tinc-net tincnet
option enabled 1
option Name B
config tinc-host B
option enabled 1
option net tincnet
交换密钥
需要将路由器 A 上的 /etc/tinc/tincnet/hosts/A
文件复制到路由器 B 的/etc/tinc/tincnet/hosts/
目录下,同理,需要将路由器 B 上的 /etc/tinc/tincnet/hosts/B
文件复制到路由器 A 的/etc/tinc/tincnet/hosts/
目录下。
此时两个路由器的 /etc/tinc/tincnet/
目录下均为这样:
├── ed25519_key.priv
├── hosts/
│ ├── A
│ └── B
├── rsa_key.priv
├── tinc-down*
├── tinc-up*
└── tinc.conf
需要注意两个路由器要在防火墙中开放 665 端口。
在两个路由器上均启动 tinc,即可连通两个路由器:
/etc/init.d/tinc start
完成
如果需要更省心的操作,可以参考上一篇文章中的自动化的配置。