本文详细介绍了内网穿透的基础知识和常见应用场景,并探讨了多种内网穿透技术的简述。接着,文章深入讲解了内网穿透项目环境的搭建步骤,包括开发环境的配置和常用工具的选择与下载。文中还详细演示了内网穿透项目实战的具体步骤,涵盖了选择合适的技术、项目需求分析与设计以及详细的操作指南。
内网穿透基础知识介绍内网穿透是指使处于内网环境中的设备通过公网(互联网)直接访问的技术。内网设备由于路由器的网络配置通常不能直接被公网访问,内网穿透正是为了解决这一问题。内网穿透技术允许内网设备暴露其服务,从而实现远程访问和控制。
端口转发:通过路由器的端口转发功能,将公网的某个端口映射到内网中的特定设备端口。
# 在路由器上配置端口转发 WAN Port: 80 LAN IP: 192.168.1.100 LAN Port: 80
动态域名解析(DDNS):使用动态域名解析服务,将公网域名解析到内网设备的IP地址。这种方式适用于公网IP地址经常变化的场景,如移动网络环境。
UPnP(Universal Plug and Play):UPnP协议允许内网设备自动配置路由器上的端口映射。
# 示例UPnP配置 # 启用UPnP功能 enable_upnp: true # 添加端口映射 add_mapping: externalPort: 80 internalPort: 80 protocol: TCP internalAddress: 192.168.1.100
NAT穿透(NAT Traversal):通过特定协议或工具实现穿透NAT设备,使内网设备可以直接被公网访问。
反向代理服务器:通过反向代理服务器将公网请求转发到内网设备。
# Nginx反向代理配置 server { listen 80; server_name example.com; location / { proxy_pass http://192.168.1.100:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
在开始内网穿透项目之前,确保开发环境已经搭建完成。以下是搭建开发环境的步骤:
ngrok
Serveo
安装ngrok
配置
ngrok.yml
):authtoken: 你的授权令牌 tunnel: http: addr: 80 proto: http subdomain: 自定义域名 https: addr: 443 proto: https subdomain: 自定义域名
使用示例:
./ngrok start --config=ngrok.yml
安装
配置
ssh -R 80:localhost:80 serveo.net
安装
配置
frpc.ini
):[common] server_addr = 0.0.0.0 server_port = 7000 token = 你的token [http] type = http local_port = 80 custom_domains = 自定义域名 use_encryption = true use_compression = true
使用示例:
./frpc -c frpc.ini
根据项目需求选择合适的内网穿透技术。例如,如果需要长期稳定运行的服务可以选择ngrok,如果项目规模较小且需要免费服务可以选择Serveo或frp。
启动ngrok服务
./ngrok http 80
访问公网地址
配置示例:
ngrok.yml
文件中的参数,例如修改子域名为example
:authtoken: 你的授权令牌 tunnel: http: addr: 80 proto: http subdomain: example
./ngrok start --config=ngrok.yml
启动Serveo服务
ssh -R 80:localhost:80 serveo.net
访问公网地址
配置示例:
ssh -R 8080:localhost:8080 serveo.net
启动frp服务
./frpc -c frpc.ini
访问公网地址
配置示例:
frpc.ini
文件中的域名,例如将自定义域名
改为example.com
:[common] server_addr = 0.0.0.0 server_port = 7000 token = 你的token [http] type = http local_port = 80 custom_domains = example.com use_encryption = true use_compression = true
./frpc -c frpc.ini
ngrok配置文件(ngrok.yml
)
Serveo配置
frpc.ini
)
服务无法启动
公网访问失败
实现步骤:
配置示例:
ngrok.yml
文件中的参数,例如修改子域名为company
:authtoken: 你的授权令牌 tunnel: http: addr: 80 proto: http subdomain: company
./ngrok start --config=ngrok.yml
实现步骤:
配置示例:
frpc.ini
文件中的参数,例如将自定义域名
改为monitor
:[common] server_addr = 0.0.0.0 server_port = 7000 token = 你的token [http] type = http local_port = 80 custom_domains = monitor use_encryption = true use_compression = true
./frpc -c frpc.ini
通过以上步骤,可以轻松实现内网穿透项目的部署和使用,提高内网设备的访问灵活性和效率。