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服务。