使用Tinc搭建虚拟局域网的详细安装与配置教程
说明
Tinc是一个轻量级的VPN(Virtual Private Network)软件,可以帮助用户建立一个加密的虚拟网络,实现对远程服务器的访问和管理。Tinc具有高度可扩展性、灵活性和安全性,支持多种操作系统和网络环境。本文将介绍Tinc的安装和配置方法,以及常用的操作命令和技巧。
1. Linux安装
在Linux操作系统上,可以使用包管理工具来安装Tinc。
请根据自己的操作系统类型和版本选择相应的安装方法。
例如,在Debian和Ubuntu系统上,可以使用以下命令来安装Tinc:
1 |
|
在CentOS和Fedora系统上,可以使用以下命令来安装Tinc:
1 |
|
在Arch Linux系统上,可以使用以下命令来安装Tinc:
1 |
|
在OpenSUSE系统上,可以使用以下命令来安装Tinc:
1 |
|
2. 配置Tinc
2.1 创建配置文件
Tinc的配置文件位于/etc/tinc目录下,每个Tinc网络都有一个单独的目录,目录名为网络名。
其目录结构如下所示:
1 |
|
tinc.conf
:该文件主要存放当前节点的配置,使用的虚拟网卡等。rsa_key.priv
:该文件是私钥文件,由tincd
工具生成。tinc-up
:网络建立时需要执行的操作tinc-down
:网络停止时需要执行的操作hosts文件夹
:该文件夹存放当前网络所有节点的配置文件,我有六个节点,那么就有六个文件,文件名为节点名。节点名在tinc.conf中进行设置。
在本文中,我们将创建一个名为ens33的Tinc网络,因此需要创建一个名为ens33的目录:
1 |
|
- 这个文件名可以随意取,文件名即最后生成的虚拟网卡名称,如果没有特别需求可以随便取。
- 此处我之所以使用是ens33作为网卡名,是因为我生产环境使用的腾讯云服务器,腾讯云服务器的网卡名称是eth0,而k8s集群calico等网络插件一般默认使用网卡eth.*|ens.*作为网络通信的网卡,所以为了方便配置我自己搭建一个名为ens33的虚拟网卡,这样就可以让集群网络配置更简单简单。
- 当然如果你的默认网卡是ens33,那么你可以使用其他名称,比如eth0、tinc0、myvpn等等。
- 这里的网卡名称请灵活处理。
在ens33目录下,需要创建以下三个文件:
1 |
|
然后需要根据自己需求创建hosts文件,这里我创建文件名为MasterA
的文件,文件内容如下:
1 |
|
- 其他节点的hosts文件通过复制修改创建。
- 因为节点的文件里需要添加进公钥信息。
2.2 配置tinc.conf
在tinc.conf
文件中,需要添加以下内容:
1 |
|
Name
:当前节点名称,告诉tinc当前节点对应hosts的配置文件是哪一个。Interface
:虚拟网卡名称,这个名称就是我们在上面创建的当前网络的目录名称。
2.3 配置tinc-up
在tinc-up
文件中,需要添加以下内容:
1 |
|
INTERFACE
:虚拟网卡名称,这里我直接使用变量$INTERFACE
。IP地址
:这里我使用的是10.10.10.1,这个IP地址是我自己随便取的,只要不和其他网络冲突即可。注意
: 一个tinc网络中,所有节点的IP地址必须是同一个网段
2.4 配置tinc-down
在tinc-down
文件中,需要添加以下内容:
1 |
|
2.5 配置hosts
masterA
中的hosts文件内容如下:
1 |
|
Subnet
:当前节点的IP地址,对应tinc-up
中的IP地址。Address
:当前节点的公网IP地址,这个地址必须是所有节点能连接到的地址,否则无法建立网络。- 关于
Address
的地址需要在有公网IP的机器上配置,没有公网IP的机器不配置。 Port
:Tinc服务所建立通信的端口号,默认是655,这里我修改成1655。ConnectTo
:当前节点需要连接的节点,这里我需要连接所有节点,所以都写上。
2.6 生成私钥Tinc文件
在/etc/tinc目录下,注意修改网络的名称!执行以下命令:
1 |
|
-n
:指定当前网络的名称,这里我使用的是ens33,请换成你自己的名称。-K
:生成私钥文件,这里我使用的是4096位的密钥,可以根据自己的需求进行调整。- 执行命令后,按两次回车将自动在/etc/tinc/ens33文件夹下新增一个私钥文件:
rsa_key.priv
,公钥信息则自动添加到了/etc/tinc/ens33/hosts/MasterA文件了。
2.7 创建全部节点的hosts文件
- 复制MasterA文件,修改文件名为MasterB、MasterC、NodeA、NodeB、NodeC…等。
- 在/etc/tinc/ens33/hosts目录下,创建MasterB、MasterC、NodeA、NodeB、NodeC等节点文件,文件内容和MasterA一样,只是Subnet和Address不同。
- 之所以复制创建是因为公钥信息是自动生成的。
例如masterB
中的hosts文件内容如下,其他hosts文件类似:
1 |
|
2.8 启动Tinc服务
请完成所有hosts文件的创建后,再执行以下命令启动Tinc服务:
请不要直接复制执行,需要根据自己的网络名称修改!
1 |
|
sudo systemctl start tinc@ens33
:启动Tinc服务,这里我使用的是ens33,请换成你自己的名称。sudo systemctl enable tinc@ens33
:设置开机自启动。- 后面是修改开机自启BUG的命令,如果不执行,开机自启动可能会失败,可以先不执行,遇到了在执行。
3. 查看Tinc网络
3.1 查看Tinc网络状态
查看Tinc网络状态:
1 |
|
4. 常见问题
4.1 使用yum等命令安装不了时,可使用rpm等方法进行安装
https://developer.aliyun.com/packageSearch?word=tinc
4.2 重启后服务没有自启动
请浏览2.8中的命令,执行后重启即可。
4.3 无法连接到其他节点,或启动失败
- 请检查tinc文件配置是否正确。
- 每个节点的
tinc-up
和tinc.conf
均需要修改为当前节点的配置。 tinc-up
文件和tinc-down
文件是否有执行权限。- 必须有一台机器有公网IP,进行数据分发。
- 请检查防火墙是否开放了Tinc服务的端口。云服务器需要在安全组中开放端口。
4.4 关于windows客户端和安卓等客户端的配置
windows客户端与安卓客户端的配置,可以参考以下内容:
- Windows 操作系统,通过安装包安装好后,默认会安装到C:\Program Files (x86)\tinc目录。
- 右键用管理员权限打开tap-win64/addtap.bat 运行后,会在网络适配器中看到一个新的适配器,将其重命名为我们规划的名称,例如:ens33。
- 在tinc安装目录创建ens33文件夹,与Linux中的/etc/tinc/ens33文件夹差不多
- 修改
tinc-up
文件名为tinc-up.bat
,修改tinc-down
文件名为tinc-down.bat
- 管理员身份运行cmd,进入tinc安装目录,执行类似命令
tincd.exe --net=ens33
,即可启动服务。
- 安卓客户端第三方下载地址:https://tincapp.pacien.org/
- 打开app,点击右上角扳手图标,然后在工具里选择
生成节点配置和秘钥
- 创建后,会自动在/storage/emulated/0/Android/data/org.pacien.tincapp/files目录下生成跟linux差不多的文件夹
- 修改配置文件后,返回Tinc App主页,点击网络名称即可连接该网络。