0、说明
测试环境系统版本: CentOS 7.4 X64
主要就实现一个目的:通过同一台代理服务器的不同SOCKS端口,访问各地服务器
1、机房服务器有固定公网IP时的实现方法
情况说明:
1、现在有十几台服务器托管到IDC机房,并且有台服务器拥有固定公网IP。
2、目前要访问机房所有的服务器,都可以先连上那台拥有固定IP的服务器,然后在ssh远程到其他服务器。
问题:
但是觉得每次都先连上那台服务器,在连其他服务器很不方便并且容易分不清现在连的哪台服务器。
处理:
1、可以在公司内网找台服务器做代理。
2、代理服务器做ssh隧道,开启socket连接到机房服务器
3、机房有固定公网IP的那台服务器开启路由转发
4、公司内部客户端电脑安装代理软件,配置访问机房服务器网段使用代理服务器IP+端口。
5、打开代理软件,通过SecureCRT软件直接输入机房各个服务器IP连接即可。
开始配置
1.1、代理服务器配置
1 2 3 4 5 |
[root@imzcy ~]# ssh -CNfnqg -D 3333 -p 8848 zcy@8.8.8.8 zcy@8.8.8.8's password: [root@imzcy ~]# [root@imzcy ~]# ps aux |grep ssh |grep 3333 |grep -v grep root 6188 0.0 0.1 176352 1448 ? Ss 01:26 0:00 ssh -CNfnqg -D 3333 -p 8848 zcy@8.8.8.8 |
ssh各参数作用说明:
-C :启用压缩传输
-N :不执行远程命令,用于实现端口转发功能
-f :后台运行
-n :后台运行时必须加此选项
-q :静音模式,抑制大多数的警告和诊断消息
-g :允许远程主机连接到本地转发端口
-D :指定客户机连接的本机代理端口
-p :指定连接远程8.8.8.8主机的ssh端口
1.2、机房固定IP服务器配置
1 2 3 |
机房服务器开启路由转发 [root@gitlab ~]# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf [root@gitlab ~]# sysctl -p |
1.3、内网客户机配置
1.3.1、安装代理软件Proxifier
1.3.2、打开Proxifier软件,点击左上角[代理服务器]图标,点击[添加]输入代理服务器IP:192.168.217.100和端口3333,协议选择SOCKS 5,点击确定完成添加。
1.3.3、回到Proxifier首页,点击左上角[代理规则]图标,点击添加规则输入规则名称(见名知意即可)、目标主机(192.168.1.0)、动作下拉选择刚才添加好的代理服务器,点击确定完成添加。
1.3.4、Proxifier代理软件运行状态下,使用SecureCRT软件远程连接192.168.1.0网段服务器则会通过代理服务器做跳转访问到目标机房服务器群。
1.4、连接故障排查思路
出现了连接不到服务器问题:1、首先检查代理软件是否打开。2、根据代理软件日志信息判断是否正常连接到代理服务器端口。3、检查到代理服务器间网络是否正常。4、检查代理服务器ssh是否正常运行。5、检查代理服务器到目标机房服务器网络是否正常等依次排查。
Proxifier代理软件正常连接日志如下
1 |
[08.04 15:41:46] SecureCRT.exe *64 - 192.168.1.2:22 打开通过代理 192.168.217.100:3333 SOCKS5 |
2、机房服务器没有固定IP的情况下实现方法
情况说明:
1、现在有十几台服务器托管到IDC机房,服务器没有固定公网IP,但是有一台服务器可以访问互联网。
2、目前没有办法在公司主动连接到机房服务器。
处理:
1、公司外网有固定IP,在防火墙设备上做端口映射(外网IP的8848端口映射到内部代理服务器的22端口)。
2、机房能访问互联网的服务器上开启路由转发,并做反向代理连接公司内部代理服务器
3、公司内部代理服务器上做正向代理,开启socket
4、公司内部客户端电脑安装代理软件,配置访问机房服务器网段使用代理服务器IP+端口。
5、打开代理软件,SecureCRT直接输入机房各个服务器IP连接即可。
2.1、公司外网防火墙配置
防火墙添加端口映射,访问外网IP 9.9.9.9,端口8848的请求,都到内网代理服务器192.168.217.100的22端口
2.2、机房服务器配置
1 2 3 4 5 6 7 8 9 10 11 |
2.2.1、开启路由转发 [root@gitlab ~]# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf [root@gitlab ~]# sysctl -p 2.2.2、使用外网映射的8848端口连接到内网代理服务器ssh [root@gitlab ~]# ssh -p 8848 -qngfNTR 2222:127.0.0.1:22 zcy@9.9.9.9 zcy@9.9.9.9's password: [root@gitlab ~]# [root@gitlab ~]# ps aux |grep ssh |grep 2222 |grep -v grep root 42800 0.0 0.0 180440 208 ? Ss 18:53 0:00 ssh -p 8848 -qngfNTR 2222:127.0.0.1:22 zcy@9.9.9.9 [root@gitlab ~]# |
ssh各参数作用说明:
-p 8848 :指定远程连接服务器的ssh端口为8848
-n :后台运行时必须加此选项
-g :允许远程主机连接到本地转发端口
-q :静音模式,抑制大多数的警告和诊断消息
-f :后台运行
-N :不执行远程命令,用于实现端口转发功能
-R :指定将远程(服务器)主机上给定TCP端口或Unix套接字的连接转发到本地端。
2222:127.0.0.1:22 :将远程主机上2222端口的连接转发到本地22端口
2.3、内网代理服务器配置
1 2 3 4 5 6 7 8 9 10 11 12 13 |
2.3.1、机房正常连接到代理服务器后,会在代理服务器上开启2222端口的监听(上面机房服务器有配置-R选项内容) [root@imzcy ~]# ss -tnl |grep 2222 LISTEN 0 128 127.0.0.1:2222 *:* LISTEN 0 128 ::1:2222 :::* [root@imzcy ~]# 2.3.1、此时配置socket,访问本机4444端口的连接都转发到本机2222端口,也就是机房服务器的22端口上。 [root@imzcy ~]# ssh -CNfnqg -D 4444 -p 2222 root@127.0.0.1 root@127.0.0.1's password: [root@imzcy ~]# [root@imzcy ~]# ps aux |grep ssh |grep 2222 |grep -v grep root 1606 0.0 0.1 176352 1208 ? Ss 23:36 0:00 ssh -CNfnqg -D 4444 -p 2222 root@127.0.0.1 [root@imzcy ~]# |
ssh各参数作用说明:
-D :指定socket连接的端口
-p 2222 root@127.0.0.1 :指定ssh连接的端口。连接本地2222端口,相当于连接机房服务器22端口,所以此处密码要输入机房服务器的root用户密码
2.4、内网客户机配置
2.4.1、安装代理软件Proxifier
2.4.2、打开Proxifier软件,点击左上角[代理服务器]图标,点击[添加]输入代理服务器IP:192.168.217.100和端口4444,协议选择SOCKS 5,点击确定完成添加。
2.4.3、回到Proxifier首页,点击左上角[代理规则]图标,点击添加规则输入规则名称(见名知意即可)、目标主机(192.168.1.0)、动作下拉选择刚才添加好的代理服务器,点击确定完成添加。
2.4.4、Proxifier代理软件运行状态下,使用SecureCRT软件远程连接192.168.1.0网段服务器则会通过代理服务器做跳转访问到目标机房服务器群。
本文完
另,因为ssh可能会因为网络不稳定导致连接断掉,这样使用代理可能会经常出现问题。下一章将介绍使用autssh监控ssh连接,断掉自动重连以及使用expect脚本自动输入密码:《点击跳转》