前言
实验室的机器(下称校内机)是强校内网环境,必须直接连上校园网才能访问和使用(甚至开了校内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
在ECS控制面板填入方向端口白名单
我是用的是阿里云的ECS,其界面如下。需要手动在控制面板添加7000端口(frp服务端口)和6000(校内网机器指定的公网访问端口)的限制。其中7000端口的授权对象是校内机ip,6000端口建议只开放给自己常用的ip,如果连不上再加,防止潜在的攻击。

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
设置开机自启(可选)
使用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地址。