Overfrp内网穿透:使用域名将内网http/https服务暴露到公网

项目地址:https://github.com/sometiny/overfrp

使用overfrp部署穿透服务器,绑定域名后,可使用域名访问内网的http/https服务。

复制代码
用例中穿透服务器和内网机器之间的访问全链路加密,具有ssh2相当的安全级别。

!!!由于内网服务会暴露到公网,请谨慎使用,防止内网资源泄露。!!!

1、启动穿透服务端

bash 复制代码
./overfrp-server server --listen "127.0.0.1:7659" --allow-register --suffix "local.locateat.net"

#控制台输出类似如下内容:
#server started at: 127.0.0.1:7659
#HostKey指纹:ecdsa-sha2-nistp256 SHA256 Nu4RNSjbm9M9dJ9rZ4o887OgqYnl974gRVm+rBg3TKM
#HostKey指纹:ssh-rsa SHA256 Sv1nH+y8QYnvNGNRYz7woIexC0/RTjlgUdJYrRhqcIU

线上部署时需要指定--suffix为自己的域名,并增加一条带'*'的解析到自己的服务。

例如,解析*.local.locateat.net到你自己的服务器。

2、向服务端注册通道标识,用于发布服务,通道标识可复用,注册一次即可。

bash 复制代码
./overfrp-client register --server "127.0.0.1:7659"

#控制台输入类似如下内容:
#通道注册成功,通道标识:EzwVZY2MtEyWmiaQ+3DvRw==
#标识已保存至:F:\xxxxx\.identifier

后续会用到通道标识,用于发布服务。

3、发布服务,--identifier指定前面注册的通道标识

bash 复制代码
./overfrp-client publish --server "127.0.0.1:7659" --identifier "EzwVZY2MtEyWmiaQ+3DvRw==" --target "www.baidu.com:443" --ssl-off-loading --keep-http-host

#控制台输出类似如下内容:
#[*]frp server: 127.0.0.1:7659
#[*]frp publishing...
#[*]frp publish success
#[*]已绑定域名:
#http://www-baidu-com-443-2690fb70ef47.local.locateat.net:7659

浏览器访问 http://www-baidu-com-443-2690fb70ef47.local.locateat.net:7659 可正常打开baidu页面

  • 要用http地址去访问baidu的443端口,所以需要指定--ssl-off-loading来卸载baidu的ssl。

  • 浏览器默认发送的host头不是www.baidu.com,需要指定--keep-http-host保持--target中指定的host。

  • 本用例中publish提供的是对target的单一服务,映射不同的target需要注册不同的--identifier。

可使用--use-stored-identifier自动从通道标识文件读取标识,而不需要每次指定。

访问非https服务时,必须去掉--ssl-off-loading,例如映射本地80端口:

bash 复制代码
./overfrp-client publish --server "127.0.0.1:7659" --use-stored-identifier --target "127.0.0.1:80"

4、默认绑定域名为http协议,如果需要绑定https协议的域名,服务端启动时需要指定证书和私钥。

bash 复制代码
--certificate "./CERTIFICATE.cer"
--private-key "./CERTIFICATE.key"

域名绑定端口默认跟穿透服务器一样,可以使用--http-listen-at和--https-listen-at,来指定不同的端口。

bash 复制代码
--http-listen-at "127.0.0.1:8080"
--https-listen-at "127.0.0.1:4343"
例如:如下服务端启动参数
bash 复制代码
./overfrp-server server \
    --listen "127.0.0.1:7659" \
    --allow-register \
    --suffix "local.locateat.net" \
    --certificate "./CERTIFICATE.cer" \
    --private-key "./CERTIFICATE.key" \
    --http-listen-at "127.0.0.1:8080" \
    --https-listen-at "127.0.0.1:4343"

使用overfrp-client publish发布服务时控制台可能输出如下内容:

复制代码
[*]frp server: 127.0.0.1:7659
[*]frp publishing...
[*]frp publish success
[*]已绑定域名:
https://www-baidu-com-443-2690fb70ef47.local.locateat.net:4343
http://www-baidu-com-443-2690fb70ef47.local.locateat.net:8080

两个url均可正常访问baidu.com,注意端口已经变成4343和8080。

相关推荐
Oiiouui40 分钟前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
ITKEY_1 小时前
用 Emacs Dired 实现 em:退出文件管理器后,让终端自动切换目录
linux·服务器·emacs
承渊政道3 小时前
Open-LLM-VTuber本地部署教程:大模型、语音交互、Live2D与远程访问
大模型·内网穿透·数字人·cpolar·语音交互·open-llm-vtuber
沫璃染墨3 小时前
从零入门计算机网络系列(十四):TCP报文与字节流本质——从数据封装到报文边界
linux·服务器·网络·网络协议·tcp/ip·tcp
Android系统攻城狮18 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
番茄啊21 小时前
linux 开启xftp连接
linux·运维·服务器
Lsetea21 小时前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
AI 编程助手GPT1 天前
curl 返回成功就能收文件?用本地 HTTP 验证错误页与超时
网络·网络协议·http
Julien20041 天前
管理机密(一)
运维·服务器·开发语言·学习方法
apollo_qwe1 天前
接口超时了,前端为什么不能直接重试?
javascript·http