新无止竞

首页 » 服务器 » 使用Frp搭建内网穿透服务器

使用Frp搭建内网穿透服务器

有的时候我们需要在外网能够访问当内网中的内容。比如公司内网的 git 、数据库、远程操作。

有时候为了方便调试一些三方服务,比如微信、支付宝这一类需要异步回调的调试的服务内容,我们通常需要一个外网服务器,但是外网服务器对代码调试不是太方便,虽说 PHP 有像 Xdebug 这一类的开发工具,但是配置远程调试却是非常麻烦,而且还很容易失败。

准备

  • 一台外网服务器
  • 一台内网机器

Frp 是什么?

摘自 github 介绍: frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。

Frp 有良好的跨平台性,从 github 的Releases 中 我们可以看到, Frp 为我们提供了各平台的二进制打包文件和源文件,方便我们在各个平台上使用。

如何使用?

首先我们来配置服务端,这里服务端使用的是 Ubuntu x64 版。所以直接下 frp_0.21.0_linux_arm64.tar.gz 即可

 
# cd ~
# wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_arm64.tar.gz

下载完成后 解压并进入目录。

 
# tar -zvxf frp_0.21.0_linux_arm64.tar.gz
# cd frp_0.21.0_linux_arm64

在Ubuntu下 ls 命令列出文件。

可以看到以下内容。

frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini frps.log LICENSE 

现在我们是将服务器作为服务端使用所以我们只需要关心 frpsfrps_full.inifrps.ini 这三个文件就好了。

这里的 s 就是 Server(服务端), c 则表示为 Client(客户端)。

frps_full.ini 这个文件里面存放了所有 可配置项的示例。我们不会去动它,主要是关心 frps.ini 这个配置文件

服务端配置

使用 vi 打开 frps.ini 后可以看到有个 [common] 块。

 
[common]
bind_port = 7000

这里表示绑定了 服务器的 7000 端口作为 frp 的通信端口,到这里,如果你的服务器使用了防火墙,请在防火墙放行 7000 端口,如果是阿里云 、腾讯云 、 浪潮云 这一类 有专门的 控制面板来控制防火墙的需要在 控制面板来放行。

为此我们还要在 common 节点下新增一个 token 用来服务端和客户端认证。

 
[common]
bind_port = 7000
token = 123456

如果我们需要 http 服务还需要设置 http 监听端口 , vhost_http_port

 
[common]
bind_port = 7000
token = 123456
vhost_http_port = 80

注意 如果这里你服务端的 80 端口被其他应用占用了 你需要设置为其他端口。

至此服务端就设置的差不多了 允许一下。

 
./frps -c ./frps.ini

如果没有报错,那么一切就算好了。

客户端配置

现在回到自己的电脑,通常情况下我们自己的电脑都是没法从外网进行访问的。

这里我们的客户机A是 windows10 1803 x64

进入 Frp 的 Releases 页面下载 frp_0.21.0_windows_amd64.zip 。下载完成后进行解压。

根据上面对 Server 和 Client 的描述我们可以知道,我们客户机为 Client 端,所以我们只用关系和 frpc 相关的就好了。

打开 frpc.ini 设置 [common] 部分

 
[common]
# 此处为你的服务器 IP 域名滴 不行!
server_addr = 117.123.45.156
server_port = 7000
# 因为我们服务端设置了 token 所以这里也要设置
# token 必须和服务端的一样,否则无法通过认证。
token = 123456

创建站点

除此之外,我们来新建一个可以提供给外网访问的内网站点。将本地的 Apache 配置文件。新加入一个站点,并绑端口为 8080。

 
[common]
# 此处为你的服务器 IP 域名滴 不行!
server_addr = 117.123.45.156
server_port = 7000
# 因为我们服务端设置了 token 所以这里也要设置
# token 必须和服务端的一样,否则无法通过认证。
token = 123456
# 这里的节点名字无所谓但是要符合规范 ^[a_zA-Z_]{1}w+$
[web_01]
type = http
local_ip = 127.0.0.1
local_port = 8080
# 这里可以指定使用域名访问,如果你在你本地绑定了域名 那么上面的 local_port 可以选择 80
custom_domains = test1.yourdomain.com

配置完成后 点击 资源管理器的地址栏 输入 cmd 然后打开一个命令行窗口。执行如下命令

 
./frpc.exe -c ./frpc.ini

设置自定义域名

这时候我们还需要到域名解析面板去添加一个解析 A 记录指向 你的服务器,记录值为 test1 你还可以使用泛解析的方式来解析。

解析完成后,启动服务

访问网站

如果有 web_01 success 字样就说明成功了。至此我们就可以通过 http://test1.yourdomain.com 来访问你本地网站了。

远程控制

除了 HTTP 我们还可以 打开本地电脑的 远程访问,使用之前请先确保你在 计算机属性系统高级设置 >远程 Tab下启用了远程访问,以及你本地的防火墙允许远程桌面。

只需要在配置项中新增

 
[rd_01]
type = tcp
local_ip = 127.0.0.1
# 默认远程桌面端口 如果修改了 请自行设置
local_prot = 3389
# tcp 服务需要指定服务端端口。你需要在你的服务端防火前和服务商提供的服务器控制面板中放行此端口。
remote_port = 5500

保存好配置文件后 我们可以 选择停掉之前的 从新执行一次

 
./frpc.exe -c ./frpc.ini

也可以用 reload 重载配置项

 
./frpc.exe reload -c ./frpc.ini

完事儿后 尝试使用别的电脑通过进行远程控制吧。

 
# 注意 这里的端口就是刚设置的
mstsc /v 117.123.45.156:5500
开机自启

在 windows 中,打开

 
%appdata%MicrosoftWindowsStart MenuProgramsStartup

然后新建一个 frpc.bat 内容为

 
# C:/frpc 为你的 frpc 解压目录 /d 参数表示跨盘符
cd /d C:/frpc
./frpc.exe -c ./frpc.ini

然后保存即可。

这样还不行,因为重启后并不会自动启动 需要登录,这时候打开 windows 的任务计划,选择新建计划。

任务名随意。

安全选项

  • 不管用户是否登录都要运行
  • 使用最高权限允许

触发器

  • 开始任务 : 新增 为启动时 最下面勾选启用(B)

操作
– 新建 启动程序 选择刚刚编写的 frpc.bat 然后保存任务计划。

确保电脑开机后就能联网,服务端正常运行。
重启电脑,等电脑启动完成后几秒钟 使用别的设备远程连接我们的电脑。

  • 附加选项
    打开 计算机属性系统高级设置 > 高级启动和故障恢复 > 设置
    勾选 自动重新启动 这样就算我们电脑在蓝屏时也能重启我们也能远程访问到了。

Android

Android 可以使用 Termux 来玩呢。

更多实例请参考项目的 READEME 文件。

致谢

fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. – https://github.com/fatedier/frp

文章如无特别注明均为原创! 作者: 独自狂战, 转载或复制请以 超链接形式 并注明出处 新无止竞博客 - 专注网络技术资源分享的IT博客
原文地址《 使用Frp搭建内网穿透服务器》发布于2018-10-29

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册