frp内网穿透搭建-续

内网穿透搭建续

frp简单、高效的内网穿透工具。

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

同样的我们可以继续尝试使用内网穿透代理本地其它的服务和设备,使用户能够访问内网的其它服务器。
在前文,我们使用了windows作为内网穿透的客户端,代理了本机的远程服务,从公网远程windows电脑,我们以这台电脑为跳板,让其代理内网其它服务。

通过SSH访问内网服务器

通过简单的配置tcp类型协议,使用用户能够访问内网服务器。

步骤:
1、在具有公网IP的服务器上部署FRPS。这一步已经做完了。我们默认绑定7000端口,在防火墙,云服务器策略中放通。

2、内网部署frpc。我们选择在windows上搭建,已经完成。

3、添加需要代理的内网主机配置。

部署frpc编辑frpc.toml配置文件,在之前的部署中,我们已经添加了frpc本机的rdp代理。所以,接下面再添加一个配置即可。所以现在的配置参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
serverAddr = "1.2.3.4"
serverPort = 7000
auth.token = "your_password"
# 代理本机服务
[[proxies]]
name = "windows-desktop"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6002
# 代理内网主机服务
[[proxies]]
name = "ubuntu-ssh"
type = "tcp"
localIP = "192.168.1.1"
localPort = 22
remotePort = 6003

防火墙放通新的6003端口,可以在frps的dashboard中看到新添加的代理ubuntu-ssh。我们可以从公网访问了。

4、重新启动frps和frpc。

5、访问内网ssh。

使用以下命令通过 SSH 访问内网机器,假设用户名为 test:

1
ssh -o Port=6000 test@x.x.x.x

连接示例:

frpc-ssh-reomte

通过自定义域名访问内网服务

比如,我在内网的服务器上部署了一个静态博客,使用hexo生成博客页面,hexo的服务端口为4000,想要通过域名hexo.abc.com(示例)访问,要怎么做呢?代理客户端还是以案例的windows为例。

1、域名解析添加一条hexo的记录指向frps的服务器IP。

2、frps.toml添加一条配置

1
vhostHTTPPort = 80

服务器放通80端口,如果服务器上有部署其它的站点业务,可以把vhostHTTPPort端口改为其它不冲突的端口,比如8080。

3、frpc.toml添加一条配置,代理内网服务器的heox服务。

1
2
3
4
5
6
[[proxies]]
name = "hexo"
type = "http"
localIP = "192.168.31.183"
localPort = 4000
customDomains = ["hexo.abc.com"]

4、服务端和代理客户端重启服务

此时,我们可以通过frps的dashboard面板看到一条新的http代理,说明代理已经成功。

frps_http_proxy

5、通过游览器访问代理的hexo服务,访问http://hexo.abc.com 即可,因本示例vhostHTTPPort端口为80,所以直接访问,如果80端口为其它http服务,可以域名后:加端口号,或者使用nginx反向代理配置实现,方法不唯一。

对外提供简单的文件访问

通过使用 static_file 插件,可以轻松地提供一个基于 HTTP 的文件访问服务,让其他人可以访问指定的文件。

代理内网本机的文件服务

给个示例,内网本机系统windows。

1、frpc.toml添加配置文件

1
2
3
4
5
6
7
8
9
10
11
12
[[proxies]]
name = "proxy_static_file"
type = "tcp"
remotePort = 6004
[proxies.plugin]
type = "static_file"
# 本地文件目录,对外提供访问
localPath = "C:/frp_file_share" # 这里没有写错,虽然我们知道windows下的目录是\
# URL 中的前缀,将被去除,保留的内容即为要访问的文件路径
stripPrefix = "static"
httpUser = "user"
httpPassword = "password"

根据实际情况修改 localPath、stripPrefix、httpUser 和 httpPassword。特别注意的是localPath的路径写法,windows下直接复制文件路径游览器访问会提示502。

添加完成,重启frps和frpc程序。frps服务器防火墙放通6004,可以通过frps的dashboard看到已经添加了一台proxy_static_file。

frps_static_file

2、游览器访问文件服务

我们在frpc的共享路径中添加一个txt,用于访问测试。
使用浏览器访问 http://x.x.x.x:6004/static/,以查看位于 C:\frp_file_share 目录下的文件。系统会要求输入设置的用户名和密码。

frps_static_view

代理内网其它服务器的文件服务

代理本机的我们完成了,代理linux下的文件服务,此路不通了。虽然也能发现添加的代理,不过,访问页面变成404 not found。访问frp的github找到了一条关闭的issues。作者回复不支持,可以在可以在其他机器上跑一个 nginx,然后将 local_ip 设置为那台机器的 ip。

安全的暴露内网服务

通过创建一个只有授权用户能够访问的 SSH 服务代理,实现内网服务的安全暴露。某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 stcp(secret tcp) 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。

步骤

1、配置frpc.toml。
在需要将内网服务暴露到公网的机器上部署frpc,并添加以下配置:

1
2
3
4
5
6
7
[[proxies]]
name = "secret_ssh"
type = "stcp"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "abcdefg"
localIP = "192.168.31.183"
localPort = 22

2、在访问者的机器上部署并配置frpc

在想要访问内网服务的机器上也部署frpc,并创建如下配置:


frp内网穿透搭建-续
https://ywmy.xyz/2025/01/02/frp内网穿透搭建-续/
作者
ian
发布于
2025年1月2日
许可协议