建立基于polipo的代理

背景

10.17.8.* 网段的内网访问权限被限制的很严(虽然可以正常上外网),导致无法访问内网部署的很多服务。
每增加一个IP,都需要走审批流程,非常低效和麻烦。

解决思路

采用代理。

已有虚机10.17.8.34,10.17.8.35
将10.17.8.34新添加一个IP10.17.2.178(该网段具有宽松的内网访问权限)。
在该机器上部署代理。10.17.8.35通过该代理,实现http和https的上网。

建设代理

采用ssh的socks5代理 + polipo的http代理 的组合

socks5代理

在代理机上执行:

ssh -D 9050 -f -C -q -N user@localhost -p 65300

ssh本身具有socks5代理能力,上述指令可以建立一个端口为9050的socks5代理端口。

polipo的http代理

用polipo将上述的socks5转换为更方便使用的http_proxy和https_proxy代理。

polipo可以采用直接安装或选择docker的方式,这里选择通用性更强的docker。
参考:https://hub.docker.com/r/vimagick/polipo/

docker pull vimagick/polipo

建立一个docker-compose.yml文件,内容参考如下:

polipo:
  image: vimagick/polipo
  command:
    #authCredentials=username:password
    socksParentProxy=localhost:9050
  ports:
    - "8123:8123"
  restart: always
docker-compose up -d

(TODO:已知bug:目前采用这种方式https无法成功,但是附录里的传统安装方式,https可以成功)

连接代理

在郁闷的10.17.8.35机器上,测试一下能否这个端口:

nmap 10.17.8.34 -p 8123

如果成功,执行下面两句即可实现http和https的上网

export http_proxy=http://10.17.8.34:8123
export https_proxy=http://10.17.8.34:8123

注意:export是在shell中执行,采用systemctl启动的服务,例如docker,是不受影响的。因此,需要在docker的配置文件里,centos是/etc/sysconfig/docker里添加

http_proxy=http://10.17.8.34:8123
https_proxy=http://10.17.8.34:8123
sudo systemctl restart docker.service

重启docker服务即可生效。

附录

传统的polipo的centos安装

这里提供传统的安装方式


git clone https://github.com/jech/polipo.git
cd polipo
# make.info需要这个
sudo yum install texinfo
make -sj
sudo make install
sudo mkdir /etc/polipo
echo -e '
proxyAddress = "::0"
socksParentProxy = "localhost:9050"
socksProxyType = socks5
daemonise = true
' > /etc/polipo/config
# run now
sudo polipo

你可能感兴趣的:(建立基于polipo的代理)