使用tinc实现网状网VPN两两通信(类似TeamViewer方式)
Tinc可以解决带宽不足或是中心服务器位置偏远等问题,因为一旦组成VPN后节点间的通信尽可能的不通过中心服务器,而是点对点通信。这一切的实现只需要一个具有公网IP(即使是动态IP)的中心服务器即可。
服务端(必须具有公网IP):
$ sudo yum install epel-release
$ sudo yum install tinc
后者:
$ sudo apt-get install tinc
建立配置文件目录:
$ sudo mkdir /etc/tinc/
这里的MAXSHU为网络名,可以多个,后面客户端就是接入该网络,tincd启动时带-n参数指定使用哪个网络:
$ sudo mkdir /etc/tinc/MAXSHU
用来保存该网络下的主机配置:
$ sudo mkdir /etc/tinc/MAXSHU/hosts
$ cd /etc/tinc/MAXSHU
生成密钥文件:
$ sudo tincd -n MAXSHU -K
Please enter a file to save private RSA key to [/etc/tinc/MAXSHU/rsa_key.priv]: 回车
Please enter a file to save public RSA key to [/etc/tinc/MAXSHU/hosts/MAXSHU]: /etc/tinc/MAXSHU/hosts/rsa_key_MAXSHU.pub
$ sudo cat rsa_key.priv
$ sudo cat hosts/rsa_key_MAXSHU.pub
增加配置文件:
$ sudo vi tinc.conf
Name = MAXSHU
注意下面的Address必须是公网IP地址,subnet地址必须是具体的ip地址(由该地址所在网络组成一个单独的VPN网络,服务端和客户端都在该网段),掩码必须32位,不能是子网。
$ sudo vi hosts/MAXSHU
Address = 112.74.xxx.yyy
Subnet = 10.101.0.1/32
Port = 655
TCPonly = yes
PublicKeyFile = /etc/tinc/MAXSHU/hosts/rsa_key_MAXSHU.pub
增加脚本,注意地址和上面的Subnet一致:
$ sudo vi tinc-up
#!/bin/sh
ifconfig $INTERFACE 10.101.0.1 netmask 255.255.255.0
$ sudo vi tinc-down
#!/bin/sh
ifconfig $INTERFACE down
$ sudo chmod +x tinc-*
启动(注意,必须把客户端hosts目录下的172_xxx这类配置文件和rsa_key_172_xxx.pub拷贝到本地的/etc/tinc/MAXSHU/hosts/目录下,如果是windows客户端,记得修改拷贝过来的172_xxx文件的PublicKeyFile的目录为linux格式):
$ sudo systemctl start tinc
$ sudo systemctl status tinc
$ sudo systemctl enable tinc
老版本启动:
$ sudo vi /etc/tinc/nets.boot
MAXSHU
$ sudo systemctl start tinc@MAXSHU
$ sudo systemctl status tinc@MAXSHU
$ sudo systemctl enable tinc@MAXSHU
有新客户端加入时,把客户端配置文件拷贝到服务端后,服务端不需要重启。
客户端Linux:
$ sudo yum install epel-release
$ sudo yum install tinc
或者:
$ sudo apt-get install tinc
建立配置文件目录:
$ sudo mkdir /etc/tinc/
这里的MAXSHU为即将接入的服务端网络名,后面客户端就是接入该网络,tincd启动时带-n参数指定使用哪个网络:
$ sudo mkdir /etc/tinc/MAXSHU
用来保存该网络下的主机配置:
$ sudo mkdir /etc/tinc/MAXSHU/hosts
$ cd /etc/tinc/MAXSHU
生成密钥文件:
$ sudo tincd -n MAXSHU -K
Please enter a file to save private RSA key to [/etc/tinc/MAXSHU/rsa_key.priv]: 回车
Please enter a file to save public RSA key to [/etc/tinc/MAXSHU/host/MAXSHU]: /etc/tinc/MAXSHU/hosts/rsa_key_172_18_1_15__10_101_0_2.pub
$ sudo cat rsa_key.priv
$ sudo cat hosts/rsa_key_172_18_1_15__10_101_0_2.pub
增加配置文件:
$ sudo vi tinc.conf
Name = 172_18_1_15__10_101_0_2
ConnectTo = MAXSHU
$ sudo vi hosts/172_18_1_15__10_101_0_2
Subnet = 10.101.0.2/32
Port = 655
TCPonly = yes
PublicKeyFile = /etc/tinc/MAXSHU/hosts/rsa_key_172_18_1_15__10_101_0_2.pub
增加脚本,注意地址和上面的Subnet一致:
$ sudo vi tinc-up
#!/bin/sh
ifconfig $INTERFACE 10.101.0.2 netmask 255.255.255.0
$ sudo vi tinc-down
#!/bin/sh
ifconfig $INTERFACE down
$ sudo chmod +x tinc-*
启动(注意,必须把服务端hosts目录下的MAXSHU文件和rsa_key_MAXSHU.pub拷贝到本地的/etc/tinc/MAXSHU/hosts/目录下):
$ sudo systemctl start tinc@MAXSHU
$ sudo systemctl status tinc@MAXSHU
$ sudo systemctl enable tinc@MAXSHU
老版本启动:
$ sudo vi /etc/tinc/nets.boot
MAXSHU
$ sudo systemctl start tinc@MAXSHU
$ sudo systemctl status tinc@MAXSHU
$ sudo systemctl enable tinc@MAXSHU
客户端Windows:
进入安装后的目录:C:\Program Files (x86)\tinc\
然后类似linux下操作:
建立C:\Program Files (x86)\tinc\MAXSHU\ 和 C:\Program Files (x86)\tinc\MAXSHU\hosts\ 目录。
以管理员方式在DOS下生成密钥:
> cd C:\Program Files (x86)\tinc\MAXSHU
>..\tincd.exe -n MAXSHU -K
Please enter a file to save private RSA key to [C:\Program Files (x86)\tinc/MAXSHU/rsa_key.priv]: 回车
Please enter a file to save public RSA key to [C:\Program Files (x86)\tinc/MAXSHU/hosts/maxshu_notebook__10_101_0_3]: C:\Program Files (x86)\tinc/MAXSHU/hosts/rsa_key_maxshu_notebook__10_101_0_3.pub
在C:\Program Files (x86)\tinc\MAXSHU\ 目录建立 tinc.conf 文件,内容如下:
Name = maxshu_notebook__10_101_0_3
Interface = tincItf
ConnectTo = MAXSHU
在C:\Program Files (x86)\tinc\MAXSHU\hosts\ 目录建立 maxshu_notebook__10_101_0_3 文件,内容如下:
Subnet = 10.101.0.3/32
Port = 655
TCPonly = yes
PublicKeyFile = C:\Program Files (x86)\tinc/MAXSHU\hosts\rsa_key_maxshu_notebook__10_101_0_3.pub
建立tap设备:
进入 C:\Program Files (x86)\tinc\tap-win64\ 目录,以管理员方式运行 addtap.bat 批处理文件,成功后在控制面板的网络连接能看到多了一个”TAP-Win32 Adapter V9″类型的网卡。
修改上面网卡的名称为tinc.conf里面的Interface名称tincItf。
然后右键网卡,在弹出的属性里面设置TCP/IP V4的地址为maxshu_notebook__10_101_0_3里面Subnet定义的ip地址和掩码(注意windows掩码不能是32位了,可以24位,网关和DNS可以留空)。
启动(注意,必须把服务端hosts目录下的MAXSHU文件和rsa_key_MAXSHU.pub拷贝到本地的C:\Program Files (x86)\tinc\MAXSHU\hosts\目录下):
管理员方式在DOS下执行:
> cd C:\Program Files (x86)\tinc\
> tincd.exe -n MAXSHU
会自动生成一个tinc.MAXSHU服务,任务管理器入口可以看到。
测试:
相互能ping通。
> ping 10.101.0.1
> ping 10.101.0.2
> ping 10.101.0.3