內網穿透記錄


 

第一篇文章,也可能是最后一篇文章,懶人一個,隨便寫寫

開局一張圖,內容全靠編系列

 

 

 

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