使用 frp 实现内网穿透

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。这里仅介绍 http 协议搭建,通过固定域名从外网访问内网网站。

frp 包含服务端和客户端两个工具。服务端用于提供内网穿透服务(类似花生壳);客户端,提供内网穿透请求。

本例服务端采用 CentOS,客户端使用 Windows。

1、下载

下载地址:https://github.com/fatedier/frp/releases

本例使用版本如下:

 

这个两个版本也可以从百度网盘下载:http://pan.baidu.com/s/1mih3KNI

服务端下载

wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_386.tar.gz

客户端下载

直接从浏览器下载。

2、安装

frp 是绿色软件,解压后即可使用。

下载的 frp 压缩包里同时包含服务端和客户端 个工具,frps 是服务端,frpc 是客户端。

将 frp 压缩包解压到合适的目录。

服务端解压命令如下:

tar -zxvf frp_0.13.0_linux_386.tar.gz
3、配置

服务端和客户端工具都对应有一个同名的 ini 文件,就是他们的配置文件。(目录里还有两个名称中包含“_full”字符串的文件,不用管它)

服务端配置

cd frp_0.13.0_linux_386
vi frps.ini

frps.ini 内容编辑如下:

[common]
bind_port = 7000
vhost_http_port = 8080

bind_port  是服务端接收客户端请求和数据交互的端口。

vhost_http_port 是内网映射到外网的对外端口。vhost_http_port 必须与客户端配置的域名一起使用,例如:http://frp.biliyu.com:8080。这里的 8080 对应 vhost_http_port 的值,frp.biliyu.com 对应客户端配置的域名(参加下文)。

客户端配置

使用文本编辑器打开 frpc.ini 文件,内容编辑如下:

[common]
server_addr = *.*.*.*
server_port = 7000

[web]
type = http
local_port = 3000
custom_domains = frp.biliyu.com

server_addr 填写服务器 IP 地址(请将 *.*.*.* 替换为自己的服务器 IP)。

server_port 填写服务器的 bind_port。

type 默认为 http。

local_port 填写需要映射到外网的网站端口。

custom_domains 填写将要从外网访问的域名。(与服务器端配置的 vhost_http_port 一起决定网站最终的外部访问地址)

4、域名配置

使用 A 记录添加一个二级域名,指向服务器 IP。

5、运行

先要启动服务器端工具,再启动客户端工具,否则客户端无法注册到服务端。

启动服务端工具

./frps -c frps.ini

启动客户端工具

./frpc -c frpc.ini

从外网访问网站

http://frp.biliyu.com:8080
6、使用  80 端口访问

有些时候必须使用 80  端口访问网站服务,比如微信公众号服务。将服务器端的 vhost_http_port 参数配置成 80 就可以了。

但是,有时候 80 端口被 apache 或 nginx 使用了,那么就要通过修改 apache 或 nginx 的配置来解决。修改配置的目的是将域名域名对应的 80 端口转发到 vhost_http_port 配置的端口上来。

以 nginx 为例:

server {
    listen       80;
    server_name  frp.biliyu.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X_Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:8080;
    }
}
7、服务端在后台运行

使用 vi 新建 frps.sh 文件,内容如下:

./frp_0.13.0_linux_386/frps -c ./frp_0.13.0_linux_386/frps.ini

修复 frps.sh 为可执行文件:

chmod 777 frps.sh

使用 nohup 命令实现后台运行服务端: 

nohup ./frps.sh &

前一篇:
后一篇:

发表评论