用 tinc 组建局域网其实也简单

一直以来用n2n习惯了,觉得非常简单,一行代码就全搞定了。偶尔也尝试过 tinc 的布置,但是一看教程,都是代码帝,跟着跟着就跟丢了,失败了,也就兴趣全没了。这几天比较闲,受朋友们推荐,说这玩意儿好,有人在维护,稳定,又比较容易直连,。。。所以,为了弄清事实真相,那就必须亲自尝试一番。我是先配置通过了,然后删除以前的配置,再重新开始新的尝试,边实践边写下此教程的。你可以完全照搬里面的代码,走通了后再修改成自己的。 硬件情况及约定:要建立 tinc ,你必须要有一台具有公网 IP 的计算机(作服务器),并且要保证能实现端口转发(映射)到这台计算机(默认端口为 655)。这里我们共有 3 台机器:一台是装有 ubuntu-16.04-x86_64 的搬瓦工,我们给它取名 bwh1(其外网IP为12.181.40.118,tinc内网IP为10.0.1.1,它可以做服务器);一台带 linux 精简系统的群晖 212j(tinc内网IP为10.0.1.2);另外一台是群晖 213j(tinc内网IP为10.0.1.3)。三台机器的名字分别为 bwh1、212j、213j 如下。以#开头的是注释,#及后面的内容都可以删除,下同。

bwh1 10.0.1.1 12.181.40.118    # 做服务器
212j 10.0.1.2                  # 没有外网IP,一般机器
213j 10.0.1.3                  # 一样,一般机器

我们的目标是:通过带有外网IP的搬瓦工,实现这 3 台机器之间的互通互联,其实主要是为了实现没有公网IP的 212J 与 213J 之间的互通互联。实际上,在网络状况好的时候,212J 与 213J 可以直连通讯,不好的时候它们之间要通过搬瓦工 bwh1 来转发。 软件情况:请准备 winscp、putty、EditPlus,有了它们,我们就可以脱离代码帝,实现复制粘贴再加简单修改就可以了。 然后说说 tinc 的文件结构:以 bwh1 为例,下面的每行最后一个名字代表一个文件,前面的都是文件夹,假设我们要组建的局域网名字叫 hello,bwh1 上的文件结构如下(windows7 的都在 C:\Program Files\tinc 下)

etc__tinc__nets.boot               #(1)
       |___hello__rsa_key.priv     # 这个文件是后面使用命令自动产生的,不是手工编辑出来的
             |____tinc.conf        #(2)
             |____tinc-up          #(3)
             |____tinc-down        #(4)
             |____hosts____bwh1    #(5)此文件夹下最初只有这一个,但最后其他机器的也需放入
usr__sbin__tincd                   # 主程序,也不是手工编辑出来的

在后面标注了 1、2、3、4、5 的文件,都可以用 EditPlus 在本地计算机上产生,然后使用 winscp 上传到对应的机器上去即可。rsa_key.priv 是使用命令自动建立的,在生成这个文件的同时,bwh1 这个文件也会被追加 key 代码。 打开EditPlus,选择 文件--新建--标准文本,粘贴一些文本以后,再选择 文件--另存为,填写对应文件名,保存类型 All files (*.*)。第一个文件为 nets.boot,其中内容如下(填入局域网的名字hello)

##This file contains all names of the networks to be started on system startup.
hello

在本地按照上面的目录结构,我们来创建一个 tinc 的文件夹,在该文件夹下,我们放入第一个文件 nets.boot,然后在 tinc 文件夹下再创建一个 hello 的文件夹(局域网名字是什么就用什么文件夹名,本例为 hello) 使用 EditPlus 创建第二个文件 tinc.conf。

Name=bwh1
Interface=tun0
Mode=switch

tinc.conf 是 TINC VPN 的一个关键参数,设置好、CPU也好的话,可以跑满你的带宽,所以非常重要。下面做一些说明(许多是可选):

