内网穿透frp使用方法
由于现在大部分宽带服务商并不提供公网IP服务,导致我们现在无法在外面通过IP来访问家中电脑,为了解决这个问题,我们可以使用内网穿透服务来解决这类问题
介绍
首先给大家介绍一下电脑与电脑是如何进行通信的。
简单的来说,电脑通过绑定的IP来进行连接的,目前使用最多的是IPV4,而IPV4的数量并不多,因此就有了IPV6,IPV6的数量可以满足目前所有设备的连接,但是在推行IPV6的进程中,运营商并不积极,所以目前的解决方案是通过将一个地区的用户转为局域网内,然后通过一个公网IP的地址去进行转发。这样就导致了大量用户共用一个公网IP,而且这个公网IP是经常变化的。这就导致了用户之间无法通过IP来进行通信,因为IP的另一端有大量的用户,而我们并不知道是哪一台。
所以我们需要内网穿透的服务。第三方内网穿透服务类似有花生壳、nat123、 金万维、等等,但是使用第三方服务要么价格昂贵,要么带宽较小。而frp
是一个专注于内网穿透的高性能的反向代理应用,由于它是开源软件,因此可以免费使用,只需要自己有一台公网的服务器就可以了.
frp
还支持支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
对于服务器的要求就是要在资金允许的情况下尽量选择大带宽,否则在使用时会因为带宽太小导致卡顿。
安装
通过下载链接去下载合适自己的版本
解压缩下载的压缩包,我们需要关注以下几个文件
-
frps
-
frps.ini
-
frpc
-
frcp.ini
其中的frpc
类的文件是客户端所需要的程序和配置文件,frps
类的文件是服务端所需要的文件。
原理
我们们先理解一下内网转发的原理。
如果计算机A要想连接计算机B,此时由于两者都没有公网,我们无法通过IP来相互连接,这是我们需要一个拥有公网的服务器来做转发,通过计算机A与服务器连接,服务器再与计算机B连接,这样数据就可以通过计算机A–>服务器–>计算机B的方式进行传输了
服务端
我们先来配置服务端,首先配置frps.ini
|
|
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。
bind_port
表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。dashboard_port
是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为云服务器的公网IP)查看frp服务运行信息。token
是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。dashboard_user
和dashboard_pwd
表示打开仪表板页面登录的用户名和密码,自行设置即可。
配置完成之后,我们就可以运行服务端了,启动命令:./frps -c frps.ini
如果出现Start frps success
说明运行成功
此时,通过访问x.x.x.x:7500并使用自己设置的用户名密码登录,即可看到仪表板界面。
后台运行及开机自启
由于我们的服务目前运行在前台,当我们关闭ssh窗口或者Ctrl+C停止时,frps程序也会停止,因此我们需要将其运行在后台
-
使用nohup命令 :
nohup ./frps -c frps.ini &
,但是并没有自启的方式 -
使用systemd启动,有自启方式
-
创建软路由,这里需要根据你所存放的目录来配置,将
frps
执行文件放在/usr/bin
目录下,命令:ln -s /opt/frp/frps /usr/bin/frps
-
编辑文件:
vim /usr/lib/systemd/system/frps.service
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s # 这里的frps.ini配置文件也需要根据自己所放的位置来进行填写 ExecStart=/usr/bin/frps -c /etc/frp/frps.ini [Install] WantedBy=multi-user.target
-
开机自启:
systemctl enable frps.service
-
后台启动:
systemctl start frps.service
-
通过ps -ef |grep frps
,如果查询到进程,则说明程序后台运行成功,此时你就可以关闭ssh窗口了
客户端
接着我们配置客户端的基础配置,我们以windows的远程连接和linux的ssh连接为例,首先需要测试是否可以在本地连接,测试成功后再配置文件。
打开文件frpc.ini
,进行以下配置
|
|
配置完成之后,打开终端,使用命令./frpc -c frpc.ini
,即可在终端中运行,如果出现success,则说明运行成功。
此时我们就可以通过公网IP加上设置的remote_port
就可以访问了
frpc程序在windows中不能直接双击运行!双击后并不会有任何反应!
后台运行及开机自启
同样,此时关闭终端后会导致程序停止,为了让其在后台运行,并且能开启自启动,我们需要进行优化。
由于windows中的后台运行及开机自启并不熟悉,这里大家可以自己上网搜索解决方法,这里只讲述linux的。
方法与服务器的配置类似,只是frps
改为frps
,其他没什么变化
高阶
现在我们已经学会的基本的配置,但是现在我们只能通过公网IP的方式去访问,这显得很不优雅,最好的方式是通过域名的方式去访问。
接下来我们学习一下域名的配置方法,首先需要一个自己的域名,然后需要配置好dns解析。
服务端
首先需要增加frps
的配置,打开frps.ini
,并按照以下配置
|
|
我们这里考虑的是单服务器配置多个域名的情况,因此需要配置nginx
来做反向代理。又因为我不想看到不安全信息,所以使用的是https
协议。
我们以plex为例,关于plex是什么,大家可以自行百度。
在./nginx/conf.d
文件中创建plex.conf
,并按照以下配置
|
|
配置完成之后,凡事访问的域名为plex.hikoutei.cn
都会通过HTTPS
协议进入,最终都会访问本机的6080端口,而6080端口则是我们刚才配置的frp的服务器的http的端口。
然后重启就可以了:systemctl restart frps.service
客户端
首先需要安装plex的服务端并且能正常运行。
接着,配置frcp.ini
|
|
重启frpc之后,便可通过官网访问。
需要注意如果使用的是云服务器记得将那些服务器的端口给开着,否则会无法访问。