frp 使用,关键词:内网穿透

服务端安装

  1. arch 看下server架构,后面好选择下载那个版本,一般都是amd64架构的“X86_64“

  2. 下载对应架构的 frp 版本
    1
    2
    3
    4
     wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
    
     # 解压
     tar -zxvf frp_0.34.3_linux_amd64.tar.gz
    
  3. 修改 frps.ini
    1
    2
    3
    4
    5
    6
    7
    8
     [common]
     bind_port = 7000
     token = 12345678
     dashboard_port = 7500
     dashboard_user = admin
     dashboard_pwd = admin
     vhost_http_port = 10080
     vhost_https_port = 10443
    
    • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
    • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

    • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
    • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
    • “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
  4. 运行frps的服务端: ./frps -c frps.ini

  5. 配置systemctl来控制,服务端运行

    新建 /usr/lib/systemd/system/frp.service

    文件模板在 frp_0.34.3_linux_amd64/systemd/ 目录下面,调整下frp的目录就好:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     [Unit]
     Description=Frp Server Service
     After=network.target
    
     [Service]
     Type=simple
     User=root
     Restart=on-failure
     RestartSec=5s
     ExecStart=/root/frp/frp_0.34.3_linux_amd64/frps -c /root/frp/frp_0.34.3_linux_amd64/frps.ini
    
     [Install]
     WantedBy=multi-user.target
    

    在 Ubuntu 系的系统,就将 frps.service 文件拷贝到 /lib/systemd/system/ 下面。CentOS 系的系统,拷贝到 /usr/lib//systemd/system/` 下面。

    重新加载服务的配置文件

    systemctl daemon-reload

    启动/停止/重启,查看状态,设置开机自启/关闭开机自启

    1
    2
    3
    4
    5
    6
     systemctl start frp
     systemctl stop frp
     systemctl restart frp
     systemctl status frp
     systemctl enable frp
     systemctl disable frp
    

Openwrt

  1. 服务 > Frp内网穿透
  2. 全局设置
    • 服务器: frps地址
    • 端口: 7000
    • 令牌: token
  3. 添加 RDP 穿透,示例如下,其他雷同
  4. 服务列表 > 添加
    1. 开启状态:启用
    2. Frp协议类型: TCP
    3. 远程端口: 自己看,这里假设 8000
    4. 内网主机地址: Openwrt 内网中主机的IP地址
    5. 内网主机端口: 3389
    6. 保存&应用
  5. 使用RDP工具,远程访问 your-frp-server-ip:8000 就可以连接了

客户端

frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
[common]
server_addr = 远程frp服务器ip
server_port = 远程frp服务器端口
token = 远程frp服务器token

[http]
type = http
local_ip = 127.0.0.1
local_port = 本地端口号
remote_port = 远程frp服务器的http服务端口号
custom_domains = 自定义配置的域名
subdomain = 匹配服务端配置的subdomain_host

示例

1
2
3
4
5
6
7
8
9
10
11
12
[common]
server_addr = xx.xx.xx.xx
server_port = 7000
token = 123

[web] 
type = http
custom_domains = xx.xx.xx.xx
local_ip = 127.0.0.1
local_port = 8080
custom_domains = xxx.xxx.xxx
subdomain = k2p

启动

1
2
3
4
./frpc -c ./frpc.ini

# 后台启动
nohup ./frpc -c ./frpc.ini &

Windows 客户端

使用命令提示符或Powershell进入该目录下 cd C:\frp

并执行 ./frpc -c frpc.ini

运行frpc程序,窗口中输出如下内容表示运行正常。

  • 客户端后台运行及开机自启
1
2
3
4
5
6
7
8
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit