Featured image of post 使用Frp内网穿透随时随地访问校内网机器

使用Frp内网穿透随时随地访问校内网机器

前言

实验室的机器(下称校内机)是强校内网环境,必须直接连上校园网才能访问和使用(甚至开了校内vpn也连不上)。为了在校外或者断网环境也能优雅的访问机器,我使用了frp内网穿透将内网机器映射到公网服务器上,以此链接内网机器。前排提示,理论上来说这是违规操作,所以请务必做好转发端口的防护以避免内网机器被频繁攻击。

准备

你需要一个有公网ip的服务器(下称服务器),我用的是阿里云的ECS,2C2G,香港节点,带有一个静态ip。理论上来说动态ip也可以通过DDNS来解析服务并且更加安全,但是我懒得折腾,如果有读者跑通了请务必告诉我qwq。

公网机器操作

下载并解压frp

1
2
wget <https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz>
tar -zxvf frp_0.51.3_linux_amd64.tar.gz

配置frps.ini

1
2
3
4
5
6
[common]
bind_port = 7000        # frp服务端口
token = your_token      # 认证token(自定义,务必复杂一点)
dashboard_port = 7500   # 管理面板端口
dashboard_user = admin  # 管理员用户名
dashboard_pwd = admin   # 管理员密码(自定义,务必复杂一点)

启动frps

1
./frps -c frps.ini

在ECS控制面板填入方向端口白名单

我是用的是阿里云的ECS,其界面如下。需要手动在控制面板添加7000端口(frp服务端口)和6000(校内网机器指定的公网访问端口)的限制。其中7000端口的授权对象是校内机ip,6000端口建议只开放给自己常用的ip,如果连不上再加,防止潜在的攻击。

image.png

CIDR规则

由于本人经常在校内校外跑,一个个添加ip极其麻烦。折腾了一会才知道ip有通配符这个东西,遂添加关于CIDR规则的描述。CIDR就是类似于x.x.x.x/x的形式,前四位是模糊ip地址,只用填确定的地址的数字即可,不确定的用任意数字表示(一般是0),/后面表示前面多少位是固定的。

以我学校为例,我们学校教育网ip的ip段为115.156.0.0-115.157.127.255,写成CIDR格式即为115.156.0.0/15。

学校服务器(frpc)配置

同样下载并解压frp

1
2
wget <https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz>
tar -zxvf frp_0.51.3_linux_amd64.tar.gz

配置frpc.ini

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[common]
server_addr = x.x.x.x   # 公网服务器IP
server_port = 7000      # 对应frps的bind_port
token = your_token      # 与frps相同的token

[ssh]
type = tcp
local_ip = 127.0.0.1   # 本地IP
local_port = 22        # 本地SSH端口
remote_port = 6000     # 公网访问端口

启动frpc

1
./frpc -c frpc.ini

设置开机自启(可选)

使用systemd创建服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建frpc.service
sudo vim /etc/systemd/system/frpc.service

[Unit]
Description=frpc daemon
After=network.target

[Service]
Type=simple
ExecStart=/path/to/frpc -c /path/to/frpc.ini
Restart=always

[Install]
WantedBy=multi-user.target

启用服务

1
2
sudo systemctl enable frpc
sudo systemctl start frpc

使用

现在,你可以在任何地方使用如下指令链接校内机了

1
ssh -p 6000 user@public_server_ip

其中user是你校内机的用户名,public_server_ip是公网机器的ip地址。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计