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

news2025/1/16 20:06:39

背景

本人目前在境外某大学读博,校园网屏蔽了所有内网穿透的工具的数据包和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" ]; then
    echo "无法解析域名: $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"* ]]; then
    echo "路由规则已存在,无需更新: $EXPECTED_ROUTE"
else
    # 删除旧的路由规则(如果存在)
    sudo ip route del $IP_ADDRESS dev $WIFI_INTERFACE 2> /dev/null

    # 添加新的路由规则
    sudo ip route add $EXPECTED_ROUTE

    echo "路由更新完成: $EXPECTED_ROUTE"

    sudo systemctl restart frpc.service
fi


  1. SSH和FRP安全设置,参考前一篇文章。
  2. 开启frptables

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

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

相关文章

JUC-并发面试题

一、基础 1、为什么要并发编程 充分利用多核CPU的资源2、并发编程存在的问题 上下文切换:PU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。任务从保…

配置git环境与项目创建

项目设计 名称:KOB 项目包含的模块 PK模块:匹配界面(微服务)、实况直播界面(WebSocket协议) 对局列表模块:对局列表界面、对局录像界面 排行榜模块:Bot排行榜界面 用户中心模块&…

神经网络(Nature Network)

最近接触目标检测较多,再此对最基本的神经网络知识进行补充,本博客适合想入门人工智能、其含有线性代数及高等数学基础的人群观看 1.构成 由输入层、隐藏层、输出层、激活函数、损失函数组成。 输入层:接收原始数据隐藏层:进行…

c#安全-nativeAOT

文章目录 前记AOT测试反序列化Emit 前记 JIT\AOT JIT编译器(Just-in-Time Complier),AOT编译器(Ahead-of-Time Complier)。 AOT测试 首先编译一段普通代码 using System; using System.Runtime.InteropServices; namespace co…

Ubuntu22.04 gnome-builder gnome C 应用程序习练笔记(三)

八、ui窗体创建要点 .h文件定义(popwindowf.h)&#xff0c; TEST_TYPE_WINDOW宏是要创建的窗口样式。 #pragma once #include <gtk/gtk.h> G_BEGIN_DECLS #define TEST_TYPE_WINDOW (test_window_get_type()) G_DECLARE_FINAL_TYPE (TestWindow, test_window, TEST, WI…

专业140+总分420+河海大学863信号与系统考研经验电子信息通信与信息技术,真题,大纲,参考书。

今年的成绩出来倍感欣慰&#xff0c;决定考研的时候并没有想到自己可以考出420的分数&#xff0c;通过自己一年来的努力&#xff0c;成功上岸&#xff0c;期中专业课863信号与系统140接近满分&#xff08;非常感谢信息通信Jenny老师的专业课辅导和平时悉心答疑&#xff0c;不厌…

Zoho Mail企业邮箱商业扩展第3部分:计算财务状况

在Zoho Mail商业扩展系列的压轴篇章中&#xff0c;王雪琳利用Zoho Mail的集成功能成功地完成了各项工作&#xff0c;并顺利地建立了自己的营销代理机构。让我们快速回顾一下她的成功之路。 一、使用Zoho Mail成功方法概述 首先她通过Zoho Mail为其电子邮件地址设置了自定义域…

入门指南|Chat GPT 的兴起:它如何改变数字营销格局?

随着数字营销的不断发展&#xff0c;支持数字营销的技术也在不断发展。OpenAI 的 ChatGPT 是一项备受关注的突破性工具。凭借其先进的自然语言处理能力&#xff0c;ChatGPT 已被证明是全球营销人员的宝贵资产。在这份入门指南中&#xff0c;我们将探讨Chat GPT对数字营销专家及…

文心一言 VS 讯飞星火 VS chatgpt (198)-- 算法导论14.3 6题

六、用go语言&#xff0c;说明如何来维护一个支持操作MIN-GAP的一些数的动态集Q&#xff0c;使得该操作能给出Q中两个最接近的数之间的差值。例如&#xff0c;Q(1&#xff0c;5&#xff0c;9&#xff0c;15&#xff0c;18&#xff0c;22)&#xff0c;则MIN-GAP返回18-153&#…

