一个基于Python实现的简单内网穿透解决方案,无需依赖第三方服务如ngrok。
- 纯Python实现,无额外依赖
- 支持端口转发配置
- 提供Web界面管理穿透服务
- 跨平台兼容(Windows/Linux/macOS)
- 服务器端:运行在具有公网IP的服务器上,监听指定端口并转发流量
- 客户端:运行在本地内网环境,连接到服务器并转发本地服务
- Web界面:用于启动/停止穿透服务和显示连接状态
- Python 3.7+
- 公网服务器(需要有固定IP和开放端口权限)
- 本地内网服务(需要被穿透的服务)
pip install -r requirements.txt
编辑 app.py
文件,修改默认配置:
DEFAULT_CONFIG = {
'local_host': '127.0.0.1', # 本地服务IP
'local_port': 5000, # 本地服务端口
'remote_host': '0.0.0.0', # 服务器监听IP(0.0.0.0表示所有接口)
'remote_port': 8080 # 服务器监听端口
}
python app.py
打开浏览器访问:http://服务器IP:5000
编辑 local_client.py
文件,设置服务器信息:
client.set_config(
remote_host='公网服务器IP', # 替换为你的服务器公网IP
remote_port=8080, # 服务器监听端口
local_host='127.0.0.1', # 本地服务IP
local_port=5000 # 本地服务端口
)
python local_client.py
- 在Web界面点击"启动穿透"按钮
- 查看显示的内网穿透地址
- 通过该地址访问内网服务
- 不需要时点击"停止穿透"按钮
- 防火墙设置:确保服务器防火墙已开放配置的remote_port端口
- 端口转发:如果服务器在路由器后,需要配置端口转发将外部端口映射到服务器
- 安全性:此为基础实现,生产环境使用需添加认证和加密机制
- 多端口支持:如需转发多个端口,可修改代码支持多实例或配置多个转发规则
- 无法访问Web界面:检查服务器IP、端口是否正确,防火墙是否开放
- 连接服务器失败:确认服务器是否启动,网络是否可达
- 转发失败:检查本地服务是否正常运行,端口是否正确
- 如需添加认证,可在服务器端实现简单的令牌验证
- 如需支持HTTPS,可集成SSL/TLS配置
- 可扩展配置文件支持,实现更灵活的端口转发设置