tinc

来自 ArchWiki

此文章或章节需要扩充。

原因: 解释(或链接到)网络基础知识、tun/tap 设备,... 以便更好地理解。添加如何扩展配置以添加另一个主机的说明。(在 Talk:Tinc 中讨论)

此文章或章节需要语言、wiki 语法或风格改进。参见 Help:Style 以供参考。

原因: 参见 Help:Style 及相关内容。(在 Talk:Tinc 中讨论)

tinc 是一个虚拟专用网络 (VPN) 守护进程,它使用隧道和加密技术在 Internet 上的主机之间创建安全的私有网络。

安装

安装 tinc 软件包。

配置私有网络

在本例中,我们将创建两个主机 alphabeta 之间的虚拟专用网络 vpnname,其中前者是后者的入口点,以便 beta 在启动时尝试连接到 alpha

对于每个虚拟专用网络,您都必须创建一个单独的目录 /etc/tinc/vpnname

您也可以从复制示例配置开始

# cp -r /usr/share/tinc/examples/* /etc/tinc/vpnname

在 /etc/tinc/vpnname/tinc.conf 中,您指定主机名(可以与系统的实际主机名不同)和 tun/tap 设备的位置。

alpha 的配置

/etc/tinc/vpnname/tinc.conf
Name = alpha
Device = /dev/net/tun
/etc/tinc/vpnname/tinc-up
#!/bin/sh
ip link set $INTERFACE up
ip addr add  192.168.0.1/24 dev $INTERFACE
/etc/tinc/vpnname/tinc-down
#!/bin/sh
ip addr del 192.168.0.1/24 dev $INTERFACE
ip link set $INTERFACE down

tinc-uptinc-down 需要设置为可执行

beta 的配置

/etc/tinc/vpnname/tinc.conf
Name = beta
Device = /dev/net/tun
ConnectTo = alpha
/etc/tinc/vpnname/tinc-up
#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.0.2/24 dev $INTERFACE
/etc/tinc/vpnname/tinc-down
#!/bin/sh
ip addr del 192.168.0.2/24 dev $INTERFACE
ip link set $INTERFACE down

tinc-uptinc-down 需要设置为可执行

设置主机

不同主机的配置文件存储在 /etc/tinc/vpnname/hosts/ 目录中。在本例中,我们需要每台机器上的两个文件。

/etc/tinc/vpnname/hosts/alpha
Address = 10.0.0.1
Port = 655
Subnet = 192.168.0.1/32
/etc/tinc/vpnname/hosts/beta
Port = 655
Subnet = 192.168.0.2/32

为每个主机创建文件后,您必须使用以下命令生成密钥对

# tincd -n vpnname -K

这会在 /etc/tinc/vpnname/tinc.rsa_key.priv 中创建私钥,并在相应的 host-file 中创建公钥。

在最后一步中,您需要交换主机配置文件,以便在每台主机上的 /etc/tinc/vpnname/hosts/ 中同时拥有 alpha 和 beta。

启动私有网络

/etc/tinc/vpnname 中创建适当的配置后,您可以使用以下命令测试新的私有网络

# tincd -n vpnname

如果您希望在启动时启动它,您可以启用 tinc@vpnname.service

使用 TAP 设备和桥接

有时使用 TAP 设备而不是 TUN 设备是合理的。例如,如果您想将 tinc 设备添加到已有的桥接中。只需将“Mode”选项添加到您的 tinc.conf 中即可。

请记住在每台主机上都这样做。

/etc/tinc/vpnname/tinc.conf
Name = node
Mode = switch
Device = /dev/net/tun
ConnectTo = other

可能的 tinc-up/down 文件可能如下所示

/etc/tinc/vpnname/tinc-up
#!/bin/sh
ip link set $INTERFACE up
brctl addif br0 $INTERFACE
/etc/tinc/vpnname/tinc-down
#!/bin/sh
brctl delif br0 $INTERFACE
ip link set $INTERFACE down

最后重启您的 tinc 守护进程:tinc@vpnname.service

在启动时自动启动 Tinc

可以将 Tinc 配置为使用 systemd 单元在启动时自动启动。

如果您希望能够一次启动、停止或重新加载所有网络,则必须启用 tinc.service

然后,对于您要自动启动的每个网络,分别启用它(例如,tinc@vpnname.servicetinc@another_vpnname.service 等...)

故障排除

我更新了系统,现在 tinc 无法启动。

如果发生 linux 内核更新,您必须重新启动系统或重新安装正在运行的内核软件包。

我正在运行自定义内核,并且 tinc 无法启动。

确保您已启用 TUN/TAP 支持

参见