内网穿透记录


 

第一篇文章,也可能是最后一篇文章,懒人一个,随便写写

开局一张图,内容全靠编系列

 

 

 

tinc篇

官网: https://www.tinc-vpn.org

 

网段划分 

openwrt 10.10.0.1/32  路由器 (路由器lan段192.168.10.x)
aliyun 10.10.0.2/32 106.15.3x.xxxx   公网机器,p2p打洞实现不了的时候可以转发,理论上转发应该也可以无视运营商的qos
pc1 10.10.0.3/32  windows系统
手机  10.10.0.4/32  安卓系统,tinc是有安卓客户端的

 

环境:centos8 aliyun公网机器

版本:tinc-1.0.36-2.el8.x86_64

 

#1 开启内核转发
vim /etc/sysctl.conf  #centos6
cd /etc/sysctl.d  #centos7
vim /etc/sysctl.d/99-sysctl.conf  #centos8
net.ipv4.ip_forward = 1
sysctl -p

 

# 更新yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

 

# 列出yum源
yum list tinc

 

# 安装
yum install tinc -y
locate tinc

 

# 新建tinc相关文件夹

mkdir -p /etc/tinc/cloud/hosts

 

## 配置Master节点  公网机器centos##
# tinc.conf centos
vim /etc/tinc/cloud/tinc.conf
Name = aliyun
Interface = tincvpn
Mode = switch #设置使用Swtich模式 默认为router
AddressFamily = ipv4 #Internet走IPv4协议
BindToAddress = * 11001 #监听端口
Device = /dev/net/tun
Cipher = aes-128-cbc #对称加密算法
# ConnectTo = aliyun2 #连接另一公网Master节点保持双活

 

# 配置启动关闭脚本

# tinc-up centos
vim /etc/tinc/cloud/tinc-up
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.10.0.2/24 dev $INTERFACE

# tinc-down centos
vim /etc/tinc/cloud/tinc-down
#!/bin/sh
ip addr del 10.10.0.2/24 dev $INTERFACE
ip link set $INTERFACE down

# host centos
vim /etc/tinc/cloud/hosts/aliyun
Address = 47.103.xxx.xxx #公网地址
Subnet = 10.10.0.2/32 #tincnetIP信息
Port = 11001 #公网监听端口

 

## 脚本授权

chmod 755 /etc/tinc/cloud/tinc-*

 

## 配置slave节点 内网机器centos##
## openwrt salve
# tinc.conf openwrt
vim /etc/tinc/cloud/tinc.conf
Name = homeroute
Interface = tincvpn
Mode = switch
Device = /dev/net/tun
Cipher = aes-128-cbc
TCPOnly = no
Compression = 0
ConnectTo = aliyun

 

## 配置slave节点 windows salve ##
# tinc-conf windows
Name = pc1
Interface = tincvpn
Mode = switch
ConnectTo = aliyun

 

## 生成密钥 各平台相同

tincd -n cloud -K

 

# systemctl启用 centos
systemctl enable tinc@cloud
systemctl start tinc@cloud
systemctl status tinc

 

# 启动命令 

tincd -n cloud  centos、windows、openwrt同理

# 带日志启动
tincd -n cloud -D -d3

 

## openwrt额外配置

opkg update
opkg install tinc

# 修改/etc/config/tinc
vim /etc/config/tinc
config tinc-net cloud
option enabled 1
option Name homeroute

config tinc-host homeroute
option enabled 1
option net cloud

# 启动命令
/etc/init.d/tinc start

# zerotier配置防火墙规则

iptables -I FORWARD -i ztrta6zetb -j ACCEPT
iptables -I FORWARD -o ztrta6zetb -j ACCEPT
iptables -t nat -I POSTROUTING -o ztrta6zetb -j MASQUERADE

 

## windows配置开机启动

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup  下新建启动的快捷方式、快捷方式添加启动参数

如果有卡巴斯基等防火墙软件,需要配置防火墙规则

 

## 配置路由表

如果我想通过一台机器访问一个路由器下面的所有机器,那么只要这台机器和这个路由器在同一个tinc网络下,然后添加路由表就可以了,zeroter可以推送路由表所以不需要。

如果有两台路由器,希望两个路由器下面的机器互相访问,那就两边都需要设置路由表。

windows下添加路由表  

route print
route add -p 192.168.10.0 mask 255.255.255.0 10.10.0.1 metric 401 if 7
route delete 192.168.10.0

linux下添加路由表

查看网卡索引 arp -a  10.10.0.11

route add -net 192.168.10.0 netmask 255.255.255.0 gw 10.10.0.1   (服务器添加路由表)

openwrt下添加路由表

ip route add 192.168.10.0/24 via 10.10.0.1

 

## 关于配置文件

理论上只要作为转发的机器需要配置所有内网下的机器密钥,其他的服务器只需要配置转发机器和自己的配置文件就好了,配置很麻烦,没有zerotier好用,但是实测p2p打动成功后,tinc转发的确是要比zerotier快一点的,具体原因不知道,也许和我的运营商网络有关,tinc对比zerotier的缺点是需要有一个公网服务器,优点就是你可能会觉得zerotier不安全吧,而且打洞不成功tinc转发也是很好用的,能不能打洞成功据说和nat级别有关,网上有工具可以测试。

 

## 关于内网端口转发

打洞成功后,你可以把内网机器的应用端口映射到公网上,修改iptables就可以了。如果有域名的话,可以在公网机器上安装一个nginx,直接反向代理到内网机器的端口也是可以的。

这样做的好处只需要一台配置很低的公网服务器,用来做转发,然后再配置一台洋垃圾实体服务器,就可以同时兼顾公网ip和性能。如果公网机器性能好一点,可以作为k8s的master节点,整个域名搭配那个nginx ingress也是很好用的。

 

# iptables相关操作

# 安装iptables
service iptables status


iptables --version
iptables --help

iptables -L
iptables -L -n

# 保存规则
service iptables save
service iptables restart

vim /etc/sysconfig/iptables

 

# 例如mysql的端口转发

iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.10.111:3306

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM