联系电话: 18171260050

技术文档

  • 16,Nov,2024

Tinc on OpenWrt 组网

安装 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
完成