科普一下给有需要的童鞋参考。
穿透原理大致分如下几类:
1、代理穿透
原理示意图:
优势:
- 保持100%穿透成功率
- 用户无需公网IP
不足:
- 运营方提供公网访问入口,硬件投入大
- 带宽要求高,免费用户往往会被限速,产生免费使用上的“鸡肋”
2、直接穿透
原理示意图:
优势:
- 自主可控,无需第三方转发
- 保持100%穿透成功率
不足:
- 服务端必须具备公网IP
- 带宽取决于服务端和客户端两者的最小带宽(面向云主机带宽不友好,主要是贵!死贵!!)
- 由于直接暴露在公网,会有安全问题
- 需要自己搭建,门槛较高
3、P2P穿透
原理示意图:
优势:
- 点对点,能最大化使用带宽,使用感知友好
不足:
- Ipv4环境下成功率取决于NAT类型,移动网络(3G/4G下)基本没戏
- Ipv6环境下成功率高,取决于防火墙策略(防火墙穿透)
- 几乎全基于UDP协议或其衍生自定义协议,安全性和可靠性或多或少存在缺陷
4、Ssh隧道穿透:
略
常用免费工具穿透姿势:
-/- | 代理穿透 | 直接穿透 | P2P穿透 | 自主代理 | 公网IP | 备注 | |
---|---|---|---|---|---|---|---|
花生壳 | YES | NO | NO | NO | 不需要 | 限速到怀疑人生 | |
teamviewer | YES | NO | NO | NO | 不需要 | 烦人的商用提示 | |
Ngrok | YES | YES | NO | YES | 需要 | ||
Frp | YES | YES | YES/UDP | YES | 需要 | 三种方式选其一 | |
smarGate | YES | YES | YES/TCP | YES | 不需要 | 同时支持,P2P优先 |
附:
Frp:https://github.com/fatedier/frp
Ngrok:https://github.com/inconshreveable/ngrok
smarGate: https://github.com/lazy-luo/smarGate