深入解析,FRP 如何实现域名访问带端口的 IP
温馨提示:这篇文章已超过160天没有更新,请注意相关的内容是否还可用!
在网络技术的领域中,我们常常会遇到需要通过域名访问特定 IP 且携带端口号的需求,在一些企业内部网络环境中,为了方便员工访问特定的服务器资源,或者在搭建一些个性化的网络服务时,都可能会面临这样的问题,FRP(Fast Reverse Proxy)作为一款强大的反向代理工具,为我们提供了一种有效的解决方案,FRP 究竟是如何实现域名访问带端口的 IP 呢?本文将深入探讨这一过程,带你揭开其中的奥秘。
FRP 简介
FRP 是一个由国人开发的开源项目,它基于 Go 语言编写,其主要功能是通过将内网服务映射到公网,实现外网用户能够通过域名访问到位于内网的服务,FRP 具有简单易用、性能高效等特点,被广泛应用于各种网络场景中,如远程办公、物联网设备连接等。
实现域名访问带端口的 IP 的基本原理
- 服务端与客户端架构
- FRP 分为服务端(Server)和客户端(Client)两部分,服务端通常部署在具有公网 IP 的服务器上,它负责接收来自外网的请求,并将其转发到对应的内网服务,客户端则安装在内网需要被访问的设备上,它与服务端建立连接,将内网服务的信息告知服务端。
- 当我们使用域名访问带端口的 IP 时,实际上是通过 FRP 服务端来进行中转,用户在浏览器中输入域名后,请求首先到达 FRP 服务端,服务端根据配置信息,将请求转发到对应的内网 IP 和端口上。
- 配置文件的作用
- FRP 的配置文件是实现这一功能的关键,在服务端配置文件中,我们需要指定监听的端口、域名以及对应的内网映射规则,我们可以配置如下内容:
[common]bind_port = 7000vhost_http_port = 8080
[web]type = httplocal_ip = 192.168.1.100local_port = 80custom_domains = example.com
- 这里的 `bind_port` 是 FRP 服务端监听的端口,`vhost_http_port` 是虚拟主机 HTTP 端口,`[web]` 部分定义了一个内网映射规则,将内网 IP 为 `192.168.1.100`、端口为 `80` 的服务,通过域名 `example.com` 进行映射。 - 在客户端配置文件中,我们需要指定服务端的地址和端口,以及要映射的内网服务信息:```ini[common]server_addr = 1.2.3.4server_port = 7000[web]type = httplocal_ip = 192.168.1.100local_port = 80- 客户端通过
server_addr和
server_port与服务端建立连接,然后将本地的服务信息告知服务端。
- 与服务端建立连接,然后将本地的服务信息告知服务端。
- 服务端配置
- 我们需要下载 FRP 服务端程序,可以从官方 GitHub 仓库(https://github.com/fatedier/frp/releases)下载适合自己操作系统的版本。
- 解压下载的文件后,进入服务端配置目录,解压后的目录为
frp_0.37.0_linux_amd64,进入该目录下的
conf文件夹。
- 文件夹。
- 编辑服务端配置文件
frps.ini,按照前面所述的格式填写配置信息,我们要将内网 IP 为
168.1.100、端口为
80的 Web 服务通过域名
example.com映射出来,就可以添加如下配置:
[common]bind_port = 7000vhost_http_port = 8080
[web]type = httplocal_ip = 192.168.1.100local_port = 80custom_domains = example.com
- 配置完成后,启动 FRP 服务端,在 Linux 系统中,可以使用以下命令:```bash./frps -c frps.ini- 客户端配置
- 同样,下载 FRP 客户端程序并解压,进入解压后的客户端配置目录,编辑
frpc.ini文件。
- 文件。
- 填写客户端配置信息,
[common]server_addr = 1.2.3.4server_port = 7000
[web]type = httplocal_ip = 192.168.1.100local_port = 80
- `server_addr` 填写服务端的公网 IP,`server_port` 填写服务端监听的端口。 - 启动 FRP 客户端:```bash./frpc -c frpc.ini - 同样,下载 FRP 客户端程序并解压,进入解压后的客户端配置目录,编辑
- 域名解析配置
- 为了能够通过域名访问,我们还需要在域名解析服务商处进行配置,在阿里云 DNS 控制台,添加一条 A 记录,将
- 指向 FRP 服务端的公网 IP。
- 经过以上配置,当用户在浏览器中输入
- 的 Web 服务上,从而实现了域名访问带端口的 IP 的功能。😎
- 安全方面
- 使用 HTTPS 协议:为了保障数据传输的安全性,建议在域名访问时使用 HTTPS 协议,可以通过配置 SSL 证书来实现,使用 Let's Encrypt 免费证书,将其配置到 FRP 服务端和客户端中,在服务端配置文件中添加如下内容:
[common]tls_enable = truetls_cert_file = /path/to/cert.pemtls_key_file = /path/to/key.pem
- 认证与授权:可以设置用户名和密码进行认证,只有通过认证的用户才能访问映射的服务,在服务端配置文件中添加认证相关配置:
[common]token = your_token
[web]type = httplocal_ip = 192.168.1.100local_port = 80custom_domains = example.comuse_encryption = trueuse_compression = true
- 在客户端配置文件中添加对应的认证信息:```ini[common]server_addr = 1.2.3.4server_port = 7000token = your_token- 优化方面
- 性能优化:根据实际网络环境和需求,合理调整 FRP 的配置参数,如果网络带宽较高,可以适当增大
bind_port和
vhost_http_port等端口的值,以提高并发处理能力。
- 等端口的值,以提高并发处理能力。
- 日志管理:开启详细的日志记录,便于排查问题,在服务端和客户端配置文件中添加如下日志配置:
[common]log_file = frp.loglog_level = infolog_max_days = 7
通过本文的详细介绍,我们了解了 FRP 实现域名访问带端口的 IP 的原理、配置步骤以及相关的安全与优化措施,FRP 为我们提供了一种便捷、高效的方式来将内网服务暴露到公网,使得我们能够更加灵活地构建和管理网络应用,无论是企业内部的资源共享,还是个人开发者搭建的个性化服务,FRP 都能发挥重要的作用,希望读者通过本文的学习,能够熟练掌握 FRP 的使用方法,为自己的网络应用开发和部署带来更多的便利。🎉
在实际应用中,还需要根据具体的场景和需求,不断优化和完善 FRP 的配置,以确保网络服务的稳定运行和安全性,随着网络技术的不断发展,我们也可以关注 FRP 的更新和升级,以获取更好的性能和功能体验。💪
- 性能优化:根据实际网络环境和需求,合理调整 FRP 的配置参数,如果网络带宽较高,可以适当增大
- 使用 HTTPS 协议:为了保障数据传输的安全性,建议在域名访问时使用 HTTPS 协议,可以通过配置 SSL 证书来实现,使用 Let's Encrypt 免费证书,将其配置到 FRP 服务端和客户端中,在服务端配置文件中添加如下内容:
example.com指向 FRP 服务端的公网 IP。
http://example.com:8080时,请求会先到达 FRP 服务端,服务端根据配置将请求转发到内网 IP 为
168.1.100、端口为
80的 Web 服务上,从而实现了域名访问带端口的 IP 的功能。😎
安全与优化
详细配置步骤
- 客户端通过
发布于:2025-06-01,除非注明,否则均为原创文章,转载请注明出处。