简介

解决问题如下:

线上服务器无法访问公网,申请公网访问流程过于复杂,部署环境又需要连接公网来安装包,可使用本方式配置代理联网。

架构

  1. 通过Fiddler,在本地Windows机器上启动HTTP代理服务
  2. 通过Xshell/MobaXterm等远程连接软件,建立SSH Tunnel
  3. 连接远程服务器后,在服务器设置http_proxy https_proxy no_proxy

远程代理架构图

资源包

Fiddler

部署流程

1. 部署Fiddler

下载并解压Fiddler至本地文件夹,双击Fiddler.exe运行Fiddler,对Fiddler做如下配置:

  • 勾选允许远程计算机连接

部署Fiddler

2. 配置SSH工具

MobaXterm
  1. 点击Tunneling,进入SSH Tunneling设置页面

配置MobaXterm-1

  1. 点击New SSH tunnel,创建新的SSH tunnel

配置MobaXterm-2

  1. 点击Remote port forwarding,设置远程代理,填写如下参数:
    • Local server:port使用Fiddler中启动的本地代理端口( hostname + port
    • SSH server:远程SSH登录信息( ip + port + username
    • Remote clients:填写远端服务器的一个端口,程序会在远程服务器启动该端口用于转发(forwarded port

配置MobaXterm-3

Xshell
  1. 进入ssh连接属性页面, 连接 –> SSH –> 隧道,点击添加

配置Xshell-1

  1. 修改源主机信息,填写远程ssh的ip,侦听端口随便定义,远程主机会将http请求转发至该端口,进行网络访问

配置Xshell-2

配置Xshell-3

3. 配置远端服务器

参考系统:CentOS Linux release 7.6.1810

  • 临时配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 代理端口使用SSH tunnel中remote clients部分配置的forwarded port

    # 设置环境变量
    export https_proxy=https://127.0.0.1:8888
    export http_proxy=http://127.0.0.1:8888

    # 测试网络访问
    curl www.baidu.com

    # HTTP与HTTPS可正常访问,ping公网ip是不通的,正常yum安装满足需求
  • 永久配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cat >> /etc/environment << EOF

    # 默认http访问均走如下代理
    http_proxy="http://127.0.0.1:8888"
    https_proxy="https://127.0.0.1:8888"

    # 访问以下ip不经过代理
    no_proxy="localhost,127.0.0.1"

    EOF

常见问题

问题:代理突然连不上网

解决方法:

  1. 远程服务器检查8888端口是否有异常状态的连接

    1
    netstat -tunlp | grep 8888
  2. 正常状态输出如下

    1
    tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      18860/sshd: boco4a
  3. 异常状态会存在多个异常状态TCP连接(如TIME_WITE,CLOSE_WITE等)占用8888端口,使用kill -9 <pid>杀掉进程,重新建立SSH tunnel连接即可

参考文档