介绍
Tinc VPN 是一个轻量型的 GNU 协议下的开源软件,通过隧道以及加密技术在互联网点与点之间创立隧道。VPN 是 IP 层面上的,所以可以像普通的网络设备那样,不需要去适配其他已经存在的软件。所以他就可以很安全的在点与点之间传输数据,并不需要担心泄露。他还有其他几大的特点:
- 加密 / 认证 / 压缩
- 自动全网状路由
- 易于扩展网络节点
- 能够进行网络的桥接
- 跨平台支持
- IPv6 支持
(上面的内容基本就是官网首页的一个简单的翻译,官方网站:https://www.tinc-vpn.org/)
源码
安装
Debian/Ubuntu
1 | apt-get install tinc |
CentOS
1 | yum install tinc |
ArchLinux
1 | pacman -S tinc |
Android
IOS(需越狱)
Windows
MacOS
1 | brew install tinc --devel |
配置
目录结构
1 | /etc/tinc |
/etc/tinc/dock目录下的文件都属于dock这个网络,可以根据自己的情况修改名称,相应下面的命令也需要修改/etc/tinc/dock/hosts目录是存放其他用户或者说是其他网络的public key以及他们的 ip 地址rsa_key.priv本网络的私钥tinc.conf本网络的配置文件tinc-down本网络关闭时执行的脚本tinc-up本网络启动时执行的脚本
客户端和服务端都需要手动新建相同的目录结构,Windows端无需新建tinc-up和tinc-down两个文件
服务端配置
首先开启 Linux 转发,在/etc/sysctl.conf设置net.ipv4.ip_forward = 1,并通过sysctl -p来应用配置。
修改tinc.conf配置文件
1 | Name = Server |
Name主机名称Interface隧道所使用的网卡名称Mode有三种模式,分别是router/switch/hub,相对应我们平时使用到的路由、交换机、集线器 (默认模式router)CompressionUDP 数据包压缩级别。可选有 0 (关闭),1 (fast zlib) 至 9 (best zlib),10 (fast lzo) 和 11 (best lzo)Cipher加密类型。可选aes-128-cbcaes-256-cbc等Digestrsa 加密协议强度。可选sha128sha1等PrivateKeyFile服务器私钥的位置
Linux和MacOS修改tinc-up和tinc-down
tinc-up
1 |
|
tinc-down
1 |
|
运行命令添加执行权限
1 | chmod +x tinc-* |
在hosts文件夹内新建在tinc.conf设置的主机名称的节点配置文件
1 | Subnet=10.1.3.1/32 |
Subnet宣告的路由地址Address服务器的外网 IPPort指定 tinc 连接端口(默认端口655)
使用命令生成私钥和公钥
1 | tincd -n dock -K4096 |
私钥生成在与tinc.conf配置文件相同的文件夹,生成的公钥会自动添加到hosts文件夹内的节点配置文件里
客户端配置
客户端的tinc.conf与服务器的参数基本上相同,只需要修改Name,和添加Connectto需要连接的主机名称
1 | Name = Client |
Name客户端名称Connectto服务端名称 (可同时使用多个)Interface隧道所使用的网卡名称Mode有三种模式,分别是router/switch/hub,相对应我们平时使用到的路由、交换机、集线器 (默认模式router)CompressionUDP 数据包压缩级别。可选有 0 (关闭),1 (fast zlib) 至 9 (best zlib),10 (fast lzo) 和 11 (best lzo)Cipher加密类型。可选aes-128-cbcaes-256-cbc等Digestrsa 加密协议强度。可选sha128sha1等PrivateKeyFile客户端私钥的位置
在hosts文件夹内新建在tinc.conf设置的主机名称的节点配置文件
1 | Subnet=10.1.3.2/32 |
tinc-up和tinc-down跟服务器配置基本一样,只需要修改tinc-up的内网ip,Windows客户端无需这两个文件
使用命令生成私钥和公钥
1 | tincd -n dock -K4096 |
将服务端生成完公钥的节点配置文件放到客户端的hosts文件夹内,并将客户端生成完公钥的节点配置文件放到服务端的hosts文件夹内
运行
后台启动
Windows 端需要先安装虚拟网卡,在 tinc 的安装目录下有虚拟网卡的驱动安装包,安装完成后需要将虚拟网卡名称改为与tinc.conf文件中的Interface名称相同,并且手动设置虚拟网卡的 IP 地址和子网掩码,然后进入到tinc的安装目录下再以管理员的身份运行,运行后会自动创建系统服务,需要停止的时候在 Windows 系统服务管理中停止服务
1 | # Linux/MacOS |
运行完后,使用ifconfig查看是否有tinc.conf设置的网卡名称,如果没有请检查tinc-up和tinc-down两个文件是否授予执行的权限;如果已经文件已经赋予权限还是没显示网卡,请使用调试模式运行查看问题
停止运行,该命令在Windows端会停止运行并删除系统服务
1 | # Linux/MacOS |
调试模式
1 | # Linux/MacOS |
注意:调试模式时无法使用Ctrl+C停止运行,需要输入命令tinc -n dock -k才能停止运行