不见春山
骑马倚斜桥,满楼红袖招。
Home
Categories
Archives
Tags
About
Home
Tinc 搭建教程
Tinc 搭建教程
取消
Tinc 搭建教程
由
ctaoist
发布于 2021-11-30
·
最后更新:2022-02-24
1
## 简介 最近从 Zerotier 切换到 Tinc,是由于公司网络的 NAT 层数太多,是 `Symmetric NAT`,Zerotier p2p 打洞几乎不成功,连接国内自建的 Moon 都费劲。切换到 Tinc 后目前体验良好。 附一个NAT类型测试工具:[NAT类型测试.zip](/downloads/NAT类型测试.zip) Tinc 是一个组建虚拟专用网络(VPN)的工具,以 GNU 协议发布,通过隧道及加密技术在互联网上点与点之间创建专有网络。tinc 在网络层工作,因此无需对现有软件进行修改和配置。您可以使用 tinc 搭建专属的低延迟、高带宽、可扩展的 P2P VPN。其数据通讯经过加密和压缩,能避免敏感数据和隐私的泄露。 **无论何时何地,只要能连入互联网,就可以安全的访问 VPN。** ## 服务端 ### 安装 ``` apt install tinc ``` tinc 的默认主配置目录为 `/etc/tinc`,现在这个目录里面只有一个文件 `nets.boot`。 ### 创建配置文件 ``` mkdir -p /etc/tinc/lyf_qq_vpn # 创建一个名为 lyf_qq_vpn 的 vpn,名字可以随便起 mkdir -p /etc/tinc/lyf_qq_vpn/hosts # 创建主机文件夹 ``` 编辑配置文件 `vim /etc/tinc/lyf_qq_vpn/tinc.conf`: ``` Name = tinc_qq #Interface = tun0 #Internet 走 IPv4 协议 AddressFamily = ipv4 #设置使用 switch 模式 默认为 router,还有hub Mode = switch ``` 编辑启动脚本 `vim /etc/tinc/lyf_qq_vpn/tinc-up`: ```sh #!/bin/sh ifconfig $INTERFACE 10.10.20.1 netmask 255.255.255.0 ``` 编辑停止脚本 `vim /etc/tinc/lyf_qq_vpn/tinc-down`: ```sh #!/bin/sh ifconfig $INTERFACE down ``` 创建本主机描述文件 `vim /etc/tinc/lyf_qq_vpn/hosts/tinc_qq`,文件名和`tinc.conf.Name`字段对应: ```sh Address = 1.2.3.4 # 公网ip地址 Subnet = 10.10.20.1 # vpn中的本机地址 ``` ### 生成密钥 1.0.3x 版本: ```sh tincd -n lyf_qq_vpn -K ``` 1.1.x 版本: ```sh tinc -n lyf_qq_vpn generate-rsa-keys tinc -n lyf_qq_vpn generate-ed25519-keys ``` ### 调试 ```sh tincd -d -D -n lyf_qq_vpn # -D:保持前台运行 -d:Debug级别 tincd -k # 关闭正在运行的tinc进程 ``` ### 启动设为自启 ```sh systemctl start tinc@lyf_qq_vpn # 启动 systemctl enable tinc@lyf_qq_vpn ``` ## 客户端 总共需要编辑4个文件,然后和服务端[交换公钥](#交换公钥),**交换密钥后客户端启动后才能连上服务端**。 写了一个部署 tinc 客户端的脚本,[地址](/downloads/deploy_tinc.sh),支持Linux及类似系统,需要手动填写 `tinc.conf` 中的 `ConnectTo =`选项,需要连接的服务器。 ### Linux客户端 基本和服务端搭建一样,只不过在本机描述文件中不需要填写公网ip,`tinc-up`和描述文件中都需要指定本机的ip。 创建配置文件 `vim /etc/tinc/lyf_qq_vpn/tinc.conf`: ```conf # 本机的名字 Name = arch_csrd # 指定启动时,自动连接的 tinc_ali, 可以使用多个ConnectTo来自动连接多个主机。 ConnectTo = tinc_qq #Internet 走 IPv4 协议 AddressFamily = ipv4 #设置使用 switch 模式 默认为 router Mode = switch ``` 创建描述文件 `vim /etc/tinc/lyf_qq_vpn/hosts/arch_csrd`: ``` Subnet = 10.10.20.2 ``` 然后生成密钥。 ### OpenWrt 客户端 将整段局域网网络都接入 VPN 网络中,安装方法和 [Linux客户端相同](#linux客户端) ```/etc/config/tinc config tinc-net lyf_qq_vpn option enabled 1 option AddressFamily ipv4 list ConnectTo tinc_qq option Mode switch option Name lede config tinc-host lede option enabled 0 option net lyf_qq_vpn option Subnet 10.10.20.2 ``` 启动: ```sh /etc/init.d/tinc start /etc/init.d/tinc enable # 设为开机启动 ``` ### Mac OSX 客户端 需要先安装 [Homebrew](https://brew.sh/),然后安装 tinc: ```sh brew install --cask tuntap # tinc 依赖 tuntap brew install tinc ``` >注:官方仓库在2021年10月30日把 tuntap 删除了,可以把 [tuntap.rb](/downloads/tuntap.rb) 放到 `$(brew --prefix)/Library/Taps/homebrew/homebrew-cask/Casks` 目录。 进入tinc安装目录:`cd "$(brew --prefix/Cellar/tinc)"`,剩下步骤和 [Linux 客户端相同](#linux客户端) #### 设为自启 MacOS 通过 Lauchd 管理系统服务和自启项。需要设置 .plist 文件来设为自启。 以root权限向 `/Library/LaunchDaemons/tincd.lyf_qq_vpn.plist` 写入: ```xlm <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>tinc.lyf_qq_vpn</string> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/tincd</string> <string>-n</string> <string>lyf_qq_vpn</string> <string>-D</string> <string>--pidfile=/usr/local/var/run/tinc.lyf_qq_vpn.pid</string> </array> <key>StandardErrorPath</key> <string>/tmp/tinc.lyf_qq_vpn.err</string> <key>StandardOutPath</key> <string>/tmp/tinc.lyf_qq_vpn.out</string> </dict> </plist> ``` >注意**修改 VPN 名字**。 最后启动服务:`sudo launchctl load /Library/LaunchDaemons/tinc.lyf_qq_vpn.plist` ### windows 客户端 >https://chanix.github.io/TincCookbook/examples/3-HowToInstallTincOnWin10.html 首先[官网](https://www.tinc-vpn.org/download/)下载安装包或者[github仓库](https://github.com/gsliepen/tinc/releases)下载,然后安装,需要**安装TUP驱动**,这个驱动安装包自带,**安装完后需要打开网络配置中心得到虚拟网卡的名称**。 如果 Tinc 自带的 Tapinstall.exe 安装失败,则可以下载[这个](https://build.openvpn.net/downloads/releases/tap-windows-9.21.2.exe)进行安装。 >**注**:windowns 版 1.0.35 的命令行用法和 Linux 下的类似,1.1pre17 及以上版本用法产生了很大的变化,以下是基于 1.0.35 版本的。 管理员打开 Powershell,编辑配置文件 `notepad 'C:\Program Files (x86)\tinc\lyf_qq_vpn\tinc.conf'`: ``` Name = win10_csrd ConnectTo tinc_qq #指定虚拟网卡名称 Interface = 以太网 2 AddressFamily = ipv4 Mode = switch ``` 编辑描述文件:`notepad 'C:\Program Files (x86)\tinc\lyf_qq_vpn\hosts\win10_csrd'` ``` Subnet = 10.10.20.3/32 ``` 编辑启动文件 `notepad 'C:\Program Files (x86)\tinc\lyf_qq_vpn\tinc-up.bat'`: ``` netsh interface ip set address "以太网 2" static 10.10.20.3 255.255.255.0 ``` 编辑停止文件 `notepad 'C:\Program Files (x86)\tinc\lyf_qq_vpn\tinc-down.bat'`: ``` netsh interface ip set address "以太网 2" source=dhcp ``` 注意虚拟网卡的名称。 然后需要生成密钥。 [交换公钥](#交换公钥)后启动: ``` & tincd -c 'C:\Program Files (x86)\tinc\lyf_qq_vpn' ``` 系统提示: ``` tinc.lyf_qq_vpn service installed tinc.lyf_qq_vpn service started ``` windows 下的 tinc 启动的时候会自动创建相应的服务。 ## 交换公钥 - 将服务器的 `/etc/tinc/lyf_qq_vpn/hosts/tinc_qq` 复制到 Linux 客户端的 `/etc/tinc/lyf_qq_vpn/hosts` 目录; - 将 Linux 客户端的 `/etc/tinc/lyf_qq_vpn/hosts/arch_csrd` 复制到服务器的`/etc/tinc/lyf_qq_vpn/hosts` 目录。 - 将服务器的 `/etc/tinc/lyf_qq_vpn/hosts/tinc_qq` 复制到 Windows 客户端的 `C:\Program Files (x86)\tinc\lyf_qq_vpn\hosts\` 目录 - 将 Windows 客户端的 `C:\Program Files (x86)\tinc\lyf_qq_vpn\hosts\win10_csrd` 复制到服务器的`/etc/tinc/lyf_qq_vpn` 目录。
VPN
VPN
虚拟组网
该博客文章由作者通过
CC BY 4.0
进行授权。
分享
最近更新
群晖升级 ARPL 笔记
本地部署大语言模型
WireGuard 搭建组网教程
LVM 管理
HK1 RBOX X4 电视盒子折腾笔记
热门标签
机器学习
Tensorflow
Linux
VPN
虚拟组网
Router
ROS
嵌入式
C++
C
文章目录
MiniDlna 添加对 rmvb 的支持
Tensorflow 调用 Matlab 生成的 .mat 文件