基础使用

  对于普通使用者,快速的搭建起一个能用的安全强度适合的 VPN 是最大的需求。因此,本章节主要讲解基本概念和实践操作。配置内核、编译源代码、甚至交叉编译、高级定制等内容请参考本教程的进阶部分。

预备知识

  • 每个 tinc VPN 必须有个名称,一个 VPN 可以包括很多主机;
  • 每台主机必须有个名称,同时需要运行 tinc,一台主机可以通过运行多个 tinc 实例来加入多个 tinc VPN;
  • tinc 启动时接受参数来指定要启动的网络,并定位到对应的网络配置目录读取配置;
  • 启动后,读取网络配置目录中的主配置文件 tinc.conf,执行启动脚本(tinc-up),然后 ConnectTo 指定的主机,同时接受其他主机对本机的 ConnetTo;
  • tinc 通过读取主机描述文件来获得主机信息,当前主机和 ConnectTo 的目标主机上都必须有双方的主机描述文件;
  • ConnectTo 成功(认证通过),则加入 tinc VPN;
  • 当 tinc 结束的时候,执行关闭脚本(tinc-down);

tinc VPN 名称接受 a-z 0-9 _ 中的字符,主机名称也是一样。

组网步骤

  搭建 tinc VPN 非常快捷,每台主机的设置仅需几步,所有主机重复这套步骤即可:

graph LR A(安装) --> B(配置和交换密钥); B(配置和交换密钥) --> C(运行); C(运行) --> D(检查);
  其中的安装、运行和检查非常简单,各平台的操作大同小异,有个大致的概念就可以了,后继章节有详细的针对各个平台的说明,请参阅实例部分。

  主要需要理解和掌握的是“配置和交换密钥”这部分。

如何配置和交换密钥

  • 配置,就是在 tinc 主配置目录里,按照配置规范,建立好相应的子目录和相应的文件。

  • 交换密钥,就是在网络配置目录中,包含通讯双方的主机描述文件。

  tinc 的配置方式是通过一套目录和其中的文件(以下简称为主配置目录)来完成的,主配置目录中按规范存放一系列子目录和文件。主配置目录默认值为 /etc/tinc (Unix-like OS)或 C:\Program Files\tinc (Windows)。

  主配置目录下,每个子目录是以该目录名为名称的 VPN 网络的配置目录(以下简称为 网络配置目录)。每个网络配置目录,指定了该网络的相关配置。tinc 实例启动时接受参数来指定要启动的网络,并定位到对应的网络配置目录读取配置。

每个网络配置目录中,有以下内容:

  • tinc.conf

  主配置文件,其中的内容指定了该网络下 tinc 的配置 。其中的 Name 说明本主机名称,ConnectTo 指定启动后要自动连接的主机(可以多个)。

  • tinc-uptinc-down

  脚本文件,这两个脚本是在 tinc 启动和关闭该网络时被调用。一般在这个脚本中用 “ifconfig/ipconfig” 等命令来设置虚拟网卡的 IP、路由等网络设置。   如果是 Unix-like 系统,需要有运行权限,如果是 Windows 系统,则需要增加 “.bat”后缀,即 “tinc-up.bat” 和 “tinc-down.bat”。

  • rsa_key.priv

  RSA 私钥文件,存放本主机的 RSA 私钥,这个文件的内容注意保密;

  • hosts 子目录

  主机描述文件存放目录。其中的每一个文件描述了一台主机的信息,文件名与主机名保持一致。

这是我笔记本(notebook)上的主配置目录(注:某些系统可能会有点差异,但差不多,万变不离其宗):

/etc/tinc                (主配置目录)
│
├── home_vpn            (第一个 VPN 的网络配置目录,目录名和网络名保持一致。)
│   ├── hosts
│   │   ├── tinc_ali    (主机 tinc_ali 的描述文件)
│   │   └── notebook    (主机 notebook 的描述文件)
│   ├── rsa_key.priv    (本主机的 RSA 私钥)
│   ├── tinc.conf       (tinc 主配置文件)
│   ├── tinc-down       (当关闭 home_vpn 时,执行该脚本)
│   └── tinc-up            (当启动 home_vpn 时,执行该脚本)
│
└── office_vpn          (第二个 VPN 的网络配置目录,目录名和网络名保持一致。)
    ├── hosts
    │   ├── server      (主机 server 的描述文件)
    │   └── notebook    (主机 notebook 的描述文件)
    ├── rsa_key.priv    (本主机的 RSA 私钥)
    ├── tinc.conf       (tinc 主配置文件)
    ├── tinc-down       (当关闭 office_vpn 时,执行该脚本)
    └── tinc-up         (当启动 office_vpn 时,执行该脚本)

  在这个示例中,主机上共配置了两个 VPN,home_vpn(家庭用) 和 office_vpn(公司用)。这两个网络的配置都是在主配置目录下的一个子目录,子目录名称和网络名称一致。

home_vpn 为例:

tinc.conf

# 说明本主机名称
Name = notebook

# 指定启动时自动连接的主机。
# 可以使用多个ConnectTo来自动连接多个主机。
# 也可以没有,等待其他主机发起连接。
ConnectTo = tinc_ali

tinc-down

#!/bin/sh

# 关闭虚拟网卡
ifconfig $INTERFACE down

tinc-up

#!/bin/sh

# 启用虚拟网卡,并设置其 IP 为 10.0.0.101,子网掩码为 255.255.255.0
ifconfig $INTERFACE 10.0.0.100 netmask 255.255.255.0

hosts/tinc_ali

# tinc_ali 是一台公网机器,公网IP为 111.111.111.111
Address = 111.111.111.111

# tinc_ecs 的 VPN 内部 IP 为 10.0.0.1
# /32 说明其为一台机器而不是子网(普通用户直接用 /32 就可以了)
Subnet = 10.0.0.1/32

-----BEGIN RSA PUBLIC KEY-----
......
......
......
-----END RSA PUBLIC KEY-----

hosts/notebook

# notebook 是移动办公的笔记本,没有公网IP,所以没有 Address 这一行。
# notebook 的 VPN 内部 IP 为 10.0.0.101,这里要和 tinc-up 里面设定的一致。
# /32 说明其为一台机器而不是子网(普通用户直接用 /32 就可以了)
Subnet = 10.0.0.101/32

-----BEGIN RSA PUBLIC KEY-----
......
......
......
-----END RSA PUBLIC KEY-----

  总结一下,其实就是本节开头的话:

  • 所谓配置,就是按照上面的例子建立相应的目录,并在目录中建立相应的文件;
  • 所谓交换密钥,就是确保通讯的双方主机有对方的公钥,而公钥存放在主机描述文件中。

  文笔有限,可能看到这里您还是有点模糊。不要紧,有了基本的概念和知识,跟着我一起规划和搭建一次 tinc VPN。先不求甚解,依葫芦画瓢,实用优先,然后再求其索。

results matching ""

    No results matching ""