背景
10.17.8.* 網(wǎng)段的內(nèi)網(wǎng)訪問(wèn)權(quán)限被限制的很?chē)?yán)(雖然可以正常上外網(wǎng)),導(dǎo)致無(wú)法訪問(wèn)內(nèi)網(wǎng)部署的很多服務(wù)。
每增加一個(gè)IP,都需要走審批流程,非常低效和麻煩。
解決思路
采用代理。
已有虛機(jī)10.17.8.34,10.17.8.35
將10.17.8.34新添加一個(gè)IP10.17.2.178(該網(wǎng)段具有寬松的內(nèi)網(wǎng)訪問(wèn)權(quán)限)。
在該機(jī)器上部署代理。10.17.8.35通過(guò)該代理,實(shí)現(xiàn)http和https的上網(wǎng)。
建設(shè)代理
采用ssh的socks5代理 + polipo的http代理 的組合
socks5代理
在代理機(jī)上執(zhí)行:
ssh -D 9050 -f -C -q -N user@localhost -p 65300
ssh本身具有socks5代理能力,上述指令可以建立一個(gè)端口為9050的socks5代理端口。
polipo的http代理
用polipo將上述的socks5轉(zhuǎn)換為更方便使用的http_proxy和https_proxy代理。
polipo可以采用直接安裝或選擇docker的方式,這里選擇通用性更強(qiáng)的docker。
參考:https://hub.docker.com/r/vimagick/polipo/
docker pull vimagick/polipo
建立一個(gè)docker-compose.yml文件,內(nèi)容參考如下:
polipo:
image: vimagick/polipo
command:
#authCredentials=username:password
socksParentProxy=localhost:9050
ports:
- "8123:8123"
restart: always
docker-compose up -d
(TODO:已知bug:目前采用這種方式https無(wú)法成功,但是附錄里的傳統(tǒng)安裝方式,https可以成功)
連接代理
在郁悶的10.17.8.35機(jī)器上,測(cè)試一下能否這個(gè)端口:
nmap 10.17.8.34 -p 8123
如果成功,執(zhí)行下面兩句即可實(shí)現(xiàn)http和https的上網(wǎng)
export http_proxy=http://10.17.8.34:8123
export https_proxy=http://10.17.8.34:8123
注意:export是在shell中執(zhí)行,采用systemctl啟動(dòng)的服務(wù),例如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服務(wù)即可生效。
附錄
傳統(tǒng)的polipo的centos安裝
這里提供傳統(tǒng)的安裝方式
git clone https://github.com/jech/polipo.git
cd polipo
# make.info需要這個(gè)
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