# 前言
由于公司业务需要,搭建一组外网访问内网服务的一套链接关系,通过外网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
至此,服务端配置完毕文章来源:https://uudwc.com/A/2zwkN
客户端
即 需要提供服务的内网服务器
客户端采用二进制安装包进行开启服务与部署
实现步骤
# 客户端开始
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
至此,客户端开启完毕
文章来源地址https://uudwc.com/A/2zwkN