不见春山
骑马倚斜桥,满楼红袖招。
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
进行授权。
分享
最近更新
ROS修改 MTU 和 MSS 解决上网慢和页面显示不全问题
WireGuard 搭建组网教程
EPUB 格式详解
Quartus ii 调用 Modelsim
vscode + verilog 环境配置
热门标签
Tensorflow
VPN
Linux
Router
虚拟组网
ROS
zerotier
C++
WIn10
Math
文章目录
MiniDlna 添加对 rmvb 的支持
Tensorflow 调用 Matlab 生成的 .mat 文件