问题描述
NAT 技术虽然能使私网访问公网,但是 NAT 技术也有一定缺陷:
NAT 对于私网访问公网的流量会生成 NAT 映射表项,这些表项有老化时间,如果两端会话长期静默,则连接会中断;
NAT 由于隐藏了私网 IP 地址,对于一些服务器来说,为了防止 DOS 攻击,会限制同一 IP 的访问频率。部分应用也没法有效溯源原始 I 设备,导致网络管理定位困难;
该笔记将记录:进行内网穿透的工具及方法,以及相关问题的解决方法;
解决方案
为了解决 IP 端到端应用在 NAT 环境下遇到的问题,产生了多种 NAT 穿越技术:
目前NAT穿越的方法很多,主要包括以下几种:
UPnP(Universal Plug and Play)
ALG(Application Layer Gatewqy)
MIDCOM(Middlebox Communications)
Full Proxy
STUN(Simple Traversal of UDP Through Network Address Translators)
TURN(Traversal Using Relay NAT)
ICE(Interactive Connectivity Establish)
STUNT
如果是网络工程师,我们能够直接在路由设备上完成内网穿透工作,我们主要学习 ALG、STUN 技术;
原理简述
使用 FRP(FAST REVERSE PROXY)工具
首先,需要有公网服务器,才能进行后续操作
Access your computer in LAN by SSH
第一步、在服务端运行:
cat > /etc/frp/frp-server.ini <<EOF # frps.ini [common] bind_port = 7000 EOF ./frps -c ./frp-server.ini
第二步、在客户端运行:
cat > /etc/frp/frp-client.ini <<EOF # frpc.ini [common] server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 EOF ./frpc -c ./frp-client.ini
映射端口范围
frp/README.md at dev · fatedier/frp · GitHub
以 range: 开始的名称:
# frpc.ini [range:test_tcp] type = tcp local_ip = 127.0.0.1 local_port = 6000-6006,6007 remote_port = 6000-6006,6007
参考文献