0%

使用FRP搭建内网穿透服务

frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

本文主要内容是『如何利用内网穿透访问内网Web服务』。

准备工作

  • 一台有公网ip的服务器S1,ip为:x.x.x.x
  • 一台位于内网(没有公网ip)的服务器S2
  • 一个已经解析到公网ip的域名:test.yourdomain.com
  • 一个位于内网的Web服务,地址为:y.y.y.y:local_port

部署frps服务

frps服务部署在S1服务器上,执行下面命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cat <<"EOF">> frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 8000
token = 1234567890123456
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
EOF

cat <<"EOF">> docker-compose.yaml
version: '2'
services:
frps:
image: riftbit/frp-server
container_name: frps
restart: always
ports:
- 7000:7000
- 8000:8000
- 7500:7500
volumes:
- ./frps.ini:/frp_config/frps.ini
EOF

docker-compose up -d

部署frpc服务

frpc服务部署在S2服务器上,执行下面命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cat <<"EOF">> frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 1234567890123456

[web]
type = http
local_ip = y.y.y.y
local_port = local_port
custom_domains = test.yourdomain.com
EOF

cat <<"EOF">> docker-compose.yaml
version: '2'
services:
frpc:
image: riftbit/frp-client
container_name: frpc
restart: always
volumes:
- ./frpc.ini:/frp_config/frpc.ini
EOF

docker-compose up -d

访问

使用浏览器打开http://test.yourdomain.com:8000访问位于内网的Web服务。

后记

可以在S1服务器上使用nginx做一下反向代理,然后可以直接使用http://test.yourdomain.com访问Web服务。