引言
在现代科技发展的背景下,越来越多的人需要远程访问他们家庭或办公室网络中的设备。然而,由于网络安全限制,我们常常无法直接从外部访问局域网中的设备。这就是为什么内网穿透技术变得如此重要的原因。本文将向您介绍一种强大的内网穿透工具——frp,并向您展示如何使用它轻松实现远程访问。
内网穿透
什么是内网穿透
内网穿透(NAT穿透)是一种网络技术,用于让外部网络可以访问位于私有内部网络中的设备或服务。在常见的网络环境中,私有内部网络(如家庭网络或公司局域网)通常使用了网络地址转换(Network Address Translation, NAT)来实现与公共互联网的连接,并将内部网络中的多个设备共享同一个公共IP地址 。
为什么需要内网穿透
由于NAT的存在,外部网络无法直接访问内部网络中的设备,因为它们位于不同的网络地址空间中。内网穿透技术通过一些特殊的手段,克服了这个限制,使得外部网络能够穿透NAT,直接与内部网络中的设备进行通信;
应用场景:
内网穿透广泛应用于各种场景,例如远程访问家庭网络中的摄像头、远程桌面控制内部计算机、在内网环境中搭建服务器并对外提供服务等。这些应用都依赖于内网穿透技术,使得外部用户能够通过公共网络安全地访问私有网络资源。
如何进行内网穿透
- 选择合适的内网穿透工具:市场上有许多可供选择的工具,如Ngrok、FRP、花生壳等。根据你的需求和技术要求选择一个适合的工具。
- 下载和安装工具:根据所选工具的官方文档,下载并安装相应的内网穿透工具。确保你的操作系统和网络环境与工具的要求相符。
- 配置内网穿透工具:每个工具都有自己的配置方式,通常需要指定本地服务的端口号和要使用的域名或公网 IP 地址。按照工具的说明,进行必要的配置。
- 启动内网穿透工具:运行工具并启动内网穿透服务。工具会分配一个公共域名或 IP 地址,并将其映射到你指定的本地服务。
- 测试连接:使用外部网络,尝试通过工具提供的公共域名或 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原理
- 服务端配置:在公网上搭建一个 FRP 服务器作为中转节点。这个服务器需要有公网 IP 地址或域名,并安装配置好 FRP 服务器软件。
- 客户端配置:在内网中需要访问的设备上安装配置 FRP 客户端软件。客户端需要与服务端建立连接,因此需要知道服务器的 IP 地址或域名以及相应的端口号。
- 端口映射:在客户端配置文件中指定要映射到公网的本地服务的端口号。当外部请求到达 FRP 服务器时,服务器会将请求转发给客户端,并将客户端上对应端口的数据发送回客户端。
- 通信加密:FRP 支持对通信进行加密,以确保数据的安全传输。可以使用预共享密钥或证书来配置加密选项。
- 建立连接:客户端通过与 FRP 服务器建立长连接,实时保持与服务器的通信,并监听外部请求。
- 外部访问:当外部网络请求到达 FRP 服务器时,服务器将请求转发给客户端,客户端再将请求转发到本地的目标服务,从而实现了内网穿透。
frp部署
frp服务端
服务端建议部署在国内VPS,以提供良好的访问体验。
打开 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
服务器上解压安装包:
tar -zxvf frp_0.51.0_linux_amd64.tar.gz
进入解压目录,找到 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
设置和启动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
防火墙放行端口:
firewall-cmd --permanent --add-port=7000/tcp ## 添加监听端口 firewall-cmd --permanent --add-port=7500/tcp ## 添加管理后台端口 firewall-cmd --reload
浏览器打开“http://服务器IP:后台管理端口” ,输入用户名和密码
frp客户端
客户端则同上下载对应的压缩包,客户端win,mac,linux对应下载对应的压缩包便可
解压,进入压缩包内
编辑frp.ini
注意:
一个服务端可以同时给多个客户端使用
[ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;
除了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
登录服务器,防火墙放行监听的端口:
firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
运行
在windows上,在解压文件夹用./frpc.exe -c frpc.ini
在linux上,同服务器端设置服务
登录frp管理后台,客户端已连接上
frp安全性
在使用frp进行内网穿透时,安全性是至关重要的。以下是一些安全考虑和最佳实践:
- 使用强密码:在frp配置文件中设置强密码以保护服务器和客户端的访问权限。
- 加密通信:启用frp的加密功能,确保数据在传输过程中的安全。
- 定期更新frp版本:及时更新frp软件以获取最新的安全补丁和功能改进。
- 防火墙和访问控制:根据需要,在服务器和客户端上配置防火墙规则和访问控制列表,限制访问权限。
总结
在本文中,我们深入了解了frp内网穿透工具,并展示了它如何帮助我们轻松实现远程访问。通过理解内网穿透技术的背景、掌握frp的原理和配置方法,以及遵循安全考虑和最佳实践,您可以打开局域网的远程大门,轻松访问位于内网的设备。无论是家庭网络、办公网络还是其他场景,frp都是一款功能强大且易于使用的工具,为我们提供了便利和灵活性。现在,您可以尝试使用frp,享受远程访问的便捷与自由!