type
status
date
slug
summary
tags
category
icon
password

引言

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

内网穿透

什么是内网穿透

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

为什么需要内网穿透

由于NAT的存在,外部网络无法直接访问内部网络中的设备,因为它们位于不同的网络地址空间中。内网穿透技术通过一些特殊的手段,克服了这个限制,使得外部网络能够穿透NAT,直接与内部网络中的设备进行通信;
应用场景:
内网穿透广泛应用于各种场景,例如远程访问家庭网络中的摄像头、远程桌面控制内部计算机、在内网环境中搭建服务器并对外提供服务等。这些应用都依赖于内网穿透技术,使得外部用户能够通过公共网络安全地访问私有网络资源。

如何进行内网穿透

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

frp内网穿透

frp简介

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp 项目官网是:https://github.com/fatedier/frp
除了安装过程,中文文档对使用过程已经介绍的非常详细,如遇到问题,建议先查看官方文档。

frp原理

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

frp部署

frp服务端

服务端建议部署在国内VPS,以提供良好的访问体验。
  1. 打开 frp下载页面,下载最新版的 frp_0.51.0_linux_amd64.tar.gz,然后上传到服务器连接Linux服务器,也可以ssh连接到服务器后用wget下载:
    1. bash

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

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

      bash

      [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
      Bash
  1. 设置和启动frp服务:
    1. bash

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

      bash

      vim /etc/systemd/system/frps.service
      Bash
      填下以下内容

      bash

      ## 描述了服务的基本信息,如描述和依赖关系 [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
      Bash
      启动服务

      bash

      systemctl enable frps systemctl start frps
      Bash
  1. 防火墙放行端口:
    1. bash

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

frp客户端

  1. 客户端则同上下载对应的压缩包,客户端win,mac,linux对应下载对应的压缩包便可
  1. 解压,进入压缩包内
  1. 编辑frp.ini
    1. 注意:
      1. 一个服务端可以同时给多个客户端使用
      1. [ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;
      1. 除了type为http/https,端口只能被一个服务使用

      bash

      [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
      Bash
  1. 登录服务器,防火墙放行监听的端口:
    1. bash

      firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
      Bash
  1. 运行
    1. 在windows上,在解压文件夹用./frpc.exe -c frpc.ini
      在linux上,同服务器端设置服务
  1. 登录frp管理后台,客户端已连接上

frp安全性

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

总结

在本文中,我们深入了解了frp内网穿透工具,并展示了它如何帮助我们轻松实现远程访问。通过理解内网穿透技术的背景、掌握frp的原理和配置方法,以及遵循安全考虑和最佳实践,您可以打开局域网的远程大门,轻松访问位于内网的设备。无论是家庭网络、办公网络还是其他场景,frp都是一款功能强大且易于使用的工具,为我们提供了便利和灵活性。现在,您可以尝试使用frp,享受远程访问的便捷与自由!
docker:容器技术应用与常用命令ip地址与探针
宓翊23
宓翊23
博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉欢迎来到我的博客🎉
工具-资源-技术-随笔
--- 感谢您的支持 ---
👏希望能帮助到您👏
主博客:作者站点中的bevis23
 
 
 
2024-2025 宓翊23.

miyi23 | 博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~

Powered by NotionNext 4.1.5.