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

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

前言

现在家里的宽带很多情况下都不分配公网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

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

文章评论

  • DreadaKes

    Emtdwr Another French physician Henri Coutard continued his work and by the s had established the principles of fractionated radiation therapy controlled low doses given at regular intervalsthat are still in use today. Cialis If one parent has achondroplasia the infant has a chance of inheriting the disorder. cialis generic cost Niosfp Ibihde Phrenology came to the fore in the early th century with the work of German physician Franz Joseph Gall. cialis price Zerctx Buy Propecia Generic

    2022-04-20
  • 您需要 登录 之后才可以评论