自动生成配置文件脚本:下载地址
服务端
1.安装tinc
1 | sudo apt install tinc # ubuntu |
2.使用 tinc_config.sh生成配置文件
- 填写vpn名称(Net name)、本节点名称(Host name)、接口名称(Interface)
- 输入1选择服务端(server)
- 填写公网ipv4或者ipv6地址,若没有则留空,但至少填一个
- 填写监听端口
- 输入本机要使用的要组建局域网的ipv4和ipv6地址和掩码位数
- 输入要共享的本机其他网段的个数和要共享的网段地址(需要在其他的客户端上配置响应的路由)
- 生成key时选择路径时默认回车即可
3.启动和停止
- 启动:sudo tincd -n Netname(网络名称)
- 停止:sudo tincd -n Netname(网络名称) -k
4.开机启动
1 | sudo systemctl enable tinc@Netname |
客户端
Linux
1.安装tinc
1 | sudo apt install tinc # ubuntu |
2.使用 tinc_config.sh生成配置文件
- 填写vpn名称(Net name)(和服务端一样)、本节点名称(Host name)、接口名称(Interface)
- 输入0选择客户端(server)
- 填写要连接的服务端的节点名称
- 输入本机要使用的要组建局域网的ipv4和ipv6地址和掩码位数
- 输入要共享的本机其他网段的个数和要共享的网段地址(需要在其他的客户端上配置响应的路由)
- 生成key时选择路径时默认回车即可
3.将/etc/tinc/Netname/hosts/文件夹中本节点名称的文件上传到服务器的相应文件夹中
4.将服务器的配置文件移动到/etc/tinc/Netname/hosts/ 文件夹中
5.启动和停止以及开启启动和服务端相同
windows
1.安装tinc
下载链接:tinc-1.0.36
路径尽量不要有中文,安装时一定要将虚拟网卡选上
2.安装虚拟网卡
- 进入安装目录,进入tap-win64文件夹,使用管理员运行
addtap.bat
添加网卡 - 在网络管理控制面板中更改新添加的虚拟网卡名称,重命名为tinc
- 在网卡属性设置中将ip地址和子网掩码手动设置为本机要使用的局域网ip地址和子网掩码,网关不填
4.将tinc_config.bat移动到安装路径下,运行生成配置文件
- 填写vpn名称(Net name)(和服务端一样)、本节点名称(Host name)
- 填写要连接的服务端的节点名称
- 输入本机要使用的vpn局域网的ipv4和ipv6地址(和linux不一样没有掩码)
- 生成key时选择路径时默认回车即可
5.将安装路径\Netname\hosts文件夹中本节点名称的文件上传到服务器的相应文件夹中
6.将服务器的配置文件移动到安装路径\yournetname\hosts文件夹中
7.在安装路径下生成了start.bat和stop.bat用来启动和停止
客户端如果需要连接到其他主机的所在的其他内网网段则需要配置一条到目的网段的路由,接口是本机的tinc网卡
补充
在开启共享本机其他网段的主机上需要开启IP转发和nat路由转换,已经在生成配置文件中自动设置了,补充一下设置的内容,可以方便后面查看配置
ip转发
修改/proc/sys/net/ipv4/ip_forward文件值为11
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
nat路由转换
1 | sudo iptables -t nat -A POSTROUTING -s tinc局域网网段/24 -j MASQUERADE |
iptables中nat的相关知识
1. PREROUTING
DNAT,将到达本机的数据包要访问的外网地址更改为其他地址再转发出去,比如要把到202.103.96.112的访问转发到192.168.0.112上1
iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112
2. POSTROUTING
SNAT,将要留出本机的数据包的源地址改为本机地址,如将数据的source ip address修改成为58.20.51.66。这样,数据包在达到目的机器以后,目的机器会将包返回到58.20.51.66也就是本机。如果不做这个操作,那么你的数据包在传递的过程中,返回的包就会找不到source ip导致丢失
1 | iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 58.20.51.66 |
假如当前系统的ip是动态获取的,那么每次连接网络本机的ip地址都会改变,SNAT就会有局限性。可以改为使用MASQUERADE,这个就是可以自动获取当前的ip然后使用SNAT将源地址改变再发出去。(中括号是可选项,不加-s则任何数据包都改变源地址,-o是指定网卡)
1 | iptables -t nat -A POSTROUTING [-s 10.0.0.0/24] [-o eth0] -j MASQUERADE |
参考文章