在知道 frp 之前我一直用的 autossh 通过与服务器建立 ssh 反向隧道的方式进行内网穿透
最近看了下 frp,这配置也太方便了吧!!
基本思路
目前我只有通过 ssh 访问内网的需求,近期可能会配置 frp 访问内网服务,到时再来更新
- 服务器 frp 监听一个端口
- 内网主机 frp 通过服务器的端口与服务器建立连接
- 内网主机将本地的 ssh 端口映射到服务器的另一个自定义端口
服务器的选择
目前 GCP 延迟和丢包率感人,在网络情况不好的情况下,没有什么比登上去输个命令就掉线更让人绝望的了(甚至服务器就在台湾)
这次看准了套路云的突发性能服务器,选了个本地的机房,然后服务器按量付费,设置勾选抢占式实例,带宽按量付费拉满
一顿操作猛如虎,一看价格,每小时 0.029 元
启动之后 ping 了下延迟,4ms
这就很舒服了
按量付费只在运行期间,因此需要的时候就启动,不用的时候就关机。但如果是不计费的方式,再次开机时会重新分配公网 IP,解决办法是每次开机后手动将域名解析到新 IP, 内网主机 frp 的 server_addr
配置为该域名
补充:虽然有 20G 磁盘,按理说停机后也会计费的,但并没有。不过我开了同样的第二台之后,两台都停机的情况下每小时有 1 分钱扣费,看似不多,算下来一个月也 6、7 块了
配置
以下是常规配置和 systemd
开机自启配置
服务器
地址:release
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
[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
运行
/usr/local/frp/frps -c /usr/local/frp/frps.ini
开机自启
编辑 /usr/lib/systemd/system/frps.service
[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
执行
sudo systemctl enable frps.service
内网主机
下载同服务器
编辑 /usr/local/frp/frpc.ini
[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
运行
/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
开机自启
编辑 /usr/lib/systemd/system/frpc.service
[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
执行
sudo systemctl enable frpc.service