最近在折腾内网穿透。frp比较简单,但是每加一个端口需要改下配置文件不太方便,
搜索了一下,tinc能满足我现阶段的所有要求,而且配置比较简单,就是它了。
下面记录一下最简最快速的配置流程:

说明

server是国内的nat vps,拥有一个外网端口。
内网ip段为 10.0.7.0/24
server ip为10.0.7.1, 其它机器序号末位递增

流程

安装tinc

apt install tinc

/etc/tinc创建一个网络名称文件夹

cd /etc/tinc
mkdir messnet

/etc/messnet下面按照如下方式创建文件夹

root@debian:/etc/tinc# tree
.
├── messnet
│   ├── hosts
│   │   ├── server
│   │   └── shnas
│   ├── rsa_key.priv
│   ├── tinc.conf
│   ├── tinc-down
│   └── tinc-up
└── nets.boot

编辑 tinc.conf

Name = server
AddressFamily = ipv4
BindToAddress = * ${your port}
Interface = tun0
Device = /dev/net/tun

编辑hosts/server文件

Address = ${your ip} ${your port}
Subnet = 10.0.7.1/32

生成密钥

tincd -n messnet -K4096

该操作会生成rsa_key.priv,然后在hosts/server末尾append 公钥。

为客户端生成一份hosts,可以直接复制hosts/server

cd hosts
cp server client
# 去掉client的配置文件中的Address
# 修改Subnet对应的ip,简单递增即可

这么修改之后,其实客户端、服务端的公私钥用的是同一个,虽然有些不规范,但是非常方便省时间!

编辑tinc-uptinc-down文件

# tinc-up
#!/bin/sh
ifconfig $INTERFACE 10.0.7.1 netmask 255.255.255.0

#tinc-down
#!/bin/sh
ifconfig $INTERFACE down

# 权限
chmod a+x tinc-*

启动

#调试启动
tincd -n messnet -D --debug=3
#正常启动
tincd -n messnet

配置客户端

安装tinc
复制所有的配置文件到客户端

客户端配置文件修改

Name = ${client name}
AddressFamily = ipv4
Interface = tun0
Device = /dev/net/tun
ConnectTo = server

客户端修改tinc-uptinc-down,和自己ip保持一致
启动客户端~

成功之后应该可以使用内网ip访问服务端了。
配置多个客户端之后,客户端之间也可以相互访问,非常方便!

参考链接

  1. https://zimiao.moe/posts/53555/
  2. https://imlonghao.com/46.html
  3. https://blog.zjustin.me/post/tinc-memo/
  4. https://www.yiwan.pro/index.php/ltd_documents/422-tinc-vpn-config-memorandum.html

其实选择的时候也尝试配过openvpn,不过不太好用,如果不希望外网流量也走vpn,需要配置相应的规则,比较麻烦
而且在配置好openvpn之后,遇到几分钟后tcp reset的问题,两台机器都在国内,有点坑。
搭建openvpn可参考下面链接,还蛮详细的。

  1. http://onion-liu.github.io/2016/02/03/vps-openvpn-config.html
  2. https://lingchu.me/post/132.html
  3. https://lingchu.me/post/136.html