使用 Tinc VPN 实现远程办公

avatar 2019年11月6日07:43:20来源:Howard使用 Tinc VPN 实现远程办公已关闭评论

Tinc VPN 是一个网状结构的虚拟局域网软件,基于P2P的技术,可以实现流量直接到达目标机器,而不像传统 VPN 那样必须经过中间的服务端。适合连接的两个机器速度快于到服务器的速度的情况。比如你有个国外的慢速VPS,Tinc 可以让你从家流畅地连接到公司内网的机器,这个外网VPS在连接成功后就不再有流量通过(?)。
与 Tinc 类似地还有比较有名的 ZeroTier,是个商业软件,不用安装服务器端,直接使用,免费连接100个机器。

本文以 Ubuntu 16.04 系统为客户端和服务端。对于 Windows ,安装方法参考官网文档

系统设置

参考,并设置名称、网段和端口

安装 Tinc

sudo apt-get install udev tinc
各个机器安装完成会出现虚拟网卡 /dev/net/tun

配置服务端

  1. 编辑 /etc/tinc/nets.boot,添加:
    myvpn
  2. 新建 /etc/tinc/myvpn/tinc.conf,内容:
    Name = main
    Device = /dev/net/tun
  3. 新建 /etc/tinc/myvpn/tinc-up,内容:
    #!/bin/sh
    ip link set $INTERFACE up
    ip addr add 192.168.100.1/32 dev $INTERFACE
    ip route add 192.168.100.0/24 dev $INTERFACE
  4. 创建 /etc/tinc/myvpn/tinc-down,内容:
    #!/bin/sh
    ip route del 192.168.100.0/24 dev $INTERFACE
    ip addr del 192.168.100.1/32 dev $INTERFACE
    ip link set $INTERFACE down
  5. 添加执行权限,命令:
    chmod +x /etc/tinc/myvpn/tinc-up
    chmod +x /etc/tinc/myvpn/tinc-down
  6. 新建 /etc/tinc/myvpn/hosts/main,内容:
    Address = <服务器外网地址>
    Port = 655
    Subnet = 0.0.0.0/0
  7. 生成密钥,命令:
    tincd -n myvpn -K

配置客户端

  1. 编辑 /etc/tinc/nets.boot,添加:
    myvpn
  2. 新建 /etc/tinc/myvpn/tinc.conf,内容:
    Name = client
    Device = /dev/net/tun (Windows 要改成 Interface=)
    ConnectTo = main
  3. 新建 /etc/tinc/myvpn/tinc-up,内容:
    #!/bin/sh
    ip link set $INTERFACE up
    ip addr add 192.168.100.100/32 dev $INTERFACE
    ip route add 192.168.100.0/24 dev $INTERFACE
  4. 创建 /etc/tinc/myvpn/tinc-down,内容:
    #!/bin/sh
    ip route del 192.168.100.0/24 dev $INTERFACE
    ip addr del 192.168.100.100/32 dev $INTERFACE
    ip link set $INTERFACE down
  5. 添加执行权限,命令:
    chmod +x /etc/tinc/myvpn/tinc-up
    chmod +x /etc/tinc/myvpn/tinc-down
  6. 新建 /etc/tinc/myvpn/hosts/client,内容:
    Port = 655
    Subnet = 192.168.100.100/32
  7. 生成密钥,命令:
    tincd -n myvpn -K

互换服务器和客户端密钥文件

复制服务器上的/etc/tinc/myvpn/hosts/main到客户端的/etc/tinc/myvpn/hosts/
复制客户端的/etc/tinc/myvpn/hosts/client到服务器上的/etc/tinc/myvpn/hosts/

新版本可能需要设置 service

mv /lib/systemd/system/[email protected] /lib/systemd/system/[email protected]
systemctl enable [email protected]
重启

测试结果

配置完毕重启后,用命令 ifconfig 查看新的网卡和地址,服务器和客户端相互 ping 来查看是否通过。

调试

tincd -n myvpn -d5 -D

avatar