背景:主机集群为安全考虑,禁止了外网,但是部署了部分需要外网的程序在集群内的主机上,为了保证程序继续运行,尝试在有外网跳板机添加代理。
软件:3proxy
github:3proxy
安装:
(1)从github下载代码至本地主机(主机需安装git)
$ git clone https://github.com/z3APA3A/3proxy.git && cd 3proxy
(2)本地编译安装(需root权限)
$ sudo make -f Makefile.Linux && sudo make -f Makefile.Linux install
(3)查看是否安装次成功
$ which 3proxy
/usr/local/bin/3proxy
(4)修改配置文件
$ cd cfg && cp 3proxy.cfg.sample 3proxy.cfg && vi 3proxy.cfg
# 添加以下项
nserver *.*.*.* #内网dns服务器地址 cat /etc/resolv.conf
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
daemon # windows下此值不同,可参考官网
log /var/log/3proxy.log D # 日志路径,确保有权限
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 2
external *.*.*.* # 主机外网地址
internal *.*.*.* # 主机内网地址
dnspr
auth iponly strong
allow * # 允许访问的IP
proxy -a -p6667 # 代理端口
socks -p6666 # sockt端口
(5)启动代理
$ sudo 3proxy cfg/3proxy.cfg
(6)检测端口是否监听
$ sudo netstat -anpl | grep 6666
tcp 0 0 192.168.*.*:6666 0.0.0.0:* LISTEN 5089/3proxy
$ sudo netstat -anpl | grep 6667
tcp 0 0 192.168.*.*:6667 0.0.0.0:* LISTEN 5089/3proxy
(7)简单的管理脚本
#!/usr/bin/env bash
#
opt="${1}"
function process_num(){
check=$(ps -ef | grep 3proxy | grep -v grep | wc -l)
echo ${check}
}
function stop(){
check=$(process_num)
if [ ${check} -ne 0 ];then
sudo killall 3proxy
else
echo "No such process 3proxy!"
fi
}
function start(){
check=$(process_num)
if [ ${check} -ne 0 ];then
echo "3proxy already in status: started"
exit 0
else
sudo 3proxy ./cfg/3proxy.cfg && echo "start 3proxy success!"
fi
}
function restart(){
stop
start
}
function status(){
check=$(process_num)
if [ ${check} -ne 0 ];then
echo "3proxy status: started"
else
echo "3proxy status: stoped"
fi
}
function main(){
case ${opt} in
"start")
start
;;
"stop")
stop
;;
"restart")
restart
;;
"status")
status
;;
*)
echo "Usage: sh $0 [start|stop|restart|status]"
;;
esac
}
main
(8)脚本使用示例
$ chmod u+x ctrl.sh
$ ./ctrl.sh
Usage: sh ./ctrl.sh [start|stop|restart|status]
(9)其他应用使用代理示例
# pip使用代理
sudo pip --proxy=*.*.*.*:6667 install PySocks
# wget使用代理
wget -e "http_proxy=*.*.*.*:6667" https://nchc.dl.sourceforge.net/project/socksipy/socksipy/SocksiPy%201.00/SocksiPy.zip
# curl使用代理
curl -x *.*.*.*:6667 www.baidu.com
# yum使用代理
export https_proxy="*.*.*.*:6667"; yum install ntp
简单安装及使用介绍到这里吧,更多详细使用方法请移步3proxy官网。