Files
wish-pool/test-mobile-blocking.md

85 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📱 手机IPv6阻挡功能测试指南
## 🔍 问题描述
- 手机访问时显示 `127.0.0.1` 和"拒絕"状态
- 但实际上没有被真正阻挡,仍然可以访问网页
- 需要正确检测IPv6地址并实现真正的阻挡
## 📊 你的手机HTTP头部信息
```
cf-connecting-ip: 2001:b400:e70a:cf29:4f91:d294:1e4f:df44 ← 真实IPv6地址
x-real-ip: 162.158.167.181 ← IPv4代理地址
```
## ✅ 已修复的问题
1. **中间件IP检测逻辑** - 现在使用与API相同的逻辑
2. **IPv6支持** - 优先使用 `cf-connecting-ip` 头部
3. **真正阻挡** - 不在白名单的IP会看到403错误页面
4. **调试日志** - 添加详细的中间件日志
## 🎯 预期结果
### 情况1: IPv6地址在白名单中
- ✅ 中间件检测到: `2001:b400:e70a:cf29:4f91:d294:1e4f:df44`
- ✅ 允许访问所有网页
- ✅ 显示"允許"状态
### 情况2: IPv6地址不在白名单中
- ✅ 中间件检测到: `2001:b400:e70a:cf29:4f91:d294:1e4f:df44`
- ❌ 显示403 Forbidden错误页面
- ❌ 无法访问任何网页内容
## 🔧 白名单配置
`.env.local` 文件中添加你的IPv6地址
```
ENABLE_IP_WHITELIST=true
ALLOWED_IPS="114.33.18.13,2001:b400:e70a:cf29:4f91:d294:1e4f:df44,125.229.65.83,60.248.164.91,220.132.236.89,211.72.69.222,219.87.170.253,125.228.50.228,218.161.107.138"
```
## 🚀 测试步骤
### 测试1: 正常访问IPv6在白名单中
1. 确保IPv6地址在 `ALLOWED_IPS`
2. 重启应用
3. 用手机访问网站
4. 应该能正常访问,显示"允許"状态
### 测试2: 阻挡功能IPv6不在白名单中
1. 临时从 `ALLOWED_IPS` 中移除IPv6地址
2. 重启应用
3. 用手机访问网站
4. 应该看到403 Forbidden错误页面
5. **重要**: 测试完成后立即将IPv6地址加回白名单
## 📝 调试方法
### 检查服务器日志
重启应用后,查看服务器控制台日志:
```
[Middleware] 使用 cf-connecting-ip: 2001:b400:e70a:cf29:4f91:d294:1e4f:df44 (IPv6)
[Middleware] 最終IP檢測: 2001:b400:e70a:cf29:4f91:d294:1e4f:df44, 路徑: /
[Middleware] 白名單狀態: true
[Middleware] 允許的IP: 114.33.18.13,2001:b400:e70a:cf29:4f91:d294:1e4f:df44,...
```
### 访问调试页面
- `/test/ip-debug` - 查看详细IP信息
- `/test/ip-diagnostic` - 查看完整诊断
- `/test/ip-blocking` - 测试阻挡功能
## ⚠️ 重要提醒
1. **测试安全**: 测试阻挡功能时,确保有其他方式访问服务器
2. **配置备份**: 测试前备份 `.env.local` 文件
3. **及时恢复**: 测试完成后立即将IPv6地址加回白名单
4. **重启应用**: 每次修改配置后都要重启应用
## 🎉 修复完成
现在你的网站应该能够:
- ✅ 正确检测手机的IPv6地址
- ✅ 真正阻挡不在白名单中的IP
- ✅ 显示403 Forbidden错误页面而不是"拒絕"状态
- ✅ 完全阻止未授权访问