阿里云多网卡HTTP代理部署脚本

简介: 阿里云多网卡HTTP代理部署脚本
#!/bin/bash
# author HAITAO
# time 2022/4/27
stty erase ^H
# ----------函数区----------
###预配置基础信息函数
function init {
##请提前定义网卡基础信息
#网卡名
eval echo "请输入网卡名!" && read eth_name
echo ${eth_name}
#网卡MAC地址
eval echo "请输入MAC地址!" && read MAC
echo ${MAC}
#MAC=00:16:3e:00:27:12
#辅助ip列表
eval echo  "请输入辅助ip列表,用逗号隔开 例:10.0.80.136,10.0.80.137,10.0.80.138 " && read ip
echo ${ip}
#ip_list=(10.0.80.136 10.0.80.137 10.0.80.138 10.0.80.139)
ip_list=(`echo $ip | tr ',' ' '` )
#子网掩码
echo  "请输入子网掩码!" && read NETMASK
echo ${NETMASK}
#NETMASK=255.255.224.0
}
###查看基础信息函数
function echo_init {
  echo '网卡名':${eth_name}
  echo 'MAC': ${MAC}
  echo 'ip_list': ${ip_list[@]}
  echo 'NETMASK': ${NETMASK}
}
###根据预配置设置网卡函数
function set_network {
if [ ! -n "$eth_name" ] || [ ! -n "$MAC" ] || [ ! -n "$ip_list" ] || [ ! -n "$NETMASK" ];then
  echo "无配置信息,请重新配置网络信息!"
  sleep 2
  clear
  continue
else
##1.网卡配置
wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz && \
tar -zxvf multi-nic-util-0.6.tgz && \
cd multi-nic-util-0.6 && \
bash install.sh
systemctl restart eni.service
cat > /etc/sysconfig/network-scripts/ifcfg-${eth_name} <<EOF
DEVICE=${eth_name}
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=no
IPV6INIT=no
PERSISTENT_DHCLIENT=yes
HWADDR=${MAC}
DEFROUTE=no
EOF
systemctl restart network
#网卡主ip
ip1=`ifconfig ${eth_name} | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`
#网卡路由标识
route_rule=`ip rule |grep ${ip1} | awk -F " " '{print $5}'`
for i in "${!ip_list[@]}";  
do  
echo "$i" "${ip_list[$i]}"
cat > /etc/sysconfig/network-scripts/ifcfg-${eth_name}:${i} <<EOF
DEVICE=${eth_name}:${i}
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=${ip_list[$i]}
NETMASK=${NETMASK}
EOF
#添加ip路由
ip rule add from ${ip_list[$i]} table ${route_rule}
done
fi
systemctl restart network
}
###部署tinyproxy函数
function install_tinyproxy {
##安装tinyproxy
yum -y install tinyproxy
cat > /etc/tinyproxy/tinyproxy.conf <<EOF
User tinyproxy
Group tinyproxy
Port 3120
Listen 0.0.0.0
BindSame yes
Timeout 600
DefaultErrorFile "/usr/share/tinyproxy/default.html"
StatFile "/usr/share/tinyproxy/stats.html"
LogFile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
PidFile "/var/run/tinyproxy/tinyproxy.pid"
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
ReverseOnly Yes
ReverseMagic Yes
EOF
cat > /usr/lib/systemd/system/tinyproxy.service <<EOF
[Unit]
Description=Startup script for the tinyproxy server
After=network.target
[Service]
Type=forking
PIDFile=/var/run/tinyproxy/tinyproxy.pid
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPost=/bin/sleep 0.1
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl restart tinyproxy
systemctl status tinyproxy
for i in "${!ip_list[@]}";   
do  
echo 测试地址:${ip_list[$i]}
curl -s -x ${ip_list[$i]}:3120 ip.sb
done
}
###部署goproxy函数
function install_goproxy {
eval echo  "请输入网卡名!" && read net_name
##3.安装goproxy
# 0.安装必须要的依赖
yum install wget -y || apt install wget -y
function install_proxy {
# 1.安装 proxy
# 说明: https://github.com/snail007/goproxy/blob/master/README_ZH.md
# 引用: https://mirrors.host900.com/https://github.com/snail007/goproxy/blob/master/install_auto.sh
F="proxy-linux-amd64.tar.gz"
set -e
if [ -e /tmp/proxy ]; then
    rm -rf /tmp/proxy
fi
mkdir /tmp/proxy
cd /tmp/proxy
echo -e "\n>>> downloading ... $F\n"
manual="https://snail.gitee.io/proxy/manual/"
LAST_VERSION=$(curl --silent "https://mirrors.host900.com/https://api.github.com/repos/snail007/goproxy/releases/latest" | grep -Po '"tag_name":"\K.*?(?=")')
wget  -t 1 "https://mirrors.host900.com/https://github.com/snail007/goproxy/releases/download/${LAST_VERSION}/$F"
echo -e ">>> installing ... \n"
# #install proxy
tar zxvf $F >/dev/null
set +e
killall -9 proxy >/dev/null 2>&1
set -e
cp -f proxy /usr/bin/
chmod +x /usr/bin/proxy
if [ ! -e /etc/proxy ]; then
    mkdir /etc/proxy
    cp blocked /etc/proxy
    cp direct  /etc/proxy
fi
if [ ! -e /etc/proxy/proxy.crt ]; then
    cd /etc/proxy/
    proxy keygen -C proxy >/dev/null 2>&1
fi
rm -rf /tmp/proxy
version=`proxy --version 2>&1`
echo  -e ">>> install done, thanks for using snail007/goproxy $version\n"
echo  -e ">>> install path /usr/bin/proxy\n"
echo  -e ">>> configuration path /etc/proxy\n"
echo  -e ">>> uninstall just exec : rm /usr/bin/proxy && rm -rf /etc/proxy\n"
echo  -e ">>> How to using? Please visit : $manual\n"
}
function add_service {
# 2.添加为服务
cat > /etc/systemd/system/jasper-proxy-${net_name}.service <<EOF
[Unit]
Description=Provide Socket Proxy For 'JasPer'
Wants=network.target
After=network.target
[Service]
User=root
PermissionsStartOnly=true
Environment='EXT_IP=`curl --interface ${net_name} -s ifconfig.co`'
Environment="LISTEN_ON=`ip a s ${net_name} | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`:3128"
# socket5 mode
# ExecStart=/usr/bin/proxy socks -g \$EXT_IP -t tcp -p \$LISTEN_ON
# http mode
ExecStart=/usr/bin/proxy http -g \$EXT_IP -p \$LISTEN_ON
Restart=always
RestartSec=15s
TimeoutStartSec=30s
[Install]
WantedBy=multi-user.target
EOF
# 3.开机启动
systemctl daemon-reload
systemctl enable jasper-proxy-${net_name}.service
systemctl start jasper-proxy-${net_name}.service
systemctl status jasper-proxy-${net_name}.service
}
#net_name=$1
#if [ ! -n  "$net_name"  ];then
    #echo -e "缺少\$1参数,无网络设备名称 "
    #sleep 1
    #exit
#fi
proxy --version
if [ $? != 0 ];then
    install_proxy
    add_service
else  
    add_service
fi
}
###检测代理函数
function check_proxy {
echo "#########`date`##########" >> ./check.log
eval echo  "请输入检查代理的ip列表,用逗号隔开 例:10.0.80.136,10.0.80.137,10.0.80.138 " && read ip
echo  "请输入代理端口 例:3120 " && read port
echo ${ip}
#ip_list=(10.0.80.136 10.0.80.137 10.0.80.138 10.0.80.139)
ip_list=(`echo $ip | tr ',' ' '` )
for i in "${!ip_list[@]}";   
do  
eip=`curl -s -x ${ip_list[$i]}:${port} ip.sb`
echo 检测: "${ip_list[$i]}"
echo ${eip}
echo ${ip_list[$i]} ${eip} >> ./check.log
done
echo "检测日志写入./check.log中" 
}
# ----------主程序----------
echo "阿里云实例首次运行请先执行:选项1、2、3"
sleep 1.5
while 1>0
do
cat <<eof
  1.配置基础网络信息
  2.查看基础网络信息
  3.阿里云多网卡配置(根据选项1中信息开始配置)
  ------------------------
  ------------------------
  4.部署tinyproxy(多ip代理)
  5.部署goproxy(单IP代理)
  6.检测代理
  7.退出脚本
