简述
端口代理或者说转发在实际业务中还是比较常见和需要的,特别是当您需要从互联网访问内网业务,另外常见的就是在实际环境中,因网络限制导致一些业务或需求的需要而做代理……庆幸的是Linux大法真的好用,几乎你用到的它都能完成。
场景逻辑
- 如上图,
客户机C
需要访问业务机A
上的web服务 业务机A
可以访问云服务B
,反之云服务B
无法直接访问业务机A
云服务B
正常情况下,客户机有外网就可以随时随地访问云服务B
实现想法
- 云服务B SSH配置
业务机A 操作
## 配置 ssh key,用于免密登录 ssh_keygen ## 将key 文件 id_rsa.pub 传送给远端 云服务B ssh-copy-id -i id_rsa.pub -p 8857 root@云服务B ## 开启端口转发 ## 8066 是 云服务B上的监听端口 ## localhost:80 是 业务机A 本地信息及业务端口 ## 6786 是 云服务B ssh 端口 ssh -NfR 8066:localhost:80 root@云服务B -p 6786
客户机C 验证
- 访问 云服务B:8066
- 实际获取得 业务机A:80 上的内容
- 客户机C 无感,但如果 ssh 端口代理异常,就会业务无法访问
补个小漏
业务机A 检查至 云服务B 网络是否正常
ping -c 4 -w 3 云服务B
业务机A 检查 SSH 端口代理是否正常
编写 port_fr.sh
#!/bin/bash if ! curl -s -u test:test123456 'http://xxx.com.cn' | grep -qw 'xxx' ;then for i in $(pstree -p | grep -w 'ssh' | cut -d'(' -f2 | cut -d')' -f1) do if [ -n "${i}" ];then kill -9 "${i}" fi done ssh -NfR 8066:localhost:80 root@云服务B -p 6786 fi
添加计划任务 cron,每分钟巡检一次
*/1 * * * * bash port_fr.sh > /dev/null 2>&1
- 巡检日志
让我来瞅瞅每月更新的狠人