在屏蔽任何FRP环境下从零开始搭建安全的FRP内网穿透服务

背景

本人目前在境外某大学读博,校园网屏蔽了所有内网穿透的工具的数据包和IP访问,为了实现在家也能远程访问服务器,就不得不先开个学校VPN,再登陆。我们实验室还需要访问另一个大学的服务器,每次我都要去找另一个大学的同学借账户和动态token访问,不胜其烦。

我尝试了包括向日葵、FRP、ngrok等多个内网穿透工具,在校园无线网、校园访客WiFi、有线网均做了测试。我发现大学为了防hack,真是煞费苦心:最终这些数据包全被过滤了

我想到的解决方案,有两点:1. 进一步加密frp等工具的流量,让防火墙认不出来;2. 买插sim卡的无线路由器一步到位(前提是服务器环境有手机信号)。

我最终为了节约时间,选择了后者。成本包括FRP服务器、路由器、流量卡在内大概500元RMB,能保证一年的ssh访问流量(77GB)。果然,能用钱解决的问题,就不是问题。

步骤

内网穿透diagram

在这里插入图片描述

FRP服务器搭建

选购服务器

  1. FRP服务:我选择了同城的低成本vps,不到200一年,521MB内存,70Mbps网口。实测下载速度跑到6MB/s没啥压力。
  2. 冗余服务器:我在网上找了做ngrok隧道的,做了冗余隧道。万一FRP程序死机了,还有另一条冗余隧道。

FRP server搭建

  1. github下载最新版FRP客户端和服务端:github地址
  2. 根据文档一步步搭建FRP服务端:文档
  3. 我FRP server主要配置如下:
bindPort = 7000
auth.token = "填写长一点的数字+字母的token,我试过加符号会出错"
# 服务端dashboard
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
#日志记录等级,有trace, debug, info, warn, error
log.level = "info"
#日志保留时间
log.maxDays = 3
log.to = "/root/frp_0.54.0_linux_amd64/log/frps.log"

详细配置参考官方文档

启动FRP服务器

使用以下命令启动服务器:./frps -c ./frps.toml。 使用以下命令启动客户端:./frpc -c ./frpc.toml。
如果需要在后台长期运行,建议结合其他工具,如 systemd 和 supervisor。

路由器&SIM流量卡选购

路由器特点:支持以太网口、SIM卡插入、外部电源供电
踩坑:我就是买了WiFi蛋,一开始可以usb有线网接入,后面供电不行,只能开启wifi接入,结果网速慢多了。

SIM卡:零月租,纯流量,77G 365天。SSH没几个人用,每天平均200多M,应该够用了。
在这里插入图片描述

Client路由设置

  1. 确定主要流量走以太网(校园网);只有内网穿透流量走流量卡(SSH流量);
  2. ip route get {FRP服务器ip}查看是否走了wifi路由器,用traceroute {域名}也可以;
  3. 考虑到FRP服务器ip可能会变,需要定时解析;
#!/bin/bash# 域名
DOMAIN_NAME="xx.xx.com"# 使用dig命令解析域名获取IP地址
IP_ADDRESS=$(dig +short $DOMAIN_NAME | tail -n1)if [ -z "$IP_ADDRESS" ]; thenecho "无法解析域名: $DOMAIN_NAME"exit 1
fi# WiFi接口名称,注意下面只是example接口名
WIFI_INTERFACE="wlx200db0362a21"# 获取WiFi接口的默认网关
WIFI_GATEWAY=$(ip route show default | grep $WIFI_INTERFACE | awk '{print $3}')# 构造预期的路由规则
EXPECTED_ROUTE="$IP_ADDRESS via $WIFI_GATEWAY dev $WIFI_INTERFACE"# 检查是否已存在预期的路由规则
EXISTING_ROUTE=$(ip route show to match $IP_ADDRESS | grep $WIFI_INTERFACE)if [[ "$EXISTING_ROUTE" == *"$EXPECTED_ROUTE"* ]]; thenecho "路由规则已存在,无需更新: $EXPECTED_ROUTE"
else# 删除旧的路由规则(如果存在)sudo ip route del $IP_ADDRESS dev $WIFI_INTERFACE 2> /dev/null# 添加新的路由规则sudo ip route add $EXPECTED_ROUTEecho "路由更新完成: $EXPECTED_ROUTE"sudo systemctl restart frpc.service
fi
  1. SSH和FRP安全设置,参考前一篇文章。
  2. 开启frptables

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2775907.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

海外云手机——平台引流的重要媒介

随着互联网的飞速发展,跨境电商、短视频引流以及游戏行业等领域正经历着迅猛的更新换代。在这个信息爆炸的时代,流量成为至关重要的资源,而其中引流环节更是关乎业务成功的关键。海外云手机崭露头角,成为这一传播过程中的重要媒介…

消息中间件:Puslar、Kafka、RabbigMQ、ActiveMQ

消息队列 消息队列:它主要用来暂存生产者生产的消息,供后续其他消费者来消费。 它的功能主要有两个: 暂存(存储)队列(有序:先进先出 从目前互联网应用中使用消息队列的场景来看,…

【龙年大礼】| 2023中国开源年度报告!

【中国开源年度报告】由开源社从 2015 年发起,是国内首个结合多个开源社区、高校、媒体、风投、企业与个人,以纯志愿、非营利的理念和开源社区协作的模式,携手共创完成的开源研究报告。后来由于一些因素暂停,在 2018 年重启了这个…

Qt PCL学习(二):点云读取与保存

注意事项 版本一览:Qt 5.15.2 PCL 1.12.1 VTK 9.1.0前置内容:Qt PCL学习(一):环境搭建 0. 效果演示 1. pcl_open_save.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgets// 添加下行代码&#…

[word] word2019段落中创建纵横混排的方法图解教程 #知识分享#其他#职场发展

word2019段落中创建纵横混排的方法图解教程 有时候在word文档中需要让文字纵横混排,word2019正好为我们带来了纵横混排的功能了,今天我们就来给大家介绍一下word2019段落中创建纵横混排的方法。 步骤1:打开Word文档,选中需要纵向…

MT4和MT5中如何创建挂单,很简单,fpmarkets1秒教会

其实在MT4和MT5中创建挂单是非常容易的,今天fpmarkets1秒教会,接下来一步一步的演示: 首先单击新订单,将出现设置窗口。在“类型”选项卡中选择“按待定顺序”。 接着选择挂单的类型。选择买入止损单,并指定订单执行的…

【Leetcode】236. 二叉树的最近公共祖先

文章目录 题目思路代码结果 题目 题目链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可…

Python爬虫http基本原理#2

Python爬虫逆向系列(更新中):http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一…

攻防世界 CTF Web方向 引导模式-难度1 —— 1-10题 wp精讲

目录 view_source robots backup cookie disabled_button get_post weak_auth simple_php Training-WWW-Robots view_source 题目描述: X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 不能按右键,按F12 robots …

备战蓝桥杯---搜索(完结篇)

再看一道不完全是搜索的题&#xff1a; 解法1&#xff1a;贪心并查集&#xff1a; 把冲突事件从大到小排&#xff0c;判断是否两个在同一集合&#xff0c;在的话就返回&#xff0c;不在的话就合并。 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace …

CTF--Web安全--SQL注入之‘绕过方法’

一、什么是绕过注入 众所周知&#xff0c;SQL注入是利用源码中的漏洞进行注入的&#xff0c;但是有攻击手段&#xff0c;就会有防御手段。很多题目和网站会在源码中设置反SQL注入的机制。SQL注入中常用的命令&#xff0c;符号&#xff0c;甚至空格&#xff0c;会在反SQL机制中…

从github上拉取项目到pycharm中

有两种方法&#xff0c;方法一较为简单&#xff0c;方法二用到了git bash&#xff0c;推荐方法一 目录 有两种方法&#xff0c;方法一较为简单&#xff0c;方法二用到了git bash&#xff0c;推荐方法一方法一&#xff1a;方法二&#xff1a; 方法一&#xff1a; 在github上复制…

【开源】JAVA+Vue.js实现高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

基于鲲鹏服务器的LNMP配置

基于鲲鹏服务器的LNMP配置 系统 Centos8 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) 卸载已经存在的旧版本的安装包 # rpm -qa | grep php #查看已经安装的PHP旧版本# rpm -qa | grep php | xargs rpm -e #卸载已经安装的旧版&#xff0c;如果提示有…

介绍页引导页业务网搭建HTML网站源码

介绍页引导页业务网搭建HTML网站源码 介绍页引导页业务网搭建网站源码&#xff0c;HTMLJSCSS,卡片式风格业务介绍&#xff0c;简单大气,喜欢的朋友拿去吧&#xff0c;源码免积分下载 https://download.csdn.net/download/huayula/88821635 蓝奏云&#xff1a;https://wfr.lan…

Django(十)

1. Ajax请求 浏览器向网站发送请求时&#xff1a;URL 和 表单的形式提交。 GETPOST 特点&#xff1a;页面刷新。 除此之外&#xff0c;也可以基于Ajax向后台发送请求&#xff08;偷偷的发送请求&#xff09;。 依赖jQuery编写ajax代码 $.ajax({url:"发送的地址"…

Go 语言 for 的用法

For statements 本文简单翻译了 Go 语言中 for 的三种用法&#xff0c;可快速学习 Go 语言 for 的使用方法&#xff0c;希望本文能为你解开一些关于 for 的疑惑。详细内容可见文档 For statements。 For statements with single condition 在最简单的形式中&#xff0c;只要…

notepad++成功安装后默认显示英文怎么设置中文界面?

前几天使用电脑华为管家清理电脑后&#xff0c;发现一直使用的notepad软件变回了英文界面&#xff0c;跟刚成功安装的时候一样&#xff0c;那么应该怎么设置为中文界面呢&#xff1f;具体操作如下&#xff1a; 1、打开notepad软件&#xff0c;点击菜单栏“Settings – Prefere…

video / image上传操作-校验、截取首帧和正方形预览图等

常见video / image上传操作-校验、截取首帧和正方形预览图等。 上回搞了一个视频和图片上传和校验的需求&#xff0c;感觉学到很多&#xff0c;一些常见的函数记录如下&#xff1a; 1. 图片校验尺寸 const { maxCount 30, maxWidth, maxHeight, minHeight 200, minWidth …

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中&#xff0c;你可以使用expect来监听程序输出&#xff0c;…