frp内网穿透:打开局域网的远程大门

引言

在现代科技发展的背景下,越来越多的人需要远程访问他们家庭或办公室网络中的设备。然而,由于网络安全限制,我们常常无法直接从外部访问局域网中的设备。这就是为什么内网穿透技术变得如此重要的原因。本文将向您介绍一种强大的内网穿透工具——frp,并向您展示如何使用它轻松实现远程访问。

内网穿透

什么是内网穿透

内网穿透(NAT穿透)是一种网络技术,用于让外部网络可以访问位于私有内部网络中的设备或服务。在常见的网络环境中,私有内部网络(如家庭网络或公司局域网)通常使用了网络地址转换(Network Address Translation, NAT)来实现与公共互联网的连接,并将内部网络中的多个设备共享同一个公共IP地址 。

为什么需要内网穿透

由于NAT的存在,外部网络无法直接访问内部网络中的设备,因为它们位于不同的网络地址空间中。内网穿透技术通过一些特殊的手段,克服了这个限制,使得外部网络能够穿透NAT,直接与内部网络中的设备进行通信;

应用场景:

内网穿透广泛应用于各种场景,例如远程访问家庭网络中的摄像头、远程桌面控制内部计算机、在内网环境中搭建服务器并对外提供服务等。这些应用都依赖于内网穿透技术,使得外部用户能够通过公共网络安全地访问私有网络资源。

如何进行内网穿透

  1. 选择合适的内网穿透工具:市场上有许多可供选择的工具,如Ngrok、FRP、花生壳等。根据你的需求和技术要求选择一个适合的工具。
  2. 下载和安装工具:根据所选工具的官方文档,下载并安装相应的内网穿透工具。确保你的操作系统和网络环境与工具的要求相符。
  3. 配置内网穿透工具:每个工具都有自己的配置方式,通常需要指定本地服务的端口号和要使用的域名或公网 IP 地址。按照工具的说明,进行必要的配置。
  4. 启动内网穿透工具:运行工具并启动内网穿透服务。工具会分配一个公共域名或 IP 地址,并将其映射到你指定的本地服务。
  5. 测试连接:使用外部网络,尝试通过工具提供的公共域名或 IP 地址访问你的本地服务。确保能够成功连接和使用。

本文将展示的为 frp内网穿透工具,服务器为centos系统

frp内网穿透

frp简介

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。

frp 项目官网是:https://github.com/fatedier/frp

中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

除了安装过程,中文文档对使用过程已经介绍的非常详细,如遇到问题,建议先查看官方文档。

frp原理

  1. 服务端配置:在公网上搭建一个 FRP 服务器作为中转节点。这个服务器需要有公网 IP 地址或域名,并安装配置好 FRP 服务器软件。
  2. 客户端配置:在内网中需要访问的设备上安装配置 FRP 客户端软件。客户端需要与服务端建立连接,因此需要知道服务器的 IP 地址或域名以及相应的端口号。
  3. 端口映射:在客户端配置文件中指定要映射到公网的本地服务的端口号。当外部请求到达 FRP 服务器时,服务器会将请求转发给客户端,并将客户端上对应端口的数据发送回客户端。
  4. 通信加密:FRP 支持对通信进行加密,以确保数据的安全传输。可以使用预共享密钥或证书来配置加密选项。
  5. 建立连接:客户端通过与 FRP 服务器建立长连接,实时保持与服务器的通信,并监听外部请求。
  6. 外部访问:当外部网络请求到达 FRP 服务器时,服务器将请求转发给客户端,客户端再将请求转发到本地的目标服务,从而实现了内网穿透。

frp部署

frp服务端

