使用frp内网穿透,用windows远程桌面连接

张军 1025 1

    teamview/向日葵 太黑心,莫名其妙检测商用劝退,实在是不得不脱坑。与其每个月给几百块RMB不如花几十块钱买台云服务。自己组建远程连接环境,使用windows远程桌面在公司连家里的电脑,安全无后门。         

    此种方式基本能穿透各种类型的网络类型了,我们公司用的代理上网,使用这种方式穿透也没有问题了,就是远程有使用一点手段,但是穿透完全没有问题,如果不是使用代理上网,以下的方式完全可以实现跨局域网使用windows远程连接。

frp基本信息

frp全名Fast Reverse Proxy,是用于提供内网穿透服务的工具,主要用于解决一些内网服务没有公网ip但是却需要提供外网访问的问题。使用frp你可以将内网中的TCP、UDP、HTTP、HTTPS等协议类型的服务发布到公网,并且支持Web服务根据域名进行路由转发。

frp已经将项目开源至github,想深入了解的朋友可以点击跳转地址:github项目地址(frp)

frp使用要求

image.png

    首先下载frp  所有版本下载地址  https://github.com/fatedier/frp/releases

    我下载的地址:https://github.com/fatedier/frp/releases?after=v0.23.2

张军博客

我下载的是  frp_0.21.0_linux_amd64.tar.gz

解压后得到10个文件如下:

张军博客

          

然后 编辑 vi  frps.ini

 配置文件内容如下:

[common]

#服务器本地IP

bind_addr=0.0.0.0

#服务器端口号

bind_port = 7000

token=zhangjun

#服务器web管理端口号

dashboard_port = 7500

#服务器用户名

dashboard_user = admin

#服务器密码

dashboard_pwd = admin


关于这几个配置意思 我就不废话了  直接上中文api地址 :https://github.com/fatedier/frp/blob/master/README_zh.md

那么先执行这个 :  chmod +X *.sh

然后后台执行执行nohup.log  ./frps -c ./frps.ini &

然后访问  http://服务器ip:7500

上面配置的7500端口,使用上面配置的用户名和密码 admin/admin

登陆可以看到如下界面

张军博客


张军博客

到此处服务器端的配置完成了

接下来配置设置对应的客户端

同样在上面的地址下载客户端 我用的是windows  使用下载的是

frp_0.21.0_windows_386.zip

同样解压,解压后 只需要里面的两个文件

如下:

然后修改frpc.ini

修改内容如下:

[common]

server_addr = 这个地方是你的外网服务器的ip 

server_port = 7000

token=zhangjun

[test10100]

type = tcp

local_ip = 127.0.0.1

local_port = 3389

remote_port = 10100

保存后就可以在命令行使用  frpc.exe -c frpc.ini  

看到如下输出

张军博客

那么环境就搭建成功了,服务端网页可以看到

张军博客

接下来可以直接使用windows远程桌面连接了

张军博客

远程桌面连接的地址 与正常的远程连接不一样的地方是  需要在远程桌面的地址上写个端口号,这个端口号就是客户端配置的端口号;例如:

接下来就和正常的远程桌面连接一样了

张军博客

张军博客

客户端以上就是客户端A的配置了

客户端B的配置就是改一下配置的端口号和名称就行

如下

[common]

server_addr = 这个地方是你的外网服务器的ip 

server_port = 7000

token=zhangjun

[zhangjun2]

type = tcp

local_ip = 127.0.0.1

local_port = 3389

remote_port = 3391

这个时候远程的ip和地址就是   服务器IP:配置的3391端口

张军博客

依次类推 客户端C 客户端D 只需要改一下名字和端口就行了,名字不能重复

下面是详细说明及解释:

1、(必须)想要使用frp服务,将内网中的服务发布到公网。你需要先拥有一台拥有公网ip的网络设备搭建frp服务端,再在内网需要穿透的设置中搭建frp客户端服务才能进行穿透;

2、(非必需)你需要拥有一个域名解析到公网的ip地址,才能够实现web服务的通过域名进行路由转发的功能。

Frp服务的搭建

搭建frp很简单,关键的步骤只有三步:

1、获取frp文件;

2、设置frp配置文件,

3、启动frp服务。(注意frp搭建的的这三步是分为客户端和服务端的,但是操作基本是一致的。)本教程frp服务的搭建主要介绍frp搭建的主要三步,以及frp服务端和客户端配置文件内容的解释说明,以及如何将frp在linux系统中创建systemd服务,进行服务管理。

第一步:获取frp文件

frp支持linux平台和windows平台。参照你的设置的运行平台下载linux版本的文件或者是windows的。https://github.com/fatedier/frp/releases

一般linux平台下载的版本为:frp_版本号_linux_amd64.tar.gz,windows平台下载的版本为:frp_版本号_windows_amd64.zip。

linux版本文件的解压命令为tar -zxvf 文件名 ;windows版本文件直接右键解压即可。

文件解压后,一般都含有frps(frp服务端运行文件)、frpc(frp客户端运行文件)、frps.ini(frp服务端配置文件)、frpc.ini(frp客户端配置文件),以及frp_full.ini(frp全部配置文件解释说明和参考。)

第二步:frp配置文件设置

frp配置文件分为服务端和客户端,想要正常只用frp工具,我们需要对服务端和客户端的配置文件分别进行设置。

frps.ini(服务端)配置文件解释说明

[common]

# 服务端控制面板访问账号和密码,不设置则默认admin

#注意以及几个是我随便填写的,请根据自己的实际情况,自行修改。

dashboard_user = user

dashboard_pwd = password

# 客户端连接令牌

token = access_token

# 路由地址

subdomain_host = frp.x.com

###########下列配置默认即可,无需改动###############

#穿透监听端口与地址(0.0.0.0表示允许任何地址)

bind_addr = 0.0.0.0

bind_port = 7000

# udp协议监听端口

bind_udp_port = 7001

#udp协议支持kcp模式。kcp的运行端口,不设置表示禁用。可以与'bind_port'端口一致

kcp_bind_port = 7000

#虚拟主机穿透监听端口(指http与https的访问端口)

vhost_http_port = 80

vhost_https_port = 443

#服务端控制面板访问端口

dashboard_addr = 0.0.0.0

dashboard_port = 7500

# frp日志记录路径

log_file = ./frps.log

# 日志记录级别(trace, debug, info, warn, error)

log_level = info

# 日志记录滚动天数

log_max_days = 3

# 客户端与服务端连接心跳检测

heartbeat_timeout = 90

# 允许客户端使用的穿透端口,不设置则全部允许

#allow_ports = 1000-100000

# 穿透服务允许的连接数

max_pool_count = 5

# 单个客户端允许建立的穿透服务,0为不限制

max_ports_per_client = 0

# 连接超时

authentication_timeout = 900

# tcp流多路复用(可以理解为优化传输) 

tcp_mux = true

frpc.ini(客户端)配置文件解释说明

#该配置文件,我做了相关的删减,只保留了我们最常用到的几个穿透功能。

#[common为公共配置区域必须存在]

[common]

# 与服务端连接令牌

token = access_token

# 客户端标识

user = nas

#服务端的访问地址(可用ip或者域名)。

server_addr = 1.1.1.1

####################此处为common的默认配置区域无需修改###################

#服务端用于穿透的端口,与服务端保持一致。

server_port = 7000

# 日志记录路径

log_file = ./frpc.log

# 日志记录级别(trace, debug, info, warn, error)

log_level = info

# 日志记录滚动天数

log_max_days = 3

# frpc客户端管理界面

admin_addr = 127.0.0.1

admin_port = 7400

admin_user = admin

admin_passwd = admin

# 连接池

pool_count = 5

# tcp数据流多路复用,默认开启,服务端客户端需要保持一致

tcp_mux = true

# 失败重连

login_fail_exit = true

# 服务端与客户端通信协议,支持tcp\upd

protocol = tcp

# dns服务选用

# dns_server = 8.8.8.8

#客户端向服务端心跳检查间隔与超时时间

heartbeat_interval = 10

heartbeat_timeout = 90

##############以上为客户端服务的公共信息配置区域############


###############具体的穿透服务功能启用(表示你要使用frp的那个功能)##############

[ssh]

#穿透类型

type = tcp

#需穿透服务本地访问地址

local_ip = 127.0.0.1

#需穿透服务本地访问端口

local_port = 22

#是否使用通讯加密,默认false

use_encryption = false

#是否使用通讯压缩,默认false

use_compression = false

#穿透后外网访问端口。

remote_port = 6001


[dns]

type = udp

local_ip = 114.114.114.114

local_port = 53

remote_port = 6002

use_encryption = false

use_compression = false


#http或者https模式主要针对于虚拟主机,访问的取决于frps.ini文件中的vhost_http_port设置

[web01]

type = http

local_ip = 127.0.0.1

local_port = 80

use_encryption = false

use_compression = true

#虚拟主机访问账户密码设置,如果不设置的话。自己通过地址即可访问。

http_user = admin

http_pwd = admin

# if domain for frps is frps.com, then you can access [web01] proxy by URL http://test.frps.com

#如果你的frps域名是yourdomain.com,那么你可以通过web01.yourdomain.com 来访问web01这个穿透服务。

subdomain = web01

#自己定义域名

custom_domains = yourdomain.com

# locations is only available for http type

locations = /,/pic

# http重定向地址

host_header_rewrite = example.com

# http请求文件头

header_X-From-Where = frp


[web02]

type = https

local_ip = 127.0.0.1

local_port = 8000

use_encryption = false

use_compression = false

subdomain = web02

custom_domains = web02.yourdomain.com


[plugin_static_file]

type = tcp

remote_port = 6006

plugin = static_file

plugin_local_path = /var/www/blog

plugin_strip_prefix = static

plugin_http_user = abc

plugin_http_passwd = abc

第三步:启动服务


linux环境下启动服务,需要先把运行文件添加可执行权限。例如我的文件实在root文件夹中,我需要搭建frp服务端,那么待设置好服务端配置文件(frps.ini)后执行以下命令即可。

cd /root

chmod +x frps

nohup ./frps -c ./frps.ini &

执行成功后,会显示frp的进程号码。你也可以通过命令来查看frps运行的进程编号。

ps -e | grep frps


在windows环境下则是以管理员身份运行cmd命令提示符。进入相应的目录后,运行命令即可。

frps -c frps.ini &


关于frp管理的优化设置


debian8.0,或者是centos7.0以上的版本,服务都是基于systemd的方式进行管理的。frp通过设置后也可以实现systemd的方式进行管理,这样我们就可以通过systemctl命令来进行服务的统一管理,同时通过这样的设置也可以将frp服务加入开机自启动。


1、将frp设置成linux系统的服务,基于systemd方式管理


# 编写 frp service 文件,以 centos7 为例

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


# 内容如下

[Unit]

Description=frps daemon

After=syslog.target network.target

Wants=network.target


[Service]

Type=simple

#此处的路劲地址根据自己的实际放置的地址进行修改

ExecStart=/root/frp/frps -c /root/frp/frps.ini

Restart=always

RestartSec=1min

[Install]

WantedBy=multi-user.target

2、将frp设置成开机自启动

systemctl enable frps

systemctl restart frps

以上就是关于frp内网穿透的基本教程了,搭建可以尝试照着教程搭建一下,如果还有不懂的地方欢迎加入维简网交流群进行交流。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

发表我的评论
最新评论 总共1条评论
  1. 360901061@qq.com
    希望可以帮助到大家
    360901061@qq.com2020-02-16 21:14:33 回复