利用frp远程控制无公网IP的电脑

2021-04-02 508点热度 0人点赞 0条评论

前言

现在家里的宽带很多情况下都不分配公网IP了,这种情况下不能用外网端口映射来远程访问家里的设备,但是如果我们有一台云端服务器,就可以轻松利用frp来做到远程控制。

介绍

FRP是一个高性能的反向代理工具,可以帮你穿透NAT网络并且绕过防火墙。

通过在云端(带公网IP)的服务器(CentOS或Ubuntu或Windows Server)上搭建frps服务器端,家里的电脑(CentOS或Ubuntu或Windows)或路由器上安装frpc客户端来实现远程访问。

服务器端搭建

https://github.com/fatedier/frp/releases下载最新版本的frp,根据你服务器的操作系统下载对应的版本,

例如64位Linux,可以下载:https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz

64位Windows Server,可以下载:https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_windows_amd64.zip

以Linux为例:

#下载到最新的frp服务器版本
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
#解压
tar zxvf frp_0.37.0_linux_amd64.tar.gz

mkdir /etc/frp
#复制配置文件到/etc/frp/
cp frp_0.37.0_linux_amd64/frps.ini /etc/frp/
#复制可执行文件到/usr/bin/
cp frp_0.37.0_linux_amd64/frps /usr/bin/
chmod +x /usr/bin/frps
#安装成服务,方便自动启动
cp frp_0.37.0_linux_amd64/systemd/frps.service /etc/systemd/system/
#检查下vim /etc/systemd/system/frps.service的内容:
#我是把User=nobody注释掉了才启动起来的
#另外看下ExecStart后面的这些文件路径是否都正确了

[Unit]
Description=Frp Server Service
After=network.target

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

[Install]
WantedBy=multi-user.target

/etc/frp/frps.ini配置文件

[common]
## 绑定端口
bind_port = 7000
## frps服务密码
token = 123456

## dashboard这些看你需要,也可以删除不用配置
## dashboard端口(就是网页查看状态的页面)
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
## dashboard这些看你需要,也可以删除不用配置

## vhost
vhost_http_port = 80 ## 虚拟主机http协议的端口
vhost_https_port = 443 ## 虚拟主机https协议的端口

## 以远程转发ssh为例(连接服务器的2201端口,就相当于控制客户端的ssh服务,当然客户端那边还要配置,后面会介绍)
[ssh]
type = tcp
#bind_addr = 0.0.0.0
#代理远程端口(frps开放的端口)
listen_port = 2201

## 以远程转发RDP为例(这里frps端口也设置了3389,当然也可以不用3389,最好是不用常用端口)
[rdp]
type = tcp
listen_port = 3389

vhost配置,如果这部分不需要,可以跳过

利用frp 穿透到内网的http/https网站,实现对外开放,或者外部访问路由器的管理页面

有域名的话使用域名,没有域名的话使用IP
注意80端口是否被已经安装使用的nginx占用,若被占用,可以换成其他端口,比如8080,,或者利用nginx的反向代理实现frp服务端与nginx共用80端口

看下frps.ini,客户端frpc.ini的配置,后面讲到客户端配置的时候,会带上

[common]
## 绑定端口 bind_port = 7000
## frps服务密码 token = 123456

## vhost
vhost_http_port = 80 ## 虚拟主机http协议的端口
vhost_https_port = 443 ## 虚拟主机https协议的端口

完成frps

Windows下的frps的的配置文件都通用的,安装基本上就是下载后,运行frps就可以了。

好了,frps服务器端安装和配置都好了

#重新加载服务的配置文件
systemctl daemon-reload
#重启frps服务
systemctl restart frps
#开机启动frps
systemctl enable frps

客户端安装

这里也以Linux为例,在局域网里的一台Linux中安装frpc客户端:

#下载到最新的frp服务器版本
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
#解压
tar zxvf frp_0.0.37.0_linux_amd64.tar.gz

mkdir /etc/frp
#复制配置文件到/etc/frp/
cp frp_0.37.0_linux_amd64/frpc.ini /etc/frp/
#复制可执行文件到/usr/bin/
cp frp_0.37.0_linux_amd64/frpc /usr/bin/
chmod +x /usr/bin/frpc
#安装成服务,方便自动启动
cp frp_0.37.0_linux_amd64/systemd/frpc.service /etc/systemd/system/
#检查下vim /etc/systemd/system/frpc.service的内容:
#我是把User=nobody注释掉了才启动起来的
#另外看下ExecStart/ExecReload后面的这些文件路径是否都正确了

[Unit]
Description=Frp Client Service
After=network.target

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

[Install]
WantedBy=multi-user.target

/etc/frp/frpc.ini配置文件

[common]
## frp的服务器公网地址和端口号,端口号,密码
server_addr = 1.2.3.4
server_port = 7000
token = 123456

## 设置远程服务器转发2201端口,到本机的22端口,从来实现远程控制这台机器的ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 这个端口号就是frps配置的ssh的服务器端口号
remote_port = 2201

## 设置远程服务器转发3389到局域网192.168.1.2的3389端口,从而实现RDP远程控制192.168.1.2
[rdp]
type = tcp
local_ip = 192.168.1.2
local_port = 3389
remote_port = 3389
use_compression = true
use_encryption = true

## 前面有需要配置vhost来穿透内网的HTTP网站,或者访问路由器管理页面,配置如下
[http]
type = http
#自己的二级域名需要提前做好解析
custom_domains = router.example.com
#我这里设置的是访问路由器的地址
local_ip = 192.168.1.254
local_port = 80
use_compression = false
use_encryption = true

frpc客户端就好装和配置好了

#重新加载服务的配置文件
systemctl daemon-reload
#重启frps服务
systemctl restart frpc
#开机启动frps
systemctl enable frpc

当然如果你想要在家里的路由器上安装frpc客户端,也是可以的,看你的路由器是否支持安装插件,然后去找找对应的frpc插件,配置应该就是图形化的。

Windows版本的frpc应该也是类似,配置文件也是可以通用的。

确认frps服务器和frpc都起来后

远程连接SSH:

ssh -p2201 [email protected]

远程连接RDP:

Windows Remote Desktop连接 1.2.3.4:3389端口就可以了

如果做了内网http穿透,浏览器直接访问:http://router.example.com 测试

admin

这个人很懒,什么都没留下

文章评论

*

code