一.新建restart_pppoe.sh文件
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
CONF="/usr/local/shadowsocks-go/shadowsocks-go.conf"
LOG="my-monitor.log"
COUNTNUM=0
FLAG=false
#读取配置文件
Read_config(){
[[ ! -e ${CONF} ]] && echo -e "${Error} Shadowsocks 配置文件不存在 !" && exit 1
port=$(cat ${CONF}|grep 'PORT = '|awk -F 'PORT = ' '{print $NF}')
password=$(cat ${CONF}|grep 'PASSWORD = '|awk -F 'PASSWORD = ' '{print $NF}')
cipher=$(cat ${CONF}|grep 'CIPHER = '|awk -F 'CIPHER = ' '{print $NF}')
verbose=$(cat ${CONF}|grep 'VERBOSE = '|awk -F 'VERBOSE = ' '{print $NF}')
}
# 处理重新拨号逻辑
reconnect_ppoe(){
echo -e "`date +'%Y-%m-%d %H:%M:%S'`: COUNTNUM="${COUNTNUM} >> $LOG
echo -e "`date +'%Y-%m-%d %H:%M:%S'`: `curl myip.ipip.net`" >> $LOG
#读取配置文件
Read_config
#获取当前连接IP
user_IP=$(ss state connected sport = :${port} -tn|sed '1d'|awk '{print $NF}'|awk -F ':' '{print $(NF-1)}'|sort -u)
#所有客户端断开时,重新拨号
msg=""
if [[ -z ${user_IP} ]]; then
msg="`date +'%Y-%m-%d %H:%M:%S'`: 当前暂时没有链接的客户端IP"
#避免拨号太频繁有可能会造客户端链接不上服务端,加入休眠时间60s
if [[ "${FLAG}" = true ]]; then
FLAG=false
#重新PPPOE拨号
/sbin/pppoe-stop
/sbin/pppoe-start
echo -e "`date +'%Y-%m-%d %H:%M:%S'`: 重新拨号完成–`curl myip.ipip.net`" >> $LOG
#更新ArDNSPod动态DDNS
/usr/local/ArDNSPod-master/ddnspod.sh
#更新CloudXNS
/usr/local/cloudxns/cloudxns_ddns.sh
fi
else
FLAG=true
user_IP=$(echo -e "\n${user_IP}")
msg="`date +'%Y-%m-%d %H:%M:%S'`: 当前链接IP: "${user_IP}"\n"
fi
#写日志到文件
echo -e ${msg} >> $LOG
#清理日志内容
if [[ ${COUNTNUM} -ge 60 ]]; then
echo "" > my-monitor.log
COUNTNUM=0
fi
#清空user_IP变量
user_IP=""
}
#调用函数,设置为后台服务运行
#1.后台服务运行
# nohup /root/.script/restart_pppoe.sh 2>&1 > /dev/null &
#2.确认每秒执行
# tail -f /root/.script/my-monitor.log
#3. 停止脚本运行进程
# kill -s 9 `ps -aux | grep restart_pppoe.sh | awk '{print $2}'`
#查询出口IP
# curl ipinfo.io 或 curl myip.ipip.net
while [ true ]; do
let COUNTNUM++
/bin/sleep 1
reconnect_ppoe
done
二.新建start_server.sh文件
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
kill -s 9 `ps -aux | grep restart_pppoe.sh | awk '{print $2}'`
nohup /root/.script/restart_pppoe.sh 2>&1 > /dev/null &
三.为start_server.sh文件授权执行权限
chmod +x /root/.script/start_server.sh
四.安装ArDNSPode
官网: https://github.com/anrip/ArDNSPod
1.下载文件
2.上传解压
3.修改配置 dns.conf文件
mv dns.conf.example dns.conf
vim dns.conf
#修改内容如下所示