# 搭建成功了frp服务，可以用外网访问内网网站

By [hyc530](https://paragraph.com/@hyc530) · 2022-10-14

---

需求： 1.我想在任何地方访问家里的服务器的文件，

2.我想在博客中调用内网的大文件，这样的话，对于这些大文件，就可以存放在内网，而不需要上传到网站服务器，节省服务器空间。

3.我想在任何地方都可以维护家里的网络环境

做法： 使用frp工具，服务端放在阿里云服务器里，客户端运行在exsi虚拟机下的centos里或者windows里，这里只需要有一处运行即可。

下载地址：[https://github.com/fatedier/frp/releases](https://github.com/fatedier/frp/releases) ftp的github

解压后，将文件夹里面的文件放到 /root/frp 目录下

服务端配置： 将 frps.ini 文件修改为如下内容 注意：文件的权限

    [common]
    bind_port = 5443
    vhost_http_port = 808
    vhost_https_port = 909
    dashboard_user = admin
    dashboard_pwd = admin
    token=yourpassword
    

这里的5443是frp服务端口，808是http服务端口，909是https服务端口。之所以这样做，是因为我的服务器本身用了宝塔面板搭建了网站，因此为了错开80端口和443端口进行了这

样的设置。

以上端口需要在宝塔面板中打开防火墙放行，也需要在阿里云管理面板中放行。

然后做域名解析，将需要的域名A记录解析到阿里云服务器上。比如把nas.abc.com解析到了服务器上。

在宝塔面板中新建网站，[输入刚才解析的域名nas.abc.com](http://xn--nas-0v1ej6at9fu9ijmxn0kzn0brs7bdjo.abc.com)，建立的时候只需要修改一个地方，即PHP版本处，修改为“静态”。然后在“反向代理”处进行修改，对于访问http的

话，修改为 “[http://127.0.0.1:808](http://127.0.0.1:808)”，访问https的话修改为“[https://127.0.0.1:909](https://127.0.0.1:909)”。

服务端配置完毕。

SSH进入服务器，输入:

    ./frps -c frps.ini
    

就会启动服务。

客户端配置： common\] server\_addr = 替换为你的服务器IP地址 server\_port = 5443 tls\_enable = true token=yourpassword

\[EXSI\] type = https local\_ip = 192.168.5.200 local\_port = 80 remote\_port = 909 custom\_domains = [exsi.abc.com](http://exsi.abc.com)

\[NAS\] type = http local\_ip = 192.168.5.189 local\_port = 5000 remote\_port = 808 custom\_domains = [nas.abc.com](http://nas.abc.com)

\[localblog\] type = http local\_ip = 192.168.5.188 local\_port = 8888 remote\_port = 808 custom\_domains = [localblog.taholab.com](http://localblog.taholab.com)

\[ssh\] type = tcp local\_ip = 127.0.0.1 local\_port = 22 remote\_port = 6000

以上的内网IP地址、端口和域名相应的替换为你的即可。

\[common\] 部分为客户端的初始化板块，包括了服务端的ip地址，服务端口，tls是否启动，token密码等内容，一次设置，全局有效。

除了\[common\]部分外，以上配置文件中，每一个 \[ \] 板块下的一段，对应着一个你需要内网穿透的应用。如果你只有一个网站需要内网穿透，则只保留一个板块就可以。里面的 \[

\] 是服务标识符，其下对应的代码含义如下：

type 表示服务类型，包括了http、https、tcp、udp等服务，比如搭建网站的话就用http或https服务。 local\_ip 表示你的内网网站的ip地址，比如我的测试博客 [localblog.taholab.com](http://localblog.taholab.com) 在内网访问就可以输入 [http://192.168.5.188](http://192.168.5.188):端口号 来访问。端口号就是你的内网网站设置

的端口号，默认是80。 local\_port 表示你的内网网站的网站端口，默认是80，你也可以改成你要的端口号，比如上述的 [localblog.taholab.com](http://localblog.taholab.com) 如果把网站端口设置为了8888，那么内网网站访问地址

就是：[http://192.168.5.189:8888](http://192.168.5.189:8888) remote\_port 表示frp服务中http网站所用的端口，本配置文件用的808，服务端也是808，如果是https网站的话，那么就得用909（因为服务端配置的是909）。 custom\_domains 是访问该服务的域名，只对网站有用，tcp服务不需要这一项。以 [localblog.taholab.com](http://localblog.taholab.com) 为例，这里就输入 [localblog.taholab.com](http://localblog.taholab.com) 。

配置完毕后保存。然后运行: ./frpc -c frpc.ini

无误的话就会启动客户端，于服务端建立连接。举例如下：

如果在浏览器访问 [http://nas.abc.com:808](http://nas.abc.com:808)，则会打开内网的[http://192.168.5.189:5000](http://192.168.5.189:5000)。

所有数据基本上都是从服务器转发的，因此会受限于服务器的带宽以及流量上限。我的服务器一个月2000Gb浏览，30Mbps带宽，勉强够用。

已经可以访问NAS了.

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

在CentOS上将frp内网穿透服务注册为服务并开启自启动且失效自启动
-----------------------------------

服务端配置和自动设置
----------

创建服务脚本并编辑 vi /etc/systemd/system/frps.service （注意，代码中的frps.ini是服务端配置文件，请依据自己的实际情况做相应修改）

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

\[Service\] Type=simple User=root Restart=on-failure ExecStart=/root/frp/frps -c /root/frp/frps.ini ExecReload=/root/frp/frps -c /root/frp/frps.ini KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit

\[Install\]
-----------

WantedBy=multi-user.target

加入服务列表并设置自启动: #重新加载服务列表 systemctl daemon-reload #将frps加入开机自启动 systemctl enable frps.service #启动服务 systemctl start frps.service

#以下是其他常用命令 #关闭服务 systemctl stop frps.service #重启服务 systemctl restart frps.service #显示服务的状态 systemctl status frps.service #禁用服务开机启动 systemctl disable frps.service #查看服务是否开机启动 systemctl is-enabled frps.service #查看已经启动的服务列表 systemctl list-unit-files|grep enable #查看启动失败的服务列表 systemctl --failed配置和自启动设置

* * *

客户端配置和自动设置 客户端与服务端配置方法完全一致，代码如下：

创建服务脚本并编辑 vi /etc/systemd/system/frpc.service

内容如下：（注意，代码中的frpc.ini是服务端配置文件，请依据自己的实际情况做相应修改）
----------------------------------------------

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

\[Service\] Type=simple User=root Restart=on-failure ExecStart=/root/frp/frpc -c /root/frp/frpc.ini ExecReload=/root/frp/frpc -c /root/frp/frpc.ini KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit

\[Install\]
-----------

WantedBy=multi-user.target

加入服务列表并设置自启动

#重新加载服务列表 systemctl daemon-reload #将frpc加入开机自启动 systemctl enable frpc.service #启动服务 systemctl start frpc.service

#以下是其他常用命令 #关闭服务 systemctl stop frpc.service #重启服务 systemctl restart frpc.service #显示服务的状态 systemctl status frpc.service #禁用服务开机启动 systemctl disable frpc.service #查看服务是否开机启动 systemctl is-enabled frpc.service #查看已经启动的服务列表 systemctl list-unit-files|grep enable #查看启动失败的服务列表 systemctl --failed

---

*Originally published on [hyc530](https://paragraph.com/@hyc530/frp)*
