深入解析,FRP 如何实现域名访问带端口的 IP

温馨提示:这篇文章已超过160天没有更新,请注意相关的内容是否还可用!

在网络技术的领域中,我们常常会遇到需要通过域名访问特定 IP 且携带端口号的需求,在一些企业内部网络环境中,为了方便员工访问特定的服务器资源,或者在搭建一些个性化的网络服务时,都可能会面临这样的问题,FRP(Fast Reverse Proxy)作为一款强大的反向代理工具,为我们提供了一种有效的解决方案,FRP 究竟是如何实现域名访问带端口的 IP 呢?本文将深入探讨这一过程,带你揭开其中的奥秘。

FRP 简介

FRP 是一个由国人开发的开源项目,它基于 Go 语言编写,其主要功能是通过将内网服务映射到公网,实现外网用户能够通过域名访问到位于内网的服务,FRP 具有简单易用、性能高效等特点,被广泛应用于各种网络场景中,如远程办公、物联网设备连接等。

实现域名访问带端口的 IP 的基本原理

  1. 服务端与客户端架构
    • FRP 分为服务端(Server)和客户端(Client)两部分,服务端通常部署在具有公网 IP 的服务器上,它负责接收来自外网的请求,并将其转发到对应的内网服务,客户端则安装在内网需要被访问的设备上,它与服务端建立连接,将内网服务的信息告知服务端。
    • 当我们使用域名访问带端口的 IP 时,实际上是通过 FRP 服务端来进行中转,用户在浏览器中输入域名后,请求首先到达 FRP 服务端,服务端根据配置信息,将请求转发到对应的内网 IP 和端口上。
  2. 配置文件的作用
    • 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

        与服务端建立连接,然后将本地的服务信息告知服务端。

      • 与服务端建立连接,然后将本地的服务信息告知服务端。
      • 详细配置步骤

        1. 服务端配置
          • 我们需要下载 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
            1. 客户端配置
              • 同样,下载 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
                1. 域名解析配置
                2. 为了能够通过域名访问,我们还需要在域名解析服务商处进行配置,在阿里云 DNS 控制台,添加一条 A 记录,将
                3. example.com

                  指向 FRP 服务端的公网 IP。

                4. 指向 FRP 服务端的公网 IP。
                5. 经过以上配置,当用户在浏览器中输入
                6. http://example.com:8080

                  时,请求会先到达 FRP 服务端,服务端根据配置将请求转发到内网 IP 为

                  168.1.100

                  、端口为

                  80

                  的 Web 服务上,从而实现了域名访问带端口的 IP 的功能。😎

                7. 的 Web 服务上,从而实现了域名访问带端口的 IP 的功能。😎
                8. 安全与优化

                  1. 安全方面
                    • 使用 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
                      1. 优化方面
                        • 性能优化:根据实际网络环境和需求,合理调整 FRP 的配置参数,如果网络带宽较高,可以适当增大bind_port

                          vhost_http_port

                          等端口的值,以提高并发处理能力。

                        • 等端口的值,以提高并发处理能力。
                        • 日志管理:开启详细的日志记录,便于排查问题,在服务端和客户端配置文件中添加如下日志配置:
                        • [common]log_file = frp.loglog_level = infolog_max_days = 7

                          通过本文的详细介绍,我们了解了 FRP 实现域名访问带端口的 IP 的原理、配置步骤以及相关的安全与优化措施,FRP 为我们提供了一种便捷、高效的方式来将内网服务暴露到公网,使得我们能够更加灵活地构建和管理网络应用,无论是企业内部的资源共享,还是个人开发者搭建的个性化服务,FRP 都能发挥重要的作用,希望读者通过本文的学习,能够熟练掌握 FRP 的使用方法,为自己的网络应用开发和部署带来更多的便利。🎉

                          在实际应用中,还需要根据具体的场景和需求,不断优化和完善 FRP 的配置,以确保网络服务的稳定运行和安全性,随着网络技术的不断发展,我们也可以关注 FRP 的更新和升级,以获取更好的性能和功能体验。💪

    The End

    发布于:2025-06-01,除非注明,否则均为域名通 - 全球域名资讯一站式平台原创文章,转载请注明出处。