如何在同一机器上运行Tinc VPN的两个或多个网络实例

时间:2020-01-09 10:39:39  来源:igfitidea点击:

如何使用Tinc在同一服务器上创建两个不同VPN的网状网络?
是否可以使用tinc VPN软件在两个主机之间创建多个VPN隧道?

Tinc是一个神话般的,基于网格的VPN。
它可用于在Internet或不安全的LAN或两个云计算机实例上构建安全的加密VLAN。

tinc文档中提到:

为了允许您在一台计算机上运行多个tinc守护程序,例如,如果您的计算机是多个VPN的一部分,则可以为您的VPN分配一个网名。
如果只运行一个tinc守护程序,则不是必需的,它甚至不必在VPN的所有站点上都相同,但是无论如何,建议您选择一个。

我们将假定您在本文档中使用网名。
这意味着您使用-n参数调用tincd,它将为该守护程序分配一个网络名。
这样的效果是,守护程序会将其配置根目录设置为/etc/tinc/netname /,其中netname是-n选项的参数。
您会注意到,它在syslog中显示为tinc.netname。

但是,不一定必须使用-n选项调用tinc。
在这种情况下,网络名称将只是空的,它将照此使用。

tinc现在在/etc/tinc /中而不是/etc/tinc/netname /中查找文件;配置文件应该是/etc/tinc/tinc.conf,并且主机配置文件现在应该在/etc/tinc/hosts /中。

但是强烈建议您使用tinc的此功能,因为它将更加清楚地与您的守护程序与之对话。
因此,我们假设您使用它。

按照我的tinc配置说明,设置两个单独的名为vpn0和vpn1的tinc VPN。
假设您在serverA的/etc/tinc中有两个vpn,如下所示,其中两个VPN的子网不同。
唯一的区别是您需要为每个VPN定义端口。
例如,vpn0将使用端口655,而vpn1将使用656端口号。

VPN#1:/etc/tinc/vpn0/172.16.1.1/32

首先,您必须在/etc/tinc/vpn0/tinc.conf中定义端口

Name = serverA
Device = /dev/net/tun
BindToAddress = 192.168.4.5
AddressFamily = ipv4
Port = 655

接下来,您必须更新/etc/tinc /vpn0/hosts/serverA和/etc/tinc /vpn0/hosts/serverB文件以包含端口号:

$ cat /etc/tinc/vpn0/hosts/serverA

输出示例:

Address = 192.168.4.5
Subnet = 172.16.1.1/32
Port = 655

-----BEGIN RSA PUBLIC KEY----
.....
...
your random key here
....
-----END RSA PUBLIC KEY----
$ cat /etc/tinc/vpn0/hosts/serverB

输出示例:

Subnet = 172.16.1.2/32
Port = 655

-----BEGIN RSA PUBLIC KEY----
.....
...
your random key here
....
-----END RSA PUBLIC KEY----

VPN#2:/etc/tinc/vpn1/172.16.2.1/32

首先,您必须在/etc/tinc/vpn1/tinc.conf中定义端口

Name = serverA
Device = /dev/net/tun
BindToAddress = 192.168.4.5
AddressFamily = ipv4
Port = 656

接下来,您必须更新/etc/tinc /vpn1/hosts/serverA和/etc/tinc /vpn1/hosts/serverB文件以包含端口号:

$ cat /etc/tinc/vpn1/hosts/serverA

输出示例:

Address = 192.168.4.5
Subnet = 172.16.1.1/32
Port = 656

-----BEGIN RSA PUBLIC KEY----
.....
...
your random key here
....
-----END RSA PUBLIC KEY----
$ cat /etc/tinc/vpn1/hosts/serverB

输出示例:

Subnet = 172.16.1.2/32
Port = 656

-----BEGIN RSA PUBLIC KEY----
.....
...
your random key here
....
-----END RSA PUBLIC KEY----

基本上,您需要为同一服务器上的每个新VPN定义端口。
完成后,更新/etc/tinc/nets.boot,使其同时包含vpn0和vpn1:

$ cat /etc/tinc/nets.boot

输出示例:

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

在服务器上重新启动tinc:$systemctl restart tinc验证:

$ ip r
$ ip a
$ ping ip-of-clientB
$ ping ip-of-serverA
$ ping ip-of-clientA
$ ping ip-of-serverB

确保更新防火墙规则集以允许两个端口号,即655和656。