frp内网穿透,从外网访问内网资源

0. 使用背景

  • 校内实验室的电脑使用的是校园内网(10.x.x.x这种),在家里或旅游时无法访问实验室的机器(由于ipv4地址有限,因此没有公网ip),特别是疫情期间,待在家里,没办法使用实验室的电脑做实验。
  • 使用frp内网穿透(github开源)可以解决这一痛点
  • 原理简介:
    (本教程仅支持ssh远程连接,关于远程桌面等可以另找资源)

1. 前提条件(我两台机器都是Linux)

  • 【服务器端】一个公网ip:我申请的是腾讯云学生优惠的轻量应用服务器,带宽5M
  • 【客户端】一台在内网的电脑
  • 下载好上面连接中的frp工具,并解压(在一处下载即可,客户端或服务器端都可以;如果觉得往另一台机器传输麻烦,在客户端和服务器端都下载)
# 以下载在服务器端为例
$ wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd64.tar.gz
$ tar xzvf frp_0.29.1_linux_amd64.tar.gz
$ mv frp_0.29.1_linux_amd64 frp

{以下命令均在root下运行}

2. 配置服务器端(拥有公网ip的服务器)

$ cd frp
$ cp frps /usr/bin/
$ cp systemd/frps.service /usr/lib/systemd/system/
$ mkdir /etc/frp
$ cp frps.ini /etc/frp
$ vim /etc/frp/frps.ini

修改内容如下

[common]
# frp客户端监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 52010  # 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

启动服务

# 设置开机启动
$ systemctl enable frps
# 启动服务
$ systemctl start frps
# 查看是否正常运行
$ systemctl status frps

浏览器中进入frp管理后台(假如你的公网IP为88.11.123.5)

# 浏览器中输入http://88.11.123.5:7500
# 账号和密码是上面设置的admin, admin

3. 配置客户端(内网实验室的PC)

$ cd frp
$ cp frpc /usr/bin/
$ cp systemd/frpc.service /lib/systemd/system/
$ mkdir /etc/frp
$ cp frpc.ini /etc/frp
$ vim /etc/frp/frpc.ini

修改内容如下

# 客户端配置(假如你的公网IP为88.11.123.5)
[common]
server_addr = 88.11.123.5
server_port = 7000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000  # 这个自定义,之后在ssh连接的时候要用

# 配置http服务,可用于小程序开发、远程调试等(以下部分选填)
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test.hijk.pw  # web域名
remote_port = 自定义的远程服务器端口,例如8080

启动服务

# 设置开机启动
$ systemctl enable frpc
# 启动服务
$ systemctl start frpc
# 查看是否正常运行
$ systemctl status frpc

4. 连接测试

  • 前提:在云服务器控制台中的防火墙中开启上面设置的端口7000, 7500, 6000
  • 测试:
$ ssh labpc@88.11.123.5 -p 6000
# labpc: 内网实验室的用户名  88.11.123.5:公网ip地址  6000:内网中与服务器建立映射的端口
  • 使用:直接使用VS code的Remote SSH可以访问内网中的文件目录,这样写代码很方便

参考资料:https://blog.csdn.net/weixin_43922901/article/details/109261700

posted @ 2021-01-22 21:18  libbin  阅读(913)  评论(0编辑  收藏  举报