找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 340|回复: 2

[烽火] HG5582A单条放行内网ddns的ipv6,防火墙比一些家用路由器好用

[复制链接]
发表于 2026-6-25 16:23 | 显示全部楼层 |阅读模式
本帖最后由 gknn 于 2026-6-25 16:24 编辑

HG5582A拨号作为主路由,但是默认ipv6防火墙是一刀切的入站拒绝,如果需要放行内网单个ipv6


我们可以让猫使用域名解析获得所需放行的ipv6地址


触发方式为每次猫开机后,登录telnet敲命令放行




效果比很多家用硬路由的防火墙效果还好


以下脚本需要在telnet后,su提权后linux内核模式运行
友情链接:
hg5582a开启telent方法:hg5582a/hg5382a固化telnet关闭插件等-光猫/adsl/cable无线一体机-恩山无线论坛 - Powered by Discuz!




  1. cat > /usr/local/ct/fw_watchdog.sh << 'EOF'
  2. #!/bin/sh
  3. DOMAIN="<font color="#ff0000">w12345.top</font>"   <b><font color="#ff0000">
  4. CHECK_INTERVAL=30
  5. LOG_FILE="/tmp/fw_watchdog.log"
  6. echo "$(date): Watchdog started" >> $LOG_FILE

  7. while true; do
  8.     CURRENT_IP=$(nslookup $DOMAIN | grep "Address:" | tail -1 | awk '{print $2}')
  9.     if [ -n "$CURRENT_IP" ] && echo "$CURRENT_IP" | grep -q ":"; then
  10.         OLD_IP_FILE="/tmp/domain_ip.txt"
  11.         if [ -f "$OLD_IP_FILE" ]; then
  12.             OLD_IP=$(cat "$OLD_IP_FILE")
  13.         else
  14.             OLD_IP=""
  15.         fi

  16.         # 检查规则是否存在
  17.         RULE_EXISTS=$(ip6tables -L FORWARD -n | grep -c "ALLOW_<span style="color: rgb(255, 0, 0);">w12345</span>_top")<b><font color="#ff0000">

  18.         if [ "$CURRENT_IP" != "$OLD_IP" ] || [ "$RULE_EXISTS" -eq 0 ]; then
  19.             # === 删除所有旧规则(按行号从后往前删) ===
  20.             # 获取所有带该注释的规则行号,按行号从大到小排序
  21.             LINE_NUMBERS=$(ip6tables -L FORWARD -n --line-numbers | grep "ALLOW_whz888_top" | awk '{print $1}' | sort -rn)
  22.             for LINE in $LINE_NUMBERS; do
  23.                 ip6tables -D FORWARD $LINE 2>/dev/null
  24.                 echo "$(date): Removed rule at line $LINE" >> $LOG_FILE
  25.             done

  26.             # 插入新规则
  27.             ip6tables -I FORWARD 1 -d $CURRENT_IP -m comment --comment "ALLOW_<span style="color: rgb(255, 0, 0);">w12345</span>_top" -j ACCEPT<b><font color="#ff0000">
  28.             echo "$CURRENT_IP" > "$OLD_IP_FILE"
  29.             echo "$(date): Updated -> $CURRENT_IP" >> $LOG_FILE
  30.             ip6tables-save > /usr/local/ct/ip6tables.rules
  31.         fi
  32.     fi
  33.     sleep $CHECK_INTERVAL
  34. done
  35. <font size="2" style="">EOF</font>