eof
eval echo  "请输入数字选项!" && read var
case "$var" in
"1")
  init
  wait 
  sleep 2
  clear
  ;;
"2")
  echo_init
  wait 
  sleep 4
  clear
  ;;
"3")
  set_network
  sleep 2
  clear
  ;;
"4")
  install_tinyproxy
  sleep 2
  clear
  ;;
"5")
  install_goproxy
  sleep 2
  clear
  ;;
"6")
  check_proxy
  sleep 4
  ;;
"7")
  exit
  ;;
*)  
  echo "请输入数字选项,输入有误!"
  sleep 2
  clear 
esac
done  
目录
相关文章
|
5天前
|
安全 网络协议 网络安全
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
HTTP和HTTPS是互联网主要的两大协议,HTTP是基础的简单请求-响应协议,常用于TCP上,但数据传输不安全。HTTPS是HTTP的安全版本,添加了SSL层进行加密和身份验证,提供更高的安全性,用于保护数据和验证网站真实性。HTTPS需CA证书,可能产生费用,并使用443端口而非HTTP的80端口。
|
5天前
|
网络协议 安全 数据安全/隐私保护
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
SOCKS5和HTTP是两种代理协议,前者是通用型,支持多种网络流量,提供身份验证、IPv6支持及UDP兼容性,更适合实时数据传输。HTTP代理专用于HTTP协议,适用于Web资源请求。SOCKS5在传输方式、功能、兼容性和安全性上更胜一筹,而HTTP代理则在处理HTTP请求时更专业。选择代理协议应根据需求和应用场景,考虑服务的稳定性和安全性。付费代理如kookeey全球代理,支持双协议,速度快且可扩展性强,是可靠的选择。
|
5天前
|
网络协议 算法 Java
Java中如何通过代理实现对HTTP2网站的访问?
Java中如何通过代理实现对HTTP2网站的访问?
|
5天前
|
Java 关系型数据库 MySQL
保姆级教程——将springboot项目部署到阿里云服务器包含环境配置(小白包会)
本文档详细介绍了将SpringBoot项目部署到阿里云服务器的步骤。首先,通过Xshell连接服务器,使用公网IP地址。接着,下载JDK的Linux版本,使用XFTP上传并解压,配置环境变量。然后,安装MySQL 5.7,包括下载YUM源、安装、启动服务以及修改root密码和开启远程访问。最后,将SpringBoot项目打包成jar,上传至服务器,使用`java -jar`命令运行,通过`nohup`确保服务持续运行。配置安全组以允许远程访问。
|
5天前
|
API
http代理ip请求并发数是什么?有什么用?
HTTP代理IP请求并发数指单个客户端对API或代理IP同时发起的请求数量,分为API链接请求并发和IP最大连接数。并发是瞬时同时请求,不同提供商限制不同。高并发请求的代理IP服务商能更好地应对程序压力。选择时应考虑这一因素。
|
5天前
|
弹性计算 运维 数据安全/隐私保护
【雾锁王国开服】阿里云一键部署雾锁王国联机服务器详细教程
阿里云提供雾锁王国服务器搭建教程,借助计算巢服务,用户可在3分钟内创建Enshrouded游戏服务器。8核32G服务器1个月109元,3个月327元;4核16G10M带宽1个月30元,3个月90元。需先注册并实名认证阿里云账号,然后通过傻瓜式一键部署入口进行购买和设置,包括地域、购买时长、服务器参数等。部署完成后,分享服务器信息给游戏伙伴,即可开始游戏。详细教程和更多配置信息可在阿里云ECS产品页查看。
39 0
|
5天前
|
监控 安全 应用服务中间件
HTTPS代理搭建技巧分享​
请注意,HTTPS代理的配置和管理需要谨慎,特别是涉及SSL证书的处理。确保您的代理服务器按照最佳实践进行配置和管理,以提供安全可靠的代理服务。
58 3
|
5天前
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
27 1
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
|
5天前
使用阿里云语音通知http批量推送模式获取用户回执短信内容
本文使用阿里云语音通知配置http批量推送模式获取用户回执信息,并进行测试
41 0
|
5天前
|
机器学习/深度学习 人工智能 供应链
【专栏】阿里云RPA的Rap程序是自动化流程脚本,基于AI和机器学习,实现业务流程自动化
【4月更文挑战第29天】阿里云RPA的Rap程序是自动化流程脚本,基于AI和机器学习,实现业务流程自动化。具有灵活性、易用性、高效稳定和智能学习等特点。广泛应用于财务、人力资源、客服和供应链等领域,未来将与AI深度融合,跨平台应用,行业定制化,并构建完善生态,助力企业效率提升和创新。

热门文章

最新文章