内网穿透

服务端

执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz

tar -xzvf frp_0.57.0_linux_amd64.tar.gz

rm -rf frp_0.57.0_linux_amd64.tar.gz

cd frp_0.57.0_linux_amd64

rm frpc

rm frpc.toml

chmod +x frps

touch frps.yaml

配置 frps.yaml

  • bindPort: frp 服务端监听端口
  • token: 用于验证客户端
  • webServer: frp 面板配置
1
2
3
4
5
6
7
8
bindPort: 7000
auth:
token: xxbsxy
webServer:
addr: 0.0.0.0
port: 7500
user: root
password: xxbsxy

测试运行

1
2
3
4
5
6
7
./frps -c ./frps.yaml

# 输出以下内容为成功
2024-05-30 09:42:26.602 [I] [frps/root.go:105] frps uses config file: ./frps.yaml
2024-05-30 09:42:26.722 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2024-05-30 09:42:26.722 [I] [frps/root.go:114] frps started successfully
2024-05-30 09:42:26.722 [I] [server/service.go:350] dashboard listen on 0.0.0.0:7500

后台运行

1
2
3
cd /etc/systemd/system

touch frps.service

frps.service

  • Description: 描述你的服务
  • After: 指定你的服务在哪些其他服务之后启动
  • Wants: 指定你的服务依赖的其他服务
  • ExecStart: 指定你的服务的启动命令
  • Restart: 指定服务在失败后是否重启等参数
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=frps service
After=network.target NetworkManager.service systemd-networkd.service iwd.service

[Service]
Type=simple
Restart=always
ExecStart=/www/frp/frps -c /www/frp/frps.yaml

[Install]
WantedBy=multi-user.target

运行

1
2
3
4
5
6
7
8
9
10
# 启动
systemctl start frps
# 重启
sudo systemctl restart frps
# 停止
enable systemctl restart frps
# 查看状态
systemctl status frps
# 运行中服务
systemctl list-units --type=service --state=running

客户端

执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz

tar -xzvf frp_0.57.0_linux_amd64.tar.gz

rm -rf frp_0.57.0_linux_amd64.tar.gz

cd frp_0.57.0_linux_amd64

rm frps

rm frps.toml

chmod +x frpc

touch frpc.yaml

配置 frpc.yaml 文件

  • serverAddr: 服务器的公网 IP
  • serverPort: 服务器 frp 端口
  • token: 与 frps.yaml 保持一致
  • proxies: 需要穿透的服务,以 GPT 为例
1
2
3
4
5
6
7
8
9
serverAddr: 47.98.243.65
serverPort: 7000
auth:
token: xxbsxy
proxies:
- name: GPT
type: tcp
localPort: 3200
remotePort: 3200

测试运行

1
2
3
4
5
6
7
8
./frpc -c ./frpc.yaml

# 输出以下内容为成功
2024-05-30 09:48:35.565 [I] [sub/root.go:142] start frpc service for config file [./frpc.yaml]
2024-05-30 09:48:35.565 [I] [client/service.go:294] try to connect to server...
2024-05-30 09:48:35.614 [I] [client/service.go:286] [349916087c03e72a] login to server success, get run id [349916087c03e72a]
2024-05-30 09:48:35.615 [I] [proxy/proxy_manager.go:173] [349916087c03e72a] proxy added: [AList]
2024-05-30 09:48:35.634 [I] [client/control.go:170] [349916087c03e72a] [AList] start proxy success

后台运行

1
2
3
cd /etc/systemd/system

touch frpc.service

frps.service

  • Description: 描述你的服务
  • After: 指定你的服务在哪些其他服务之后启动
  • Wants: 指定你的服务依赖的其他服务
  • ExecStart: 指定你的服务的启动命令
  • Restart: 指定服务在失败后是否重启等参数
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=frpc service
After=network.target NetworkManager.service systemd-networkd.service iwd.service

[Service]
Type=simple
Restart=always
ExecStart=/www/frp/frpc -c /www/frp/frpc.yaml

[Install]
WantedBy=multi-user.target

运行

1
systemctl start frpc