本章节主要讨论如何在debian和openwrt中安装和启动tinc。关于如何配置tinc,将在下一章节详细讨论。

安装

  • debian

    $ sudo apt-get update && sudo apt-get install tinc
  • openwrt

    # opkg update && opkg install tinc

启动

  • debian

    修改启动参数

    $ sudo echo "EXTRA="--debug=3"" > /etc/default/tinc
    $ sudo echo "<network id>" >> /etc/tinc/nets.boot
    说明
    1. debian跟其它发行版不同,喜欢在/etc/default中放守护进程的运行参数。默认情况下,tinc的log级别为1,当需要更详细的日志信息时,可以通过EXTRA="--debug=3"参数来提升级别。日志输出到/var/log/syslog中。也可以通过"--logfile"将log重定向到/var/log/tinc.<network id>.log中,但奇怪的是,tinc仍会将一份log写到`/var/log/syslog`,可能是一个bug。

    2. debian package还提供了一个/etc/tinc/net.boots的控制文件,当用户需要开启某个vpn进程时,需要将该vpn进程的network id添加到该文件中。

    最后启动tinc

    $ sudo /etc/init.d/tinc start
  • openwrt

    openwrt package附送了一个tinc.initd的启动脚本,然而只能识别uci配置,由于tinc涉及到的配置文件较多,因而我决定采用文本配置方式,tinc.initd就不适用了,所以还得另行创建一个启动脚本。

    $ sudo mv /etc/init.d/tinc /etc/init.d/tinc.orig
    $ sudo echo <<'EOF' > /etc/init.d/tinc
    $ sudo vim /etc/init.d/tinc
    #!/bin/sh /etc/rc.common
    
    START=46
    STOP=46
    
    start() {
            tincd -n <network id> -d3
    }
    
    stop() {
            killall tincd
    }
    EOF
    全网节点的network id建议保持一致。

    最后启用开机自启动功能:

    $ sudo /etc/init.d/tinc enable

    手工启动的命令是:

    $ sudo /etc/init.d/tinc start

排错

  1. 查看tun0网口

    $ sudo ip addr show tun0
  2. 查看connection

    $ sudo ss -atun | grep 655
  3. 查看log

    $ sudo tail -f /var/log/syslog | grep tinc
  4. 检查对端655端口

    $ sudo telnet <wan ip> 655
  5. ping+tcpdump

    $ sudo tcpdump -nvi tun0 icmp

万事俱备,只欠东风,下面开始深入探讨tinc的三种部署方式