我们设想这样一种情况,我们是一家小公司,在全国有几个小分支办公机构,每个机构有一台服务器,由于公司财务紧张,买不起专线,用的也是普通家用宽带,SD-WAN设备说实话也挺贵的,那么我们怎么去登录各个分支机构的服务器呢?
办法当然多,比如我们可以通过向日葵和todesk这类远程软件连接到分支机构某个人的电脑上再去远程操作,虽然不方便,但是能够完成目的。
针对这种情况,我设计出这样一种方案,通过frp将所有内网服务器映射到一台公网服务器上,再在公网服务器部署jumpserver跳板机做集中管理和权限控制,这样我们只需要连接一次就能去选择连接各个服务器了。
一、环境设计 虽然我的云服务器升级了,但在运行网站的同时难以同时运行跳板机,所以我这里使用虚拟机进行演示,效果相同。
内网服务器是192.168.10.113,将ssh端口22映射到跳板机服务器端口1001。 跳板机服务器是192.168.10.20,其中1000端口是frp监听端口,1001是接受内网ssh转发的端口,1002是管理面板,2222是跳板机的连接端口。
注意:本文仅对核心内容做记录,不会关注防火墙端口开放、开机启动等等小细节。
二、跳板机配置 一键安装跳板机并启动
代码语言:javascript复制curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.17.1/quick_start.sh | bash
cd /opt/jumpserver-installer-v2.17.1
./jmsctl.sh start
登录web面板添加用户、服务器、特权用户、资产分配等,因为内网端口映射到服务器,所以跳板机配置的ssh是连接本地端口。 用户test 密码123456
三、服务端frp安装 下载最新包
代码语言:javascript复制wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_386.tar.gz
解压并编辑 frps.ini
[common]
bind_port = 1000
token = NBmima
dashboard_port = 1002
dashboard_user = test
dashboard_pwd = test
启动服务
代码语言:javascript复制nohup ./frps -c ./frps.ini &
四、配置内网服务器客户端 下载最新包
代码语言:javascript复制wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_386.tar.gz
解压并编辑 frpc.ini
[common]
server_addr = 192.168.10.20
server_port = 1000
token = NBmima
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 1001
启动服务
代码语言:javascript复制nohup ./frpc -c frpc.ini &
五、测试效果
查看frp面板映射状态
192.168.10.20:1002
登录堡垒机
代码语言:javascript复制test@192.168.10.20
ID | 主机名 | IP | 备注
----- ------------------------------------------- ------------------ ---------
1 | 内网主机 | 192.168.10.20 |
页码:1,每页行数:15,总页数:1,总数量:1
提示:输入资产ID直接登录,二级搜索使用 // 字段,如://192 上一页:b 下一页:n
搜索:
[Host]> 1
开始连接到 内网服务器管理员@192.168.10.20 0.1
Last login: Wed Dec 29 06:24:41 2021 from 192.168.10.253
[root@client ~]# ip addr
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:df:d8:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.113/24 brd 192.168.10.255 scope global noprefixroute dynamic ens32
valid_lft 1130sec preferred_lft 1130sec
inet6 fe80::f790:5f32:9201:7e7b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
测试完成,客户端通过堡垒机接口即可选择登录到对应内网服务器。