当前位置:首页 > 环境配置 > 系统 > 正文内容

ubuntu24 批量设置IPV6地址并使用gost代理,根据访问地址选择网络出口IP

大地主刘发财2个月前 (05-31)系统1070

需求描述:

服务器有一段/64的IPV6,使用gost作为代理,根据客户端的访问地址来选择出口IP

需要每天定时更换新的地址,每天5000条

例如: 前缀 1:1:1:1::/64

gost代理后,当客户端通过 1:1:1:1::aa 来连接代理时,用户所访问的地址都是通过这个地址连接的


解决方案:

sh脚本生成IP地址,每次生成5000个,先清除本机已经存在的地址后将新的地址配置生效

同时修改gost配置文件并自动重启gost服务

注意: 如果服务器有IPV4,并且目标网站仅支持IPV4,那么此时会自动使用V4地址


注意事项:

  *** 如果你的服务器只有IPV6 千万不要使用这个脚本!!!!!!

  *** 如果你的服务器只有IPV6 千万不要使用这个脚本!!!!!!

  *** 如果你的服务器只有IPV6 千万不要使用这个脚本!!!!!!

       如果执行出错可能会导致无法连接服务器!!!!!

步骤:

一. 设置gost服务

gost主程序/配置文件/证书等放入固定目录 /home/proxy/

证书名称为 cert.pem 和 key.pem

vi /etc/systemd/system/gost.service
# 内容写入
[Unit]
Description=Gost
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/proxy/gost
Restart=always
[Install]
WantedBy=multi-user.target

# 保存后使服务生效
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now gost.service


二.IP生成脚本



# 创建并打开update_ipv6.sh
vi /home/proxy/update_ipv6.sh
# 将以下内容写入文件
# 其中1:1:1:1换成自己的地址前缀,eth0根据实际情况修改
# ADDR_COUNT是生效生成的数量
# PORT是gost监听的端口

#!/bin/bash
# 配置参数
IFACE="eth0"
PREFIX="1:1:1:1"
ADDR_COUNT=5000
STATE_FILE="/home/proxy/ipv6_state.txt"
GOST_CONFIG="/home/proxy/gost.yaml"
PORT=5500
# 获取上次使用的地址编号
if [ -f "$STATE_FILE" ]; then
    LAST_NUM=$(cat "$STATE_FILE")
else
    LAST_NUM=0
fi
# 清除旧的 IPv6 地址(不包括 link-local)
echo "清除旧地址..."
ip -6 addr show dev $IFACE | grep -oP "$PREFIX::\K[0-9a-f:]+" | while read ip; do
    ip_full="${PREFIX}::${ip}"
    ip -6 addr del "${ip_full}/64" dev $IFACE
done
# 添加新地址并生成 GOST 配置项
echo "添加新地址..."
START_NUM=$((LAST_NUM + 1))
END_NUM=$((LAST_NUM + ADDR_COUNT))
echo "生成 $START_NUM 到 $END_NUM"
> "$GOST_CONFIG"
echo "services:" >> "$GOST_CONFIG"
for ((i=START_NUM; i<=END_NUM; i++)); do
    HEX=$(printf "%x" $i)
    IP="${PREFIX}::${HEX}"
    ip -6 addr add "${IP}/64" dev $IFACE
    cat <<EOF >> "$GOST_CONFIG"
  - name: proxy_$i
    addr: "[${IP}]:${PORT}"
    protocol: http
    tls:
      cert_file: "cert.pem"
      key_file: "key.pem"
    metadata:
      interface: ${IP}
EOF
done
# 保存新状态
echo "$END_NUM" > "$STATE_FILE"
# 重启 gost 服务
echo "重启 gost..."
systemctl restart gost
echo "完成"

脚本保存成功后设置执行权限,再添加一个cron


chmod +x /home/proxy/update_ipv6.sh
crontab -e
0 2 * * * /home/proxy/update_ipv6.sh >> /home/proxy/ipv6_update.log 2>&1

# 保存后重启cron服务
service cron restart



分享给朋友:

“ubuntu24 批量设置IPV6地址并使用gost代理,根据访问地址选择网络出口IP” 的相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。