简述

端口代理或者说转发在实际业务中还是比较常见和需要的,特别是当您需要从互联网访问内网业务,另外常见的就是在实际环境中,因网络限制导致一些业务或需求的需要而做代理……庆幸的是Linux大法真的好用,几乎你用到的它都能完成。

2023-08-03T08:40:12.png

场景逻辑

  • 如上图,客户机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
  • 业务机A 代理结果
    2023-08-10T01:07:47.png

    2023-08-10T01:07:58.png

  • 客户机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
    • 巡检日志
      2023-08-10T00:52:02.png

「 希望熬过一切,星光璀璨 」

流年小站,感谢有您的支持

「 道路坎坷,感谢有您 ---来自 anYun 的感谢 」

使用微信扫描二维码完成支付

2023-08-04
已阅:23391 人/次

 
 
 
分享是一种美德 x
打开微信,右上角的"+"选择"扫一扫"
使用“扫一扫”将博文分享至朋友圈吧

本文由 anYun 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3oibnoh9lo6cs

只有地板了

  1. 用户头像
    拾光

    让我来瞅瞅每月更新的狠人

添加新评论

Myssl安全认证