# 前言 
	由于公司业务需要,搭建一组外网访问内网服务的一套链接关系,通过外网ip访问公司内网
# 技术采用
	frp 
	docker
# 环境
	客户端,服务端皆为 Ubuntu 18
# 实现原理
    公网服务器作为服务端,内网服务器作为客户端,服务器端主动监听端口;
    客户端主动连接服务器端的主端口,并且告知服务器监听的端口和转发的类型等;
    服务端会fork新的进程监听客户端指定的监听端口;
    外网有连接到服务端的时候,特定进程会将连接转发给内网服务器;
    客户端再把请求发给服务,进行处理

服务端

服务端采用docker开启frp服务

实现步骤

root@VM-8-6-ubuntu:/# mkdir /etc/frp
root@VM-8-6-ubuntu:/# vi /etc/frp/frps.ini
# frps.ini----------------------------------
[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = root  
dashboard_pwd = ********
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081
# 身份验证,可以自己设置,建议设置复杂点。
token = 12345678
# ------------------------------------------

root@VM-8-6-ubuntu:/# docker run --restart=always --network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
afb6951c379d

root@VM-8-6-ubuntu:/# docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED        STATUS        PORTS                             
afb6951c379d   snowdreamtech/frps        "/bin/sh -c '/usr/bi…"   2 hours ago    Up 2 hours                        

浏览器访问 ip:7500

在这里插入图片描述

至此,服务端配置完毕

客户端

即 需要提供服务的内网服务器
客户端采用二进制安装包进行开启服务与部署

实现步骤

# 客户端开始
root@gdwx-dev:/etc/frp# wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
root@gdwx-dev:/etc/frp# ls
frp_0.44.0_linux_amd64.tar.gz

root@gdwx-dev:/etc/frp/frp_0.44.0_linux_amd64# vim frpc.ini
root@gdwx-dev:/etc/frp/frp_0.44.0_linux_amd64# cat frpc.ini
[common]
# server_addr为FRPS服务器IP地址
server_addr = 服务端ip
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 12345678

# [ssh] 为服务名称,下方此处设置为,访问frp服务段的2288端口时,等同于通过中转服务器访问127.0.0.1的22端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP 
# local_port 为目标端口
# remote_port 为远程端口


[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6022

[http]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 6080

[kibana]
type = tcp
local_ip = 127.0.0.1
local_port = 5601
remote_port = 6601

[kingbase8Pgsql]
type = tcp
local_ip = 127.0.0.1
local_port = 54321
remote_port = 6321

[gitlab]
type = tcp
local_ip = 127.0.0.1
local_port = 8088
remote_port = 6088

root@gdwx-dev:/etc/frp/frp_0.44.0_linux_amd64# ./frpc -c ./frpc.ini &
2022/08/29 12:43:09 [I] [service.go:349] [bd686baa0eca6d83] login to server success, get run id [bd686baa0eca6d83], server udp port [0]
2022/08/29 12:43:09 [I] [proxy_manager.go:144] [bd686baa0eca6d83] proxy added: [ssh http kibana kingbase8Pgsql gitlab]
2022/08/29 12:43:09 [I] [control.go:181] [bd686baa0eca6d83] [kingbase8Pgsql] start proxy success
2022/08/29 12:43:09 [I] [control.go:181] [bd686baa0eca6d83] [http] start proxy success
2022/08/29 12:43:09 [I] [control.go:181] [bd686baa0eca6d83] [gitlab] start proxy success
2022/08/29 12:43:09 [I] [control.go:181] [bd686baa0eca6d83] [ssh] start proxy success
2022/08/29 12:43:09 [I] [control.go:181] [bd686baa0eca6d83] [kibana] start proxy success

至此,客户端开启完毕
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