复制代码
以下是脚本注释,跟上一段是一样的,只是下面这段带详细注释
  1. cat > /usr/local/ct/fw_watchdog.sh << 'EOF'
  2. #!/bin/sh
  3. # ============================================================
  4. # 动态 IPv6 防火墙规则更新脚本
  5. # 功能:定时解析域名,自动更新 ip6tables FORWARD 放行规则
  6. # 适用:光猫/路由器环境(/usr/local/ct 可写,/etc 只读)
  7. # ============================================================

  8. DOMAIN="your-domain.top"            # 改成你的 DDNS 域名
  9. CHECK_INTERVAL=30                   # 检查间隔(秒)
  10. LOG_FILE="/tmp/fw_watchdog.log"     # 日志路径
  11. RULE_COMMENT="ALLOW_DYNAMIC_IPV6"   # 规则注释(用于识别和清理)

  12. echo "$(date): Watchdog started for $DOMAIN" >> $LOG_FILE

  13. while true; do
  14.     # 1. 解析域名获取当前 IPv6
  15.     CURRENT_IP=$(nslookup $DOMAIN | grep "Address:" | tail -1 | awk '{print $2}')

  16.     # 2. 校验是否为有效 IPv6
  17.     if [ -n "$CURRENT_IP" ] && echo "$CURRENT_IP" | grep -q ":"; then

  18.         # 3. 读取上次保存的 IP
  19.         OLD_IP_FILE="/tmp/domain_ip.txt"
  20.         if [ -f "$OLD_IP_FILE" ]; then
  21.             OLD_IP=$(cat "$OLD_IP_FILE")
  22.         else
  23.             OLD_IP=""
  24.         fi

  25.         # 4. 检查防火墙规则是否存在
  26.         RULE_EXISTS=$(ip6tables -L FORWARD -n | grep -c "$RULE_COMMENT")

  27.         # 5. 如果 IP 变化 或 规则丢失,则更新
  28.         if [ "$CURRENT_IP" != "$OLD_IP" ] || [ "$RULE_EXISTS" -eq 0 ]; then

  29.             # 删除所有旧规则(按行号从后往前删,避免索引偏移)
  30.             LINE_NUMBERS=$(ip6tables -L FORWARD -n --line-numbers | grep "$RULE_COMMENT" | awk '{print $1}' | sort -rn)
  31.             for LINE in $LINE_NUMBERS; do
  32.                 ip6tables -D FORWARD $LINE 2>/dev/null
  33.                 echo "$(date): Removed old rule at line $LINE" >> $LOG_FILE
  34.             done

  35.             # 插入新规则(第 1 条,最高优先级)
  36.             ip6tables -I FORWARD 1 -d $CURRENT_IP -m comment --comment "$RULE_COMMENT" -j ACCEPT

  37.             # 保存新 IP 和规则
  38.             echo "$CURRENT_IP" > "$OLD_IP_FILE"
  39.             echo "$(date): Updated -> $CURRENT_IP" >> $LOG_FILE
  40.             ip6tables-save > /usr/local/ct/ip6tables.rules
  41.         fi
  42.     fi

  43.     sleep $CHECK_INTERVAL
  44. done
  45. EOF
复制代码

用法就是,第一段,直接粘贴到su后的命令窗口,改好自己内网设备域名后全选直接粘,如果粘错字段修改后再次粘就行了,自动覆盖

用法就是,第一段,直接粘贴到su后的命令窗口,改好自己内网设备域名后全选直接粘,如果粘错字段修改后再次粘就行了,自动覆盖


用法就是,第一段,直接粘贴到su后的命令窗口,改好自己内网设备域名后全选直接粘,如果粘错字段修改后再次粘就行了,自动覆盖
1,su后直接粘命令窗口进去,把域名改成内网自己的,脚本直接存到猫的可写分区了






2,首次创建脚本后需要提权
  1. chmod +x /usr/local/ct/fw_watchdog.sh
复制代码

3,每次猫开机进su模式后手动敲这个,脚本就启动了,是的,手动挡,因为猫重启后必须保证不断连,所以手动启动脚本

  1. nohup /usr/local/ct/fw_watchdog.sh >> /tmp/fw_watchdog.log 2>&1 &
复制代码
  1. ps | grep fw_watchdog | grep -v grep
复制代码


6,停止脚本命令






  1. pkill -f fw_watchdog
复制代码



对了,在光猫里面看看域名与ip更新匹配了没有,使用nslookup

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2026-6-25 16:25 | 显示全部楼层
各位折腾进度卡主的时候问ai就行了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-8-21 23:30 | 显示全部楼层
我去试试,我也是HG5582A,默认设置很不好用
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 23:20

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表