目前来说,各大运营商都在减少对个人用户提供公网IP,这已经是一个趋势,估计在IPv6普及前不会有好转。虽然可以通过客服要回公网ip,但是难度太大了,就算能要到运营商也得恶心恶心你,所以目前外网访问家里路由器、NAS、智能家居等成了问题。
对于没有公网IP的解决办法也有很多:群晖的Anyconnect、花生壳、Ngrok、Frp等。从效果来看Frp效果最好,所以本文重点写这个教程。
一、frp的作用
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
二、配置说明
1、实现功能
(1)外网通过ssh访问内网机器
(2)自定义绑定域名访问内网web服务
2、配置前准备
(1)公网服务器1台
(2)内网服务器1台(我这里演示的是linux环境 Ubuntu 14.04.2 LTS)
(3)公网服务器绑定域名1个(实现二1中(1)功能不需要公网服务器绑定域名,二1中(2)功能必须需要公网服务器绑定域名)
(4)内网服务器部署一个web服务,可以用tomcat模拟,这里就不演示了
三、安装frp服务端
1、公网服务器与内网服务器都需要下载frp进行安装,公网服务器(安装服务端),内网服务器(安装客户端)
安装服务端:
服务端(阿里云 Ubuntu 14.04.2 LTS)
输入以下命令,一次一条,一共四条:
之后他会让你输一些参数,全部参数都有默认值,直接回车就是输入默认值:
Please input frps bind_port [1-65535](Default Server Port: 5443): #输入frp提供服务的端口,用于服务器端和客户端通信,默认即可
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口,建议选择其他端口,默认的80端口给Nignx,然后用Nginx代理frp的http端口
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #输入frp进行https穿透的https服务端口,同上面的80端口类似,建议分配其他端口,然后通过Nginx代理此端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):#输入frp的控制台服务端口,用于查看frp工作状态,默认即可
Please input dashboard_user (Default: admin):#登录控制台的用户名,默认即可
Please input dashboard_pwd (Default: kpkpM7VZ):#登录控制台的密码,如果记不住默认的建议修改
Please input privilege_token (Default: 9m2UAOWa6hx5Eise):#输入frp服务器和客户端通信的密码,默认是随机生成的,默认即可
Please input frps max_pool_count [1-200](Default max_pool_count: 50):#设置每个代理可以创建的连接池上限,默认50
Please select log_level ############################
1: info
2: warn
3: error
4: debug
###################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]): 默认即可
Please input frps log_max_days [1-30](Default log_max_days: 3 day):
Please select log_file #############################
1: enable
2: disable
###################################################
Enter your choice (1, 2 or exit. default [1]):默认即可
安装完毕后会弹出以下内容,标明了具体信息,到此服务端操作全部完成。
至此,安装完成,可以访问ip地址+控制台端口查看(如果是阿里云,或者腾讯云 的服务器记得在安全组放行以上的配置的端口,否则无法访问)由于目前没有建立穿透连接,所以都是空的。
四、安装frp客户端
安装客户端:
下载客户端软件:
Mac版本
Win版本
Linux版本
下载完成后解压,找到 frpc.ini 文件
修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 180.28.83.22,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 web.frp.auan.cn
修改完成后,保存。然后启动 frpc,执行 ./frpc -c ./frpc.ini
如果是Win的话,要用命令行进入到 客户端解压的文件夹,执行 frpc.exe -c frpc.ini将 web.frp.auan.cn 的域名 A 记录解析到 IP 180.28.83.22(此处更改为你的服务器公网IP),如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。通过浏览器访问 :9080 即可访问到处于内网机器上的 web 服务。
我们通过服务器控制台就可以看到有客户端已经连接了。
到此就完成了frp的客户端搭建和连接,完成了内网穿透服务。
Linux下添加frp内网穿透工具开机启动
在/etc/rc.local里面添加/home/frp/frps -c /home/frp/frps.ini (文件的具体路径根据实际情况填写),终端里面输入下面的命令,或者把文件下载回本地修改后重新上传覆盖源文件。
vi /etc/rc.local
Windows系统下添加frp内网穿透工具为开机启动项
因为Windows系统下从命令行启动frp内网穿透工具后,如果关闭命令行的黑窗口,frp内网穿透服务就停止了,并且任务栏上一直有个命令行窗口也很不方便,所以要开机后启动并且要隐藏frp内网穿透工具的窗口,方法是这样的:新建一个文本文件,文件内写入如下内容,frp的文件路径根据自己的实际情况修改,然后重命名这个文本文件为frp.vbs ,注意txt的扩展名也要改为vbs,然后把这个frp.vbs放到Windows的启动目录里面。Windows的启动目录位于“C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp”(如果找不到这个目录可以在运行里面输入:“shell:startup”
或者输入“
%programdata%MicrosoftWindowsStart MenuProgramsStartup”)
五、自定义域名访问
但是我们发现连接内网还是需要 输入 9080端口,而且域名是nginx上配置的三级域名,其实我们可以通过Nginx来反向代理一下,这样就可以自己的顶级域名,并通过80端口来访问了。
服务器安装 Nginx 的过程,请自行百度,假设你的服务器上已经安装好了Nginx
1、Nginx新建一个虚拟主机配置,或者直接改默认的主机配置也可以
在Nignx 的listen 后 增加 default_server 配置,用来监听默认情况下所有来自解析到该服务器的域名然后在 server 段内增加 反向代理配置
这样Nginx 将接管域名的绑定工作,监听到80端口的网站后,会将网站转发到 本机的frp 9080 端口这时候,将 frp 的客户端配置文件改成如下:
然后启动客户端 ./frpc -c ./frpc.ini这时候就可以通过 xxx.com 来访问你内网的网站了。
六、frp 进阶配置
1、转发 DNS 查询请求
DNS 查询请求通常使用 UDP 协议,frp 支持对内网 UDP 服务的穿透,配置方式和 TCP 基本一致。修改 frpc.ini 文件
2、转发 Unix域套接字
通过 tcp 端口访问内网的 unix域套接字(例如和 docker daemon 通信)。frps 的部署步骤同上。启动 frpc,启用 unix_domain_socket 插件,配置如下:
通过 curl 命令查看 docker 版本信息
curl :6000/version
3、win系统远程桌面
通过tcp 来连接位于内网中的电脑
然后通过 mstsc -v 180.28.83.22:33890 就可以远程桌面到内网。
最近有很多小朋友吐槽(有的直接破口开骂、真不知道你妈妈有没有教育你怎么做人),都有公网IP了,还用这个干嘛。此公网IP是服务器的公网IP,不是你当前使用的网络的公网IP,部分运营商已经不给分配公网IP了。而且现在网上有很多免费的FRP服务器,直接都可以拿来用的。frp是用来链接你内网的电脑的,比如你调试一个项目,不需要把项目打包到公网服务器上就可以本地调试,比如微信支付,支付宝支付等的异步通知。另外,有公网服务器并不是说支持所有类型的应用,比如我公网的服务器只支持php,但是我要调试Java程序,那就可以映射到本地来跑。比如说远程连接,也可以通过公网服务器来做跳板,连接你处于内网的个人电脑,即使你用的是手机热点都可以。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777