FRP 内网穿透-不做留守嗑盐人

背景一

  • 实验室的服务器只能在内网访问,假期回家无法访问到实验室服务器。

背景二

  • 昨天和 Boss 开会,讨论关于论文的补充实验问题。
    原本我已经打算放弃做那个麻烦的补充实验,年关在即,毕竟归心似箭,无心嗑盐。
    但是 Boss 完全没有放弃的念头,直接来了句:等实验做完再回家吧。

  • 我的心哇凉哇凉的,以为春假就此栽了。
    好在 Boss 有个 Plan B,让我回家接着做实验(总比留守实验室好)。

  • Plan B 是 Tunnelling SSH over SSL/TLS,参考链接附上。Boss 还给了他写的笔记我参考,说他探过路此方法可行,结果我却走不通。

  • 为了不留守实验室,Google 并询问了下 Linux 大佬,最终尝试了 FRP 大法。

下载 FRP

  • 服务端,客户端都需要下载、解压
 wget https://github.com/fatedier/frp/releases/download/v0.15.1/frp_0.15.1_linux_amd64.tar.gz
 tar xzvf frp_0.15.1_linux_amd64.tar.gz
 mv frp_0.15.1_linux_amd64 frp

服务端

  • 一台具有公网 ip 的服务器,此例选腾讯云
  • rm frpc* 文件,不需要
  • cat frps.ini 可查看到 默认配置中监听的是 7000 端口,可根据自己实际情况修改。
[common]
bind_port = 7000           # 与客户端绑定的进行通信的端口
  • ./frps -c ./frps.ini 启动 FRP 服务端
  • 执行上一步前可先开启一个 screen

客户端

  • 选择内网一台服务器(本例选 172.xx.224.51)
  • rm frps* 文件,不需要
  • vim frpc.ini
[common]
server_addr = 118.126.104.xxx    # 公网服务器 ip
server_port = 7000               # 与服务端 bind_port 一致
 
# 公网通过 ssh 访问内部服务器
[ssh]
type = tcp               # 连接协议
local_ip = 172.xx.224.51 # 内网服务器 ip
local_port = 22          # ssh 默认端口号
remote_port = 6000       # 自定义的访问内部 ssh 端口号
  • ./frpc -c ./frpc.ini 启动 FRP 客户端
  • 执行上一步前可先开启一个 screen

ssh 登陆内网服务器

注意:执行下面 ssh 命令之前,处于非登陆外网服务器的状态,即处于任意一个本地普通 terminal 终端下。

  • 形式:ssh -oPort=6000 内网服务器登陆名@外网 ip

  • 登陆密码为内网服务器的密码

本实例:

ssh -oPort=6000 wuwl@118.126.104.185

即可登陆内网服务器。

遇到的问题

frpc 启动提示 “authorization timeout”

原因:工控机上的时钟跟服务器时钟差别太大造成

解决方法

在服务端 frps.ini 内添加:

authentication_timeout = 0

可能出现的问题和解决思路

内网服务器网络断开等各种意外。

写个脚本,思路如下:
步骤 1: 定时(或发现断开时)重新联网

curl -d "DDDDD=卡号&upass=密码&0MKKey=" https://drcom.szu.edu.cn

步骤 2: 定时(或发现断开时)发起frpc客户端重联

./frpc -c ./frpc.ini

版权声明:本文为leaf_130原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。