1. 核心主机 / Ubuntu Server 16.04
本节我们将配置核心主机,这是一台购买的阿里云主机。这台核心主机的 tinc 作为服务自动启动,启动后等待其他主机来连接,其他所有的主机都配置为主动连接核心主机。核心主机负责处理其他主机的认证和必要的中继转发。
详细配置与 VPN 设置:
项目 | 数据 |
---|---|
硬件配置 | 1核 1GB 20G云盘 |
带宽流量 | 固定带宽 1m/s |
操作系统 | Ubuntu 16.04 |
公网 IP | 111.111.111.111 |
内网 IP | 222.222.222.222 |
VPN 网络名称 | home_vpn |
VPN 主机名称 | tinc_ali |
VPN IP | 10.0.0.254 |
VPN 子网掩码 | 255.255.255.0 |
VPN CIDR | 10.0.0.254/24 |
tinc 端口 | 655(默认) |
注意:云主机一般都配有防火墙(默认可能没有开放 655 端口)。您需要打开 TCP/UDP 协议的 655 端口以供 tinc 使用。具体请参阅阿里云或者您提供商的文档。
安装 tinc
登录服务器,进入终端。阿里云的安装镜像不是最新的,建议先将系统升级到最新状态。下面的这行命令将更新软件列表,升级到最新版本并自动删除不再使用的软件包:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
然后安装 tinc:
sudo apt-get install tinc -y
好了,安装完成。tinc 的默认主配置目录为 /etc/tinc,现在这个目录里面只有一个文件 nets.boot。
>which tincd
/usr/sbin/tincd
>tincd --version
tinc version 1.0.26 (built Jul 5 2015 23:17:56, protocol 17)
Copyright (C) 1998-2015 Ivo Timmermans, Guus Sliepen and others.
See the AUTHORS file for a complete list.
tinc comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions;
see the file COPYING for details.
>ls /etc/tinc
nets.boot
>cat /etc/tinc/nets.boot
## This file contains all names of the networks to be started on system startup.
创建配置文件
1.建立网络配置目录(网络名称为 home_vpn):
sudo mkdir -p /etc/tinc/home_vpn/hosts
2.建立配置文件 tinc.conf
sudo vi /etc/tinc/home_vpn/tinc.conf
编辑 tinc.conf 内容如下:
Name = tinc_ali
由于本主机为核心主机,只负责等待和认证其他主机的连接。因此,本主机没有配置 ConnectTo。
3.建立启动和关闭脚本 创建启动脚本 tinc-up
sudo vi /etc/tinc/home_vpn/tinc-up
编辑 tinc-up 内容如下:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.254 netmask 255.255.0.0
创建启动脚本 tinc-down
sudo vi /etc/tinc/home_vpn/tinc-down
编辑 tinc-down 内容如下:
#!/bin/sh
ifconfig $INTERFACE down
赋予脚本可执行权限:
sudo chmod +x /etc/tinc/home_vpn/tinc-up
sudo chmod +x /etc/tinc/home_vpn/tinc-down
4.创建本主机描述文件(网络名称为 tinc_ali)
sudo 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)即可。命令执行过程中,需要指定文件名,不用管直接两次回车用默认值即可。
sudo tincd -n home_vpn -K
运行完成以后,会生成私钥文件 /etc/tinc/home_vpn/rsa_key.priv,并在本主机的描述文件中增加公钥。
查看私钥文件:
cat /etc/tinc/home_vpn/rsa_key.priv
/etc/tinc/home_vpn/rsa_key.priv 内容类似下面这样,“-----BEGIN RSA PRIVATE KEY-----” 和 “-----END RSA PRIVATE KEY-----” 之间是本机私钥,这个文件的内容注意保密不要泄露。
-----BEGIN RSA PRIVATE KEY-----
...
...
...
-----END RSA PRIVATE KEY-----
查看本主机描述文件内容:
cat /etc/tinc/home_vpn/hosts/tinc_ali
可以看到这个文件的内容发生了变化。在原来编辑的两行后增加了 “-----BEGIN RSA PUBLIC KEY-----” 和 “-----END RSA PUBLIC KEY-----” 之间的内容,这段内容是本主机的公钥。
Address = 111.111.111.111
Subnet = 10.0.0.254/32
-----BEGIN RSA PUBLIC KEY-----
...
...
...
-----END RSA PUBLIC KEY-----
注:如果您正在设置您的主机,请记得将上面 111.111.111.111 修改为您主机的公网 IP。
交换密钥
由于我们这里配置的是 VPN 里第一台主机,还没有其他主机连接进来。所以交换密钥先略过了,等后面加入其他主机的时候再进行。
设为自启
Ubuntu 中,安装了 tinc 软件包即安装了 tinc 服务。系统启动后会自动运行这个服务,其读取 /etc/tinc/nets.boot 的内容来确定启动哪些 VPN。也就是说,如果想自动启动某个 VPN,只需将编辑该文件,加入 VPN 的网络名称即可。这样每次机器重启后会自动启动 home_vpn。也可以 sudo service tinc start、sudo service tinc stop 等命令来手工控制服务。
编辑/etc/tinc/nets.boot:
sudo vi /etc/tinc/nets.boot
在文件末尾加上一行:
home_vpn
重启系统:
sudo reboot
重启完成后,可以用下列命令来查看进程:
ps -efa | grep tinc
测试
由于我们这里配置的是 VPN 里第一台主机,还没有其他主机连接进来。所以测试先略过了,等后面加入其他主机的时候再进行。
现在,我们可以先 ping 自己,看看虚拟网卡是否已经启动并绑定了指定的地址:
ping -c 5 10.0.0.254
完成
核心主机的安装配置过程大概就是这样。由于是第一台主机,所以交换密钥和测试都略过了。截止目前,我们拥有了第一台 tinc VPN 主机。这台主机暂时孤独的运行在互联网上,等待其他 VPN 主机的连接。