Name = bwh1     # 主机名称
Interface = tun0 # 为网卡名,任意的英文数字皆可
Port = 655         # 默认的通讯端口是 655。如果改成其他的端口,需要在所有机器上增加这一条,并且在 hosts 下也要全加
Mode = switch   # 有三种模式,分别是 router / switch / hub ,相当于路由、交换机、集线器,默认为 router
KeyExpire = 3600
Compression = 0   # 0~11,11是数据快速压缩 0关闭数据压缩 机器cpu配置高选择开启
PingInterval = 10
Digest = sha512   # rsa 加密协议强度 可以选 sha128 sha1
Cipher = aes-128-cbc   # 加密类型,默认的是blowfish,较慢。可以指定任意一个 OpenSSL 所支持的加密算法,
         建议用aes加密,支持硬件加密、速度快、强度高。又如 aes-256-cbc
PMTU = 1460       # 这个非常关键 需要测试你网络运行商的 mtu 值,请搜索
ReplayWindow = 16
IndirectData = no
TCPOnly = no
ProcessPriority = high

第三个文件为tinc-down,其内容为

ifconfig $INTERFACE down

第四个文件为tinc-up,其内容为(内网 IP 地址按照上面的约定来,为 10.0.1.1)

ifconfig $INTERFACE 10.0.1.1 netmask 255.255.255.0

在 hello 文件夹下再创建 hosts 文件夹 第五个文件为 bwh1,其内容如下。tinc内网 IP 地址是 10.0.1.1,外网IP地址是 12.181.40.118(可以用域名),放入 hosts 文件夹下(不做服务器的机器没有第一行)

Address=12.181.40.118
Subnet=10.0.1.1/32

第一台机器 bwh1 的文件就这样创建好了。我们现在使用 putty 软件来登录 bwh1,先使用下面的命令来安装 tinc

apt-get install tinc

没什么出错就算安装好了(成功后显示的代码我就不贴了)。可以

(用 winscp 软件)在 /usr/sbin/ 下看到 tincd 这个文件 然后用 winscp 软件把刚才创建的 tinc 目录带文件全部上传到 bwh1 的 etc 目录下面去,并修改 tinc-up 和 tinc-down 的文件属性为 0755(鼠标放文件上,按右键,选属性,即可修改)。至此,bwh1 前期工作算是准备好了,以后也可以在 winscp 窗口下按右键弹出 编辑 对某些文件进行修改。 输入以下代码回车回车再回车,密码文件就自动生成好了。这时你打开 /etc/tinc/hello 文件夹,会看到多了一个 rsa_key.priv 文件(属性为0600),再以编辑的方式打开 /etc/tinc/hello/hosts/bwh1(属性为0644),会发现文件的后面多了一些 key 代码,把这个新的 bwh1 文件下载到本地的 目录 A 下备用。

tincd -n hello -K4096

在 putty 中输入以下代码启动调试模式(可以通过 Ctrl+\ 来终止)

tincd -n hello -D --debug=3

看到一个 Ready 结尾的代码就算启动好了,将 putty 这个调试界面保持在这里不动


71.88%(23)

28.13%(9)
1 2 3下一页
发表评论?

6 条评论。

  1. 眼睛会了,手不会啊

  2. tinc也能实现多个子网同时开,相当于n2n的小组,只不过tinc不能匿名访问核心节点,即便是同时开多个tinc实例构建多个网,也需要其他节点受邀加入,而且作为核心节点的机器是不是还要加多个虚拟网卡呢,如果每一个网都要绑一个虚拟卡,会不会出问题

  3. 增加几点认识:
    1、新加入的主机,好像不需把新生成的hosts下文件拷贝到所有主机上去,只需拷贝到你要注册的服务器上去即可(以使能加入Tinc网络);
    2、一切设置好以后,可以简单的修改本机的Tinc内网IP地址,重新启动后也能正常工作。

  4. 请问群晖怎么安装tinc

回复给 木马木马 ¬
取消回复

*