Frp内网穿透搭建教程

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,本教程意在解决外网连接内网服务器(SSH)、内网Windows PC(RDP)。

1.下载Frp软件

https://github.com/fatedier/frp/releases

这里,我们以公网Linux服务器作为Frp服务端,内网Linux服务器、内网Windows PC作为客户端。软件压缩包同时包含了服务端和客户端,所以只需要按照系统下载即可。

例如,Linux 64位为:

frp_0.30.0_linux_amd64.tar.gz

Windows 64位为

frp_0.30.0_windows_amd64.zip

2.配置Linux服务端

此服务器需具有公网IP,作为frp服务端使用。

修改 frps.ini 如下:

[common]
bind_port = 7000  # 内部绑定端口,供客户端连接服务端使用
token = 010ab1fb-fcb3-40ea-a4e2-eb5d8bd19925  # 连接验证

注:token为连接验证,需要在服务端和客户端的[common]字段里同时设置,相同则能连接。这里推荐一个生成UUID的网站来生成token: https://www.uuidgenerator.net/

设置 systemctl 守护进程与开机自启

新建frp.service文件

$ vim /etc/systemd/system/frp.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

注意根据自身情况,修改ExecStart的程序目录。

开机自启:

$ systemctl enable frp

启动frp

$ systemctl start frp

3.配置Linux客户端(SSH)

此为需要远程连接的内网Linux服务器。

修改 frpc.ini 如下:

[common]
server_addr = xxx.xxx.xxx.xxx  # 公网IP,即服务端IP
server_port = 7000  # 内部绑定端口,供客户端连接服务端使用
token = 010ab1fb-fcb3-40ea-a4e2-eb5d8bd19925  # 需与服务端token相同

[ssh]  # 配置多个客户端时,名字不能相同,否则会冲突
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000  # 暴露在外的端口,供ssh连接使用

设置 systemctl 守护进程与开机自启

这里和服务端不同的就是服务端启动用frps,客户端启动用frpc。

$ vim /etc/systemd/system/frp.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini

[Install]
WantedBy=multi-user.target

开机自启和启动frp,请参考服务端设置,不做赘述。

试试远程连接吧

IP为服务端IP(公网IP),端口号为frpc.ini里设置的remote_port,此处为6000

4.配置Windows客户端(RDP)

配置Windows客户端的目的是利用Windows自带的远程桌面连接内网PC,抛弃辣鸡Teamviewer。

修改 frpc.ini 如下:

[common]
server_addr = xxx.xxx.xxx.xxx  # 公网IP,即服务端IP
server_port = 7000  # 内部绑定端口,供客户端连接服务端使用
token = 010ab1fb-fcb3-40ea-a4e2-eb5d8bd19925  # 需与服务端token相同

[RDP]  # 配置多个客户端时,名字不能相同,否则会冲突
type = tcp  # RDP为TCP协议
local_ip = 127.0.0.1
local_port = 3389  # 内部端口为3389
remote_port = 6000  # 远程连接PC的端口

利用Windows计划任务添加开机自启

计算机管理-系统工具-任务计划程序-创建任务

按照图片进行设置

更改用户为SYSTEM
触发器为启动时
在frp目录运行frpc
按照如图设置
按照如图设置

试试远程连接吧

打开Windows自带的远程桌面连接, 输入IP地址:端口号

输入Windows账户名和密码

连接成功,就和本地操作一模一样,完美

发表评论

您的电子邮箱地址不会被公开。