1.概述
之前折腾过好几个内网穿透软件,现在又了解到Tinc
想来试试记录一下过程。
Tinc 官网:https://www.tinc-vpn.org
本文参考的是这篇教程:https://chanix.github.io/TincCookbook/
作者:Chanix
很详细的介绍Tinc和搭建的教程
Chanix的介绍
- 加入 VPN 的每台主机都需运行 tinc,需有所有加入主机的操作权限;
- 主机通过网络配置文件中指定的 ConnectTo,主动连接到指定的主机;
- 为了加密和认证,ConnectTo 的双方皆需有对方主机的描述文件;
- 出于稳定原则,tinc 的版本选择其稳定分支 1.0;
- 通过互联网建立 VPN(工作在 IP 层面),使用默认路由器(router)模式即可;
- 开机即连通 VPN,无需其他操作,降低使用难度;
- 要能方便的进行主机的增加和删除,降低维护难度;
搭建环境
公网VPS一台: 做核心主机:debian9系统
armbian:linux debian9 系统
N1:openwrt 系统
Tinc默认端口:655
2.核心主机搭建
核心主机:我的是 debian9系统
先加一条软件源,这样下载的tinc才是最新的1.0.36稳定版
vim /etc/apt/sources.list
最下面加一条添加,软件下载后可注释掉。
deb http://ftp.de.debian.org/debian bullseye main
更新软件源
apt update
下载tinc
apt install tinc
创建配置文件
1.建立网络配置目录(网络名称为 home_vpn):
mkdir -p /etc/tinc/home_vpn/hosts
2.建立配置文件 tinc.conf
vi /etc/tinc/home_vpn/tinc.conf
编辑 tinc.conf 内容如下:
Name = tinc_ali
由于本主机为核心主机,只负责等待和认证其他主机的连接。因此,本主机没有配置 ConnectTo。
3.建立启动和关闭脚本 创建启动脚本 tinc-up
vi /etc/tinc/home_vpn/tinc-up
编辑 tinc-up 内容如下:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.254 netmask 255.255.0.0
创建关闭脚本 tinc-down
vi /etc/tinc/home_vpn/tinc-down
编辑 tinc-down 内容如下:
#!/bin/sh
ifconfig $INTERFACE down
赋予脚本可执行权限:
chmod +x /etc/tinc/home_vpn/tinc-up
chmod +x /etc/tinc/home_vpn/tinc-down
4.创建本主机描述文件(网络名称为 tinc_ali)
vi /etc/tinc/home_vpn/hosts/tinc_ali
编辑 tinc_ali 内容如下:
Address = 111.111.111.111
Subnet = 10.0.0.254/32
Address 指明公网地址,告诉其他主机怎么连接核心主机。Subnet 中 “10.0.0.254” 是本主机的 VPN IP,“/32”说明是本主机的一台普通类型的主机
生成密钥
执行 tincd 生成脚本, -n 指定网络名称,-K 指明生成密钥,可以在 -K 后以数字指定密钥长度,普通用途用默认值(2048)即可。命令执行过程中,需要指定文件名,不用管直接两次回车用默认值即可。
tincd -n home_vpn -K
运行完成以后,会生成私钥文件 /etc/tinc/home_vpn/rsa_key.priv,并在本主机的描述文件中增加公钥。
设置软件开机自启
systemctl enable tinc@home_vpn
这样核心服务器算搭建好了
3.armbian机器搭建
这个机器也是debian9系统
先加一条软件源,这样下载的tinc才是最新的1.0.36稳定版
vim /etc/apt/sources.list
最下面加一条添加,软件下载后可注释掉。
deb http://ftp.de.debian.org/debian bullseye main
更新软件源
apt update
下载tinc
apt install tinc
创建配置文件
1.建立网络配置目录(网络名称为 home_vpn):
mkdir -p /etc/tinc/home_vpn/hosts
2.建立配置文件 tinc.conf
vi /etc/tinc/home_vpn/tinc.conf
编辑 tinc.conf 内容如下:
Name = armbian
ConnectTo = tinc_ali
指明本主机的主机名为 armbian
。注意这里多了一行 ConnectTo,这行 ConnectTo 指定启动时,自动连接上一节我们配置好的核心主机 tinc_ali
。
3.建立启动和关闭脚本 创建启动脚本 tinc-up
vi /etc/tinc/home_vpn/tinc-up
编辑 tinc-up 内容如下:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.100 netmask 255.255.0.0
创建关闭脚本 tinc-down
vi /etc/tinc/home_vpn/tinc-down
编辑 tinc-down 内容如下:
#!/bin/sh
ifconfig $INTERFACE down
赋予脚本可执行权限:
chmod +x /etc/tinc/home_vpn/tinc-up
chmod +x /etc/tinc/home_vpn/tinc-down
4.创建本主机描述文件(主机名称为 armbian)
vi /etc/tinc/home_vpn/hosts/armbian
编辑 armbian 内容如下:
Subnet = 10.0.0.100/32
与核心主机比较,armbian 没有公网IP,所以没有 Address 这一行。Subnet 中 “10.0.0.100” 是本主机的 VPN IP,“/32”说明是本主机的一台普通类型的主机
生成密钥
执行 tincd 生成脚本, -n 指定网络名称,-K 指明生成密钥,可以在 -K 后以数字指定密钥长度,普通用途用默认值(2048)即可。命令执行过程中,需要指定文件名,不用管直接两次回车用默认值即可。
tincd -n home_vpn -K
运行完成以后,会生成私钥文件 /etc/tinc/home_vpn/rsa_key.priv,并更新本主机的描述文件 /etc/tinc/home_vpn/hosts/armbian。
交换密钥
tinc 的加密和认证需要公钥文件,需要通讯的双方主机都有对方的公钥。所以我们要确保核心主机和本主机都有对方的主机描述文件。
将本主机的/etc/tinc/home_vpn/hosts/armbian
复制到核心主机的同样位置。
复制核心主机的 /etc/tinc/home_vpn/hosts/tinc_ali
到本主机的同样位置。
设置软件开机自启
systemctl enable tinc@home_vpn
测试
在 tinc_ali 上:
ping 10.0.0.100
在 armbian 上:
ping 10.0.0.254
4.Openwrt系统搭建
N1刷的Openwrt系统需要修改软件源
vi /etc/opkg/feeds.conf
src/gz openwrt_koolshare_mod_core http://downloads.openwrt.org/snapshots/targets/armvirt/64/packages/
src/gz openwrt_koolshare_mod_base http://downloads.openwrt.org/snapshots/packages/aarch64_generic/base
src/gz openwrt_koolshare_mod_luci http://downloads.openwrt.org/snapshots/packages/aarch64_generic/luci
src/gz openwrt_koolshare_mod_packages http://downloads.openwrt.org/snapshots/packages/aarch64_generic/packages
src/gz openwrt_koolshare_mod_routing http://downloads.openwrt.org/snapshots/packages/aarch64_generic/routing
src/gz openwrt_koolshare_mod_telephony http://downloads.openwrt.org/snapshots/packages/aarch64_generic/telephony
更新软件源和安装
opkg update
opkg install tinc
opkg list | grep tinc
tinc - 1.1-git-3ee0d5dd-1
这个openwrt 版本是1.1安装有两个执行程序 tinc
tincd
和上面 1.0.36 操作有些不一样折腾了好久
好在最后也能连通
创建配置文件
前面这些过程差不多
1.建立网络配置目录(网络名称为 home_vpn):
mkdir -p /etc/tinc/home_vpn/hosts
2.建立配置文件 tinc.conf
vi /etc/tinc/home_vpn/tinc.conf
编辑 tinc.conf 内容如下:
Name = n1
ConnectTo = tinc_ali
指明本主机的主机名为 n1
。注意这里多了一行 ConnectTo,这行 ConnectTo 指定启动时,自动连接上一节我们配置好的核心主机 tinc_ali
。
3.建立启动和关闭脚本 创建启动脚本 tinc-up
vi /etc/tinc/home_vpn/tinc-up
编辑 tinc-up 内容如下:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.200 netmask 255.255.0.0
创建关闭脚本 tinc-down
vi /etc/tinc/home_vpn/tinc-down
编辑 tinc-down 内容如下:
#!/bin/sh
ifconfig $INTERFACE down
赋予脚本可执行权限:
chmod +x /etc/tinc/home_vpn/tinc-up
chmod +x /etc/tinc/home_vpn/tinc-down
4.创建本主机描述文件(主机名称为 n1)
vi /etc/tinc/home_vpn/hosts/n1
编辑 n1 内容如下:
Subnet = 10.0.0.200/32
生成密钥
这个1.1版本使用tincd -n home_vpn -K
命令没生效
后面看帮助说明使用generate-rsa-keys
参数就可以了
tinc -n home_vpn generate-rsa-keys
启动软件的时候提示报错还需要生成一条密钥
tinc -n home_vpn generate-ed25519-keys
交换密钥
将本主机的 /etc/tinc/home_vpn/hosts/n1
复制到核心主机的同样位置。
复制核心主机
的 /etc/tinc/home_vpn/hosts/tinc_ali
到本主机的同样位置。
将本主机的/etc/tinc/home_vpn/hosts/n1
复制到armbian的同样位置。
复制armbian
的 /etc/tinc/home_vpn/hosts/armbian
到本主机的同样位置。
启动命令
/usr/sbin/tincd -n home_vpn -D &
写入开机自启文件
vim /etc/rc.local
/usr/sbin/tincd -n home_vpn -D &
测试
ping 10.0.0.100
ping 10.0.0.254