frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp,udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

服务端

下载对应版本的 frp 压缩包,解压到指定目录,解压后 chmod +x frps 授予可执行权限。修改配置文件 frps.ini

[common]
# frp 服务端端口
bind_port = 7000

# frp 服务端密码,配置客户端时用到
token = 12345678

# 认证超时时间,默认为900秒
authentication_timeout = 900

# 网页管理端口
dashboard_port = 7500

# 仪表盘访问的用户名密码
dashboard_user = admin
dashboard_pwd = admin

# 使用 frp 穿透访问内网中的网站,不设置则不会开启这项功能
vhost_http_port = 10080
vhost_https_port = 10443

配置好之后使用 ./frps -c frps.ini 启动服务端

客户端

下载对应版本的 frp 压缩包,解压到指定目录,修改配置文件 frpc.ini,完整的配置说明参见中文文档

[common]
# 服务端地址
server_addr = 0.0.0.0
# 服务端端口
server_port = 7000
# 服务端密码
token = 12345678

# 自定义配置名称,格式为“[名称]”
[ssh]
# 连接类型,填 tcp 或 udp
type = tcp
# 本地ip,填你需要转发到的目的ip
local_ip = 127.0.0.1
# 需要转发到的端口
local_port = 3389
# 是否加密客户端与服务端之间的通信,默认是 false
use_encryption = false
# 是否压缩客户端与服务端之间的通信,默认是 false
use_compression = false
# 服务端的远程监听端口
remote_port = 6000

开机启动

1. 服务端

vim /usr/lib/systemd/system/frp.service

添加以下内容:

[Unit]
Description=Frp service
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
Restart=always
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

使用 systemctl daemon-reload 重启加载服务文件后,以下命令控制:

systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp

2. 客户端

方法一:添加到启动目录

新建一个 frpc.bat ,添加以下内容:

@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

将该文件放入Windows启动文件夹,

# 系统启动文件夹:
X:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
# 用户启动文件夹:
X:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

这个方法最大缺点是电脑要登录后才能连接

方法二:创建计划任务

计算机管理-系统工具-任务计划程序,在右边面板点击创建任务。

方法三:用 winsw 将 frp 注册为系统服务

下载 winsw,WinSW.NET2.exe 一般运行在 win7、win server2008 的系统中,WinSW.NET4.exe 一般运行在 win10、win server 2012 及以后的系统中,将 WinSW.NET4.exe 改名为 winsw.exe,放到 frp 相同的目录里,在同一个目录里创建一个 utf8 编码的文本文件,文件名是 winsw.xml,内容是:

<service>
    <id>frp</id>
    <name>frpc</name>
    <description>frp remote control</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <onfailure action="restart" delay="60 sec"/>
    <onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>

以管理员权限打开一个命令窗口,进入到 frp 所在目录,使用以下命令控制:

winsw install
winsw start
winsw stop
winsw uninstall

如果你认为这篇文章还不错,可以考虑为我充电 ⚡️