前言
现在公网ip资源紧缺,想要从电信手里要到一个公网ip难上加难,这种情况只能等到ipv6普及之后才能缓解,与其找电信要ip死缠烂打,倒不如自己动手丰衣足食,用内网穿透达到外网访问家庭网络目的。此次内网穿透使用工具为frp,设置简单方便,了解原理之后10分钟内就可以搭建完毕。这里给大家做一个详细教程,楼主之前搭建遇到的坑尽量都给大家讲明白。
内网穿透实现功能
楼主之前搭建了一台nas,系统基于win server2016,同时运行软路由lede。需要内网穿透主要有以下几个目的:1.远程操控lede后台2.远程连接win server桌面,这样在外看到pt站点上有优质免费资源时可以马上操作nas进行下载3.搭建个人网盘4.搭建个人git仓库,在外可把代码推送到个人服务器,回家git pull继续code
准备工作
实现内网穿透需要做以下准备:1.一台vps,建议选用国外vps,使用国内云会被要求域名备案,楼主使用的是免费一年期谷歌云,除了搭建frp内网穿透,还可以搭一些不可告人的东西。2.个人域名,这个的目的是方便我们外部访问多个内网终端,当然不用域名也可以,可以直接使用vps ip当作域名使用,但是这么做在做http服务的时候,只能访问内网一个终端了,exp:vps ip与内网lede后台对应,则内网其他设备就无域名可匹配访问了,而有个人域名的话,可以设置二级域名匹配多个终端,家里的群晖、esxi、路由等等设备都可以访问了3.内网内部一台可以长期开机、运行frp客户端的设备。楼主今天的教程主要讲两个客户端:1.lede软路由。2.win server nas。(内网有任何其一就可以)网上也有群晖开启root账户挂载脚本运行的方法,楼主手里没有群晖就不做演示了。
简单原理介绍
首先我们打开https://github.com/fatedier/frp/releases,下载frp0.16.1windows_amd64.zip 这个版本。!!!注意:最新版frp已经不兼容低版本的客户端了,所以为了保证服务端客户端版本号匹配,楼主使用0.16.1这个版本搭建,最重要的原因是lede软路由酷软中心frpc版本是0.16.1,开始之前请大家务必确认版本号。在windows下解压缩我们可以看到内容如下:可以清晰的看到frp软件包当中包含客户端和服务端,我们需要做的是:1.在vps上安装服务端部分,配置好自定义配置文件,并且设置好后台运行;2.在客户端(内网任一设备:路由、nas等),配置好自定义配置文件,长期运行。是不是很简单,我们要做的就是设置两个配置文件,分别运行在vps上和家庭内网一个设备上,frp就会帮我们把web内容转发到vps服务器上从而实现外网访问!
教程步骤
VPS服务器端1.在谷歌云平台建立一个vm实例,系统选择centOS、debian都可以,防火墙勾选允许http、https流量,生成本地ssh密钥并上传,使用putty远程连接vps。(这几步这里不过多讲解,网上搜搜就可以,关于怎么申请免费谷歌云、建立实例、使用ssh连接等等)连接上以后如下图:
2.获得root权限
sudo -i
输入上述命令,回车。
3.下载frp到vps
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
下载完成后可以使用“ls”命令查看当前文件夹,如下图:其中frp0.16.1linux_amd64.tar.gz即为刚刚我们下载下来的程序包
4.使用tar命令解压缩程序包
tar -zxvf frp_0.16.1_linux_amd64.tar.gz
输入上述命令回车,看到下图:可以看到解压缩完成,解压出来的文件是不是很眼熟,跟刚开始在windows下做演示的一模一样。
5.进入解压缩好的frp文件夹
cd frp_0.16.1_linux_amd64
其中frps、frps.ini这个两个是服务端文件,frpc、frpc.ini这两个是客户端文件
6.设置配置文件使用“vi”工具编辑frps.ini。
vi frps.ini
输入上述命令进入frps.ini编辑页面。在此页面输入字母 i即可进入编辑模式,键入下列内容:
[common] bind_port = 7000 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = admin vhost_http_port = 10080 vhost_https_port = 10443 privilege_token = chiphell
其中:bindport为frp服务器端口,dashboardport为后台控制页面端口,dashboarduser、dashboardpwd为后台监控web页面账号密码。这些内容可随意设定。vhosthttpport为外部访问http协议端口,可设置80,建议设置80以外端口,以后我们访问内网web页面,都是使用“域名domain” “:” “vhosthttpport”访问的。同理vhsothttpsport可设置默认443,也可自定义,最后privilege_token任意设置几个字母或数字,客户端上要用。上述参数都输入完成后,按“ESC”键退出编辑模式,输入
:wq
退出并保存。至此我们的服务器端配置完成。
7.运行我们的frps输入如下命令
./frps -c ./frps.ini
如果看到如下图,那么恭喜,你已经运行了服务器端:
此步为初步测试,做到这里还不够,因为这个命令只能前台运行,当我们把终端关闭以后程序就会自动停止运行。按下Ctrl C键终止服务。
输入如下命令:
nohup ./frps -c ./frps.ini &
看到如下图所示:此时便可以关掉终端,程序会一直在后台运行。!!!重要:如果需要更新配置文件,或者停止frps服务,我们可以使用如下命令:
ps -A
找到frps进程,记下frps进程前面数字序号,输入kill *(*为进程序号)即可终止进程,重新配置或升级安装。
8.访问frps web管理后台在任意设备上输入“vps ip地址:7500”,7500即我们上面设置的dashboard_port。出现如下图所示:恭喜你,服务器端已经彻底搭建完成了。
客户端设置
一、Windows做客户端windows做客户端非常简单,只需设置好frpc.ini,然后在cmd中打开frpc即可。注意:windows下打开frpc后不可以关闭,关闭后程序会被终止。打开https://github.com/fatedier/frp/releases,下载frp0.16.1windows_amd64.zip 这个版本。使用记事本打开frpc.ini。输入如下内容:
<div>[common] server_addr = 12.12.12.12 server_port = 7000</div><div>privilege_token = chiphell [Desktop] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 3389 [LEDE] type = http local_ip = 192.168.1.1 local_port = 80 remote_port = 10080 custom_domains = 12.12.12.12</div>
这里讲解以下,frp支持http、https、tcp等协议的传输。大家要设置http协议可以参考上面内容[LEDE]部分,这里演示的是穿透到lede路由管理界面,其中local_ip为在内网中lede的ip位置,local_port为lede管理页面自身默认端口为80,remote_port为服务器端设置的vhost_http_port,这里是10080,custom_domains填写我们申请的个人域名,可以设置多个二级域名,这样每个内网web都可以对应一个二级域名,我们就可以通过域名访问我们所有的内网设备了。由于楼主的域名刚刚申请还在实名认证,所以楼主使用了vps ip做域名,直接访问vps ip加端口号即可,缺点是没有二级域名我们只能绑定一个设备。
大家要设置tcp协议就参考[Desktop]部分,由于frp客户端直接挂载在nas本机上,我们设置ip可以直接些localhost地址:127.0.0.1,local_port设置3389,3389是远程桌面默认端口,remote_port我们可以随意设置不用拘泥于http连接那个端口,remote_port直接也设置3389方便我们在远程桌面操作时直接输入ip即可,可省去端口。
设置完成后保存,进入cmd,在cmd下运行frpc,power shell下需输入 ./frpc。结果如下图:显示success!至此我们已经成功搭建客户端。
外网访问我们的lede路由页面试试?输入vps ip : 10080成功!
二、lede软路由挂载客户端win下挂载客户端演示完了,我们还可以使用lede酷软里的frpc挂载,更方便打开lede—酷软—frpc客户端,按照下图设置:1.填入服务器地址(VPS ip)2.TCP多路复用修改为true3.填入自定义的privilege_token码4.HTTP穿透服务端口填入100805.HTTPS穿透服务端口填入10443
在frp穿透设置中,如下设置:
总结至此,frp搭建教程就暂告一段落。楼主的域名还在审核,等审核完成再搭建个人网盘等,到时候再做一个教程,搭建中主要遇到的问题就是版本号的问题。koolshare上有国内大神做好的一键脚本更傻瓜,但是一键脚本只能部署最新版frp,而lede上的frpc并不能完全跟得上更新,所以最稳妥的方法还是自己搭,原理也很容易明白。大家有什么问题可以私信我,一定一一解答。
文章转载,如有侵权,请联系删除
如果有兴趣和我们一起讨论问题的话,不妨加下我们群吧 ,记得加群的时候写上我名字 ID:BigMoreKT 群:984370849
原文链接:https://blog.csdn.net/BigMoreKT/article/details/103120382