背景
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