FRP内网穿透YYDS!!!

发布于 14 天前  95 次阅读


“众所周知”,云服务器的价格不便宜。

尤其是国内的一些机器,价格高,带宽小,首年倒是挺便宜,一到第二年续费价格翻数倍。

为了减轻服务器开支,我在家里装了一台家用服务器,CPU用的是至强的e5 2650v2,内存32G,这样的配置用来挂我的那些网站和服务是绰绰有余了。

于是我就把一些不需要经常做修改的站点和服务放到了这台服务器上。

往外网映射这些服务有两种方法,一种就是利用电信的公网ip直接把端口映射出来,另一种就是利用内网穿透服务在内网和外网中间”打个洞“。

我仔细想了想,直接映射端口虽然很方便,但会有概率被运营商约去喝茶,而且映射出来的服务还需要带着端口号(80和443端口被运营商封堵),非常难看。

所以我决定用内网穿透来实现外网访问。

常见的内网穿透工具就那么几个,经过层层选拔,最终,内网穿透工具被确定为frp,据说frp稳的一批🤣

下面就是frp的部署过程:

frp分为两个部分,分别是客户端和服务端。

客户端是在内网运行的,用于将信息发送给处于外网的服务端。

而服务端,则部署在外网的一台服务器上,用于接收内网客户端发送来的信息,并将信息公布在外网供人们访问。

服务端(CentOS7)

1.下载

下载对应版本的服务端文件,如frp_0.37.1_linux_amd64.tar.gz,终端输入以下命令即可

wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz

2.解压

解压下载的文件

tar -xvf frp_0.37.1_linux_amd64.tar.gz

3.移动

移动文件至/usr/local目录下

#在目标路径新建frp文件夹
mkdir /usr/local/frp

#移动所有文件到frp文件夹中
mv frp_0.37.1_linux_amd64/* /usr/local/frp/

4.配置systemctl

配置systemctl,实现一键控制和开机启动

使用命令vim /usr/lib/systemd/system/frp.service创建frp.service文件并编辑,写入以下内容(内容中的路径和上文frp文件夹的路径一致,不会使用vim编辑器也可以使用xftp等工具手动创建文件并编辑)

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

编辑完成保存后输入以下命令重载配置文件

systemctl daemon-reload

5.设置开机自启

systemctl enable frp

6.其他相关命令

#启动frp
systemctl start frp

#停止frp
systemctl stop frp

#重启frp
systemctl restart frp

#查看frp运行状态
systemctl status frp

#设置frp开机自启
systemctl enable frp

#取消frp开机自启
systemctl disable frp

服务端配置说明

[common] 必须设置
bind_port 是自己设定的frp服务端端口
vhost_http_port 是自己设定的http访问端口
[ssh] ssh反向代理(不是必须设置)
listen_port 是自己设定的ssh访问端口
auth_token用于身份认证(以下皆是)。
[web] http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]);
type 为服务类型,可以设为http,https
custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。
[web2]同上(可设置多个)

实例

[common]
bind_port = 7000
vhost_http_port = 80
[ssh]
listen_port = 6000
auth_token = 123
[web]
type = http
custom_domains = test1.a.com
auth_token = 123
[web2]
type = http
custom_domains = test2.a.com
auth_token = 123

客户端(windows版)

1.下载

到GitHub下载对应版本的客户端文件,如frp_0.37.1_windows_amd64.zip

2.解压

解压下载好的文件,只保留文件夹中的 systemd文件夹、frpc.exe、frpc.ini这几个文件,其他文件删掉即可

3.配置frpc.ini

按照需求修改配置文件

[common]
server_addr = <远程frp服务器ip>
server_port = 远程frp服务器端口
privilege_token = 远程frp服务器token

[http]
type = http
local_ip = 127.0.0.1
local_port = 本地端口号
remote_port = 远程frp服务器的http服务端口号
custom_domains = 配置的域名

4.运行

打开cmd窗口,cd到frp所在的目录,输入frpc.exe 回车即可启动frp,cmd窗口不可关闭,关闭会直接关闭frp