服务端建议部署在国内VPS,以提供良好的访问体验。

  1. 打开 frp下载页面,下载最新版的 frp_0.51.0_linux_amd64.tar.gz,然后上传到服务器连接Linux服务器,也可以ssh连接到服务器后用wget下载:

    wget https://github.com/fatedier/frp/releases/download/v0.51.0/frp_0.51.0_linux_amd64.tar.gz
  2. 服务器上解压安装包:

    tar -zxvf frp_0.51.0_linux_amd64.tar.gz
  3. 进入解压目录,找到 frps.ini ,填入以下内容:

    vim vim frps.ini

    [common]
    bind_port = 7000    # frp监听的端口,默认是7000,可以改成其他的
    token = 3212344784    # 授权码,请改成更复杂的
    
    # frp管理后台端口,请按自己需求更改
    dashboard_port = 7500
    # frp管理后台用户名和密码,请改成自己的
    dashboard_user = bevis23
    dashboard_pwd = 3212344784
    enable_prometheus = true
    
    # frp日志配置
    log_file = /var/log/frps.log
    log_level = info
    log_max_days = 3
  1. 设置和启动frp服务:

    mkdir -p /etc/frp    ## 创建一个名为 /etc/frp 的目录
    cp frps.ini /etc/frp    ## 将名为 frps.ini 的文件复制到 /etc/frp 目录中
    cp frps /usr/bin    ## 将名为 frps 的可执行文件复制到 /usr/bin 目录中,文件负责启动和运行 frps 服务

    创建frps.service文件,该文件用于启动和管理 frps 服务

    vim /etc/systemd/system/frps.service

    填下以下内容

    ## 描述了服务的基本信息,如描述和依赖关系
    [Unit]
    Description=frps service
    After=network.target
    
    ## 定义了服务的启动参数和命令,ExecStart 指定了启动 frps 的命令行,并通过 -c 参数指定了 frps.ini 配置文件的路径;estart=on-failure 表示在服务失败时会自动重启;User=frps 指定了服务以 frps 用户身份运行。LimitNOFILE=4096 设置了文件描述符的限制,可以根据需要进行调整。
    
    [Service]
    ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
    Restart=on-failure
    User=frps
    LimitNOFILE=4096
    
    ## 指定了服务的安装位置。WantedBy=multi-user.target 表示服务将被添加到多用户目标,以便在系统启动时自动启动。
    [Install]
    WantedBy=multi-user.target
    

    启动服务

    systemctl enable frps
    systemctl start frps
  2. 防火墙放行端口:

    firewall-cmd --permanent --add-port=7000/tcp    ## 添加监听端口
    firewall-cmd --permanent --add-port=7500/tcp    ## 添加管理后台端口
       firewall-cmd --reload
  3. 浏览器打开“http://服务器IP:后台管理端口” ,输入用户名和密码

frp客户端

  1. 客户端则同上下载对应的压缩包,客户端win,mac,linux对应下载对应的压缩包便可

  2. 解压,进入压缩包内

  3. 编辑frp.ini

    注意:

    1. 一个服务端可以同时给多个客户端使用

    2. [ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;

    3. 除了type为http/https,端口只能被一个服务使用

   [common] 
   server_addr = 服务器ip
   server_port = 7000    ## 请换成设置的服务器端口
   token = 3212344784

   # 配置ssh服务
   [ssh]
   type = tcp
   local_ip = 127.0.0.1
   local_port = 22
   remote_port = 自定义的远程服务器端口 如2222

   # 配置http服务,可用于小程序开发、远程调试等
   [web]
   type = http
   local_ip = 127.0.0.1
   local_port = 8080
   subdomain = 子域名
   remote_port = 自定义的远程服务器端口 如8080
  1. 登录服务器,防火墙放行监听的端口:

    firewall-cmd --permanent --add-port=2222/tcp  
    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload
  2. 运行

    在windows上,在解压文件夹用./frpc.exe -c frpc.ini

    在linux上,同服务器端设置服务

  3. 登录frp管理后台,客户端已连接上

frp安全性

在使用frp进行内网穿透时,安全性是至关重要的。以下是一些安全考虑和最佳实践:

  • 使用强密码:在frp配置文件中设置强密码以保护服务器和客户端的访问权限。
  • 加密通信:启用frp的加密功能,确保数据在传输过程中的安全。
  • 定期更新frp版本:及时更新frp软件以获取最新的安全补丁和功能改进。
  • 防火墙和访问控制:根据需要,在服务器和客户端上配置防火墙规则和访问控制列表,限制访问权限。

总结

在本文中,我们深入了解了frp内网穿透工具,并展示了它如何帮助我们轻松实现远程访问。通过理解内网穿透技术的背景、掌握frp的原理和配置方法,以及遵循安全考虑和最佳实践,您可以打开局域网的远程大门,轻松访问位于内网的设备。无论是家庭网络、办公网络还是其他场景,frp都是一款功能强大且易于使用的工具,为我们提供了便利和灵活性。现在,您可以尝试使用frp,享受远程访问的便捷与自由!


   转载规则


《frp内网穿透:打开局域网的远程大门》 Bevis23 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
[两万字教程]MYSQL必知必会一站式完全教程 [两万字教程]MYSQL必知必会一站式完全教程
引言此文是针对《MYSQL必知必会》一书学习的笔记与总结,注意要点的提示,文末会放上总的思维导图,该文除了对整书的脉络与知识点整理外,还有一些个人的总结见解,比如基本概念-mysql语句的法则与执行顺序,是通过阅读借鉴与实践再经过个人总结,
2023-07-14
下一篇 
博客历程与优化记录 博客历程与优化记录
前言 本文会记录本站自上线后的一系列优化和美化操作 同时记录使用的一些相关软件与技术 一直有阅读和记录的习惯,以前都是使用有道云笔记、幕布、来记录自己的资源合集,所见所闻,所思所想; 个人热衷于利用技术工具解决问题,提高效率,
2023-07-05
  目录
切换