tinc
tinc 是一个虚拟专用网络 (VPN) 守护进程,它使用隧道和加密技术在 Internet 上的主机之间创建安全的私有网络。
安装
配置私有网络
在本例中,我们将创建两个主机 alpha 和 beta 之间的虚拟专用网络 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-up
和 tinc-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-up
和 tinc-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.service
、tinc@another_vpnname.service
等...)
故障排除
我更新了系统,现在 tinc 无法启动。
如果发生 linux 内核更新,您必须重新启动系统或重新安装正在运行的内核软件包。
我正在运行自定义内核,并且 tinc 无法启动。
确保您已启用 TUN/TAP 支持。