最近用上了可以自动更换IP的服务器,但后来发现总不能每次联不通我都自己手动去换ip吧,而且Hinet网络的连通状况真的很糟糕,所以还需要添加一个国内的中转服务器来优化线路,并且可以实现自动更换IP
预备:安装路由测试包Nexttrace
curl nxtrace.org/nt |sudo bash
安装GHOST
wget https://github.com/ginuerzh/gost/releases/download/v2.12.0/gost_2.12.0_linux_amd64v3.tar.gz
tar -xzf gost_2.12.0_linux_amd64v3.tar.gz
sudo chmod +x gost
sudo mv gost /usr/local/bin/gost
Ghost 隧道搭建
转发的逻辑是
(中转服务器:连接端口)-> (代理服务器:中转端口,推荐443)->(代理服务器:代理端口)
#中转服务器(国内)
sudo gost -L tcp://:连接端口 -F forward+mtls://代理服务器域名:443
#代理服务器(国外)
sudo gost -L=mtls://:443/127.0.0.1:代理端口
如果想关闭ssh后还持续运行,可以开个screen后运行上述指令
顺带:Crontab定时任务
在中转服务器上监控IP,如果无法连通则使用API指令自动更换IP(这里我用的是PQS的)
crontab -e
# 在最后一行加入下面的,注意修改你的路径
*/30 * * * * /path_to/pqsapi.sh
然后需要提前安装nscd噢
sudo apt install nscd
sudo systemctl status nscd
最后是pqsapi.sh
自动换IP脚本,这里的地址,端口(推荐443),api都改成你自己的
#!/bin/bash
ADDR="你的域名"
TMPSTR=$(ping -c 1 ${ADDR} | sed '1{s/[^(]*(//;s/).*//;q}')
port=443
check_ip=$(nmap $TMPSTR -p $port | grep open | wc -l)
echo "Ping result for ${ADDR}: ${TMPSTR}"
echo "Final IP Address: ${TMPSTR}"
if [ $check_ip -eq 0 ]; then
echo "Port ${port} is closed. Initiating update..."
curl "自动更换IP的api网址"
systemctl restart nscd
echo "Update completed."
fi
哈哈哈,写的太好了https://www.lawjida.com/