Tinc内网穿透记录

TINC.png

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
# Tinc 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:Tinc内网穿透记录
地址:https://530503.xyz/articles/2021/04/27/1619513797364.html

评论

取消