发文新思路!双流卷积!CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的故障识别程序!直接运行!

适用平台&#xff1a;Matlab2023版本及以上 本程序参考中文EI期刊《电力自动化设备》2023年12月29号网络首发文献&#xff1a;《基于格拉姆角场与并行CNN的并网逆变器开关管健康诊断》,此外&#xff0c;在此基础上进一步对模型进行多重改进&#xff0c;每个人都可以构造属于自…

幻兽帕鲁服务器创建私服教程(新版教程更简单)

幻兽帕鲁官方服务器不稳定&#xff1f;自己搭建幻兽帕鲁服务器&#xff0c;低延迟、稳定不卡&#xff0c;目前阿里云和腾讯云均推出幻兽帕鲁专用服务器&#xff0c;腾讯云直接提供幻兽帕鲁镜像系统&#xff0c;阿里云通过计算巢服务&#xff0c;均可以一键部署&#xff0c;鼠标…

二维差分---三维差分算法笔记

文章目录 一.二维差分构造差分二维数组二维差分算法状态dp求b[i][j]数组的二维前缀和图解 二.三维前缀和与差分三维前缀和图解:三维差分核心公式图解:模板题 一.二维差分 给定一个原二维数组a[i][j],若要给a[i][j]中以(x1,y1)和(x2,y2)为对角线的子矩阵中每个数都加上一个常数…

金融信贷风控评分卡模型

评分卡模型概念 评分模型是根据借款人的历史数据&#xff0c;选取不同维度的数据类型&#xff0c;通过计算而得出的对借款人信用情况打分的模型。不同等级的信用分数代表了借款人信用情况的好坏&#xff0c;以此来分析借款人按时还款的可能性。 评分卡模型分类 A卡&#xff…

【linux系统体验】-archlinux折腾日记

archlinux 一、系统安装二、系统配置及美化2.1 中文输入法2.2 安装virtualbox增强工具2.3 终端美化 三、问题总结3.1 终端中文乱码 一、系统安装 安装步骤人们已经总结了很多很全: Arch Linux图文安装教程 大体步骤&#xff1a; 磁盘分区安装 Linux内核配置系统&#xff08;…

过渡效果的艺术:CSS transition 让网页交互更平滑(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

JavaWeb:调出Maven面板

问题描述 情况说明&#xff1a;IDEA中找不到Maven面板&#xff0c;Maven面板如下图所示&#xff1a; 解决方案 选择 View > Appearance > Tool Window Bars&#xff1a; 然后就会出现Maven面板了。

5G技术对物联网的影响

随着数字化转型的加速&#xff0c;5G技术作为通信领域的一次重大革新&#xff0c;正在对物联网&#xff08;IoT&#xff09;产生深远的影响。对于刚入行的朋友们来说&#xff0c;理解5G技术及其对物联网应用的意义&#xff0c;是把握行业发展趋势的关键。 让我们简单了解什么是…

力扣hot100 -- 双指针

目录 &#x1f382;移动零 &#x1f319;盛最多水的容器 &#x1f33c;三数之和 &#x1f33c;接雨水 前缀和 辅助数组 双指针 单调栈 &#x1f382;移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 关于swap #include <iostream> #include <vec…

FastJson、Jackson使用AOP切面进行日志打印异常

FastJson、Jackson使用AOP切面进行日志打印异常 一、概述 1、问题详情 使用FastJson、Jackson进行日志打印时分别包如下错误&#xff1a; 源码&#xff1a; //fastjon log.info("\nRequest Info :{} \n"&#xff0c; JSON.toJSONString(requestInfo)); //jackson …

ubuntu22.04安装部署03: 设置root密码

一、前言 ubuntu22.04 安装完成以后&#xff0c;默认root用户是没有设置密码的&#xff0c;需要手动设置。具体的设置过程如下文内容所示&#xff1a; 相关文件&#xff1a; 《ubuntu22.04装部署01&#xff1a;禁用内核更新》 《ubuntu22.04装部署02&#xff1a;禁用显卡更…