This page looks best with JavaScript enabled

frp 内网穿透的一些实践

 ·  ☕ 2 min read  ·  ✍️ 鱼子盖饭 · 👀... views

在知道 frp 之前我一直用的 autossh 通过与服务器建立 ssh 反向隧道的方式进行内网穿透

最近看了下 frp,这配置也太方便了吧!!

基本思路

目前我只有通过 ssh 访问内网的需求,近期可能会配置 frp 访问内网服务,到时再来更新

  1. 服务器 frp 监听一个端口
  2. 内网主机 frp 通过服务器的端口与服务器建立连接
  3. 内网主机将本地的 ssh 端口映射到服务器的另一个自定义端口

服务器的选择

目前 GCP 延迟和丢包率感人,在网络情况不好的情况下,没有什么比登上去输个命令就掉线更让人绝望的了(甚至服务器就在台湾)

这次看准了套路云的突发性能服务器,选了个本地的机房,然后服务器按量付费,设置勾选抢占式实例,带宽按量付费拉满

一顿操作猛如虎,一看价格,每小时 0.029 元

启动之后 ping 了下延迟,4ms

这就很舒服了

按量付费只在运行期间,因此需要的时候就启动,不用的时候就关机。但如果是不计费的方式,再次开机时会重新分配公网 IP,解决办法是每次开机后手动将域名解析到新 IP, 内网主机 frp 的 server_addr 配置为该域名

补充:虽然有 20G 磁盘,按理说停机后也会计费的,但并没有。不过我开了同样的第二台之后,两台都停机的情况下每小时有 1 分钱扣费,看似不多,算下来一个月也 6、7 块了

配置

以下是常规配置和 systemd 开机自启配置

服务器

地址:release

1
2
3
 wget https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_amd64.tar.gz
 tar -xzvf frp_0.31.2_linux_amd64.tar.gz
 mv frp_0.31.2_linux_amd64.tar.gz /usr/local/frp

编辑 /usr/local/frp/frps.ini

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[common]
bind_port = 7000
log_file = /usr/local/frp/frps.log
log_level = debug
log_max_days = 3
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
authentication_timeout = 0

运行

1
/usr/local/frp/frps -c /usr/local/frp/frps.ini

开机自启

编辑 /usr/lib/systemd/system/frps.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=always
RestartSec=1min

[Install]
WantedBy=multi-user.target

执行

1
sudo systemctl enable frps.service

内网主机

下载同服务器

编辑 /usr/local/frp/frpc.ini

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[common]
server_addr = x.x.x.x
server_port = 7000
log_file = /usr/local/frp/frpc.log
log_level = info
log_max_days = 3
admin_addr = 127.0.0.1
admin_port = 7500

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2333

运行

1
/usr/local/frp/frpc -c /usr/local/frp/frpc.ini

开机自启

编辑 /usr/lib/systemd/system/frpc.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
Restart=always
RestartSec=1min

[Install]
WantedBy=multi-user.target

执行

1
sudo systemctl enable frpc.service

鱼子盖饭
WRITTEN BY
鱼子盖饭
Get into trouble, make mistakes.


What's on this Page