内网穿透(FRP)

项目中涉及到了本地内网服务与公网服务的交互,从而学习了一下有关内网穿透的相关知识,我用的是FRP方式实现内网穿透。

核心步骤:公网服务器部署 FRP 服务端(frps),本地部署 FRP 客户端(frpc),配置客户端映射本地 WiFi 的 Java 服务端口,公网服务器开放对应端口,另一台服务访问「公网服务器 IP + 映射端口」即可。

我的公网服务部署在了linux上,本地内网服务是在windows上,所以frps部署在linux上,frpc部署在了windows上。

一.windows服务部署

1.下载地址:https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_windows_amd64.zip

解压后的目录结构

其中frpc.ini为新建文件,文件中的内容如下:

common server_addr = 1.1.1.1 # 替换为你的公网Linux服务器公网IP(必填!)

server_port = 7000 # 与服务端bind_port一致,固定7000

token = frp123456 # 与服务端token一致,固定frp123456

Windows本地Java服务映射规则(名称可自定义,不能重复,如windows-java-8081) windows-java-8081

type = tcp # 协议,Java Web/HTTP/TCP服务都用tcp,无需修改

local_ip = 127.0.0.1 # Windows本地服务IP,127.0.0.1即可(服务需监听0.0.0.0)

local_port = 8081 # Windows上要访问的本地服务端口(你的Java服务端口)

remote_port = 8081 # 公网服务器映射端口,Linux将访问这个端口,需开放TCP 8081(安全组/防火墙)

2.windows客户端启动方式

(1)临时启动:进入FRP目录cmd进入控制台,输入frpc.exe -c frpc.ini

缺点为关闭cmd窗口服务会自动关闭

(2)窗口后台运行:进入FRP目录cmd进入控制台,输入start /b frpc.exe -c frpc.ini

避免关闭 cmd 就停止

二.linux端服务部署

1.下载地址:https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

解压后的目录结构为:

其中frps.ini为新建文件,文件内容如下:

common

bind_port = 7000 # FRP客户端与服务端通信端口,必须开放TCP 7000(安全组/防火墙)

token = frp123456 # 自定义认证令牌,客户端必须和这个一致,防止他人非法连接

服务端启动方式:

后台启动并输出日志,关闭终端也不会停

nohup ./frps -c ./frps.ini > frps.log 2>&1 &

验证启动成功(查看7000端口是否监听)

netstat -tnlp | grep 7000

以上配置完成,并启动成功后直接通过公网ip+windows端服务端口+接口路径即可访问内网服务

三.关键必做(否则穿透失败!)

  1. 公网 Linux 服务器安全组 / 防火墙 开放两个 TCP 端口:7000(通信端口)、8081(映射端口);
  2. Windows 上的 Java 服务必须监听 0.0.0.0(而非 127.0.0.1),否则 FRP 转发后也访问不到;
  3. Windows 临时关闭防火墙测试(或放行 frpc.exe 和 8081 端口),防止本地拦截。
相关推荐
深信达沙箱3 小时前
轻量化沙箱防护|政企私有化IM防泄密升级,安全不增重
网络·源代码防泄密·源代码加密·磁盘加密·全盘加密·全磁盘加密
ESDWAN3 小时前
SD-WAN 是什么?工作原理、适用场景与选型要点
开发语言·网络·数据库·架构·php
云飞云共享云桌面3 小时前
智能装备工厂研发部门多设计师共享一台SolidWorks服务器做设备装配建模
运维·服务器·网络·人工智能·3d·自动化·制造
自由彩虹3 小时前
靶场通关16--victim1
linux·服务器·网络·安全·web安全·网络安全
wusam3 小时前
基于HCL的python脚本编程(4)
网络·python·智能路由器
叼烟扛炮3 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip
路由侠内网穿透.3 小时前
本地部署开源 WSGI HTTP 服务器 Gunicorn 并实现外部访问
运维·服务器·网络·网络协议·http·开源
箓维4 小时前
TCP Socket的基础实现
网络·网络协议·tcp/ip
C++ 老炮儿的技术栈4 小时前
Linux 动态库踩坑:明明重新编译了 .so,调用函数返回值却一直不变(libfjrobot.so 版本号异常排查实录)
linux·c语言·网络·c++·visual studio
车软学堂13 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化