新增白名單
This commit is contained in:
@@ -18,6 +18,9 @@
|
|||||||
- 219.87.170.253
|
- 219.87.170.253
|
||||||
- 125.228.50.228
|
- 125.228.50.228
|
||||||
|
|
||||||
|
### 新增IP
|
||||||
|
- 218.161.107.138
|
||||||
|
|
||||||
## 完整IP清單(一行一個)
|
## 完整IP清單(一行一個)
|
||||||
114.33.18.13
|
114.33.18.13
|
||||||
125.229.65.83
|
125.229.65.83
|
||||||
@@ -26,6 +29,7 @@
|
|||||||
211.72.69.222
|
211.72.69.222
|
||||||
219.87.170.253
|
219.87.170.253
|
||||||
125.228.50.228
|
125.228.50.228
|
||||||
|
218.161.107.138
|
||||||
|
|
||||||
## 防火牆規則格式
|
## 防火牆規則格式
|
||||||
|
|
||||||
@@ -39,7 +43,8 @@ $allowedIPs = @(
|
|||||||
"220.132.236.89",
|
"220.132.236.89",
|
||||||
"211.72.69.222",
|
"211.72.69.222",
|
||||||
"219.87.170.253",
|
"219.87.170.253",
|
||||||
"125.228.50.228"
|
"125.228.50.228",
|
||||||
|
"218.161.107.138"
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach ($ip in $allowedIPs) {
|
foreach ($ip in $allowedIPs) {
|
||||||
@@ -57,6 +62,7 @@ iptables -A INPUT -s 220.132.236.89 -j ACCEPT
|
|||||||
iptables -A INPUT -s 211.72.69.222 -j ACCEPT
|
iptables -A INPUT -s 211.72.69.222 -j ACCEPT
|
||||||
iptables -A INPUT -s 219.87.170.253 -j ACCEPT
|
iptables -A INPUT -s 219.87.170.253 -j ACCEPT
|
||||||
iptables -A INPUT -s 125.228.50.228 -j ACCEPT
|
iptables -A INPUT -s 125.228.50.228 -j ACCEPT
|
||||||
|
iptables -A INPUT -s 218.161.107.138 -j ACCEPT
|
||||||
```
|
```
|
||||||
|
|
||||||
## 配置文件格式
|
## 配置文件格式
|
||||||
@@ -73,6 +79,7 @@ geo $allowed_ip {
|
|||||||
211.72.69.222 1;
|
211.72.69.222 1;
|
||||||
219.87.170.253 1;
|
219.87.170.253 1;
|
||||||
125.228.50.228 1;
|
125.228.50.228 1;
|
||||||
|
218.161.107.138 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# 在 server 區塊中使用
|
# 在 server 區塊中使用
|
||||||
@@ -93,6 +100,7 @@ Allow from 220.132.236.89
|
|||||||
Allow from 211.72.69.222
|
Allow from 211.72.69.222
|
||||||
Allow from 219.87.170.253
|
Allow from 219.87.170.253
|
||||||
Allow from 125.228.50.228
|
Allow from 125.228.50.228
|
||||||
|
Allow from 218.161.107.138
|
||||||
```
|
```
|
||||||
|
|
||||||
## 程式碼格式
|
## 程式碼格式
|
||||||
@@ -106,7 +114,8 @@ ALLOWED_IPS = [
|
|||||||
"220.132.236.89", # 新竹
|
"220.132.236.89", # 新竹
|
||||||
"211.72.69.222", # 新竹
|
"211.72.69.222", # 新竹
|
||||||
"219.87.170.253", # 璟茂
|
"219.87.170.253", # 璟茂
|
||||||
"125.228.50.228" # 璟茂
|
"125.228.50.228", # 璟茂
|
||||||
|
"218.161.107.138" # 新增IP
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -119,10 +128,22 @@ const allowedIPs = [
|
|||||||
"220.132.236.89", // 新竹
|
"220.132.236.89", // 新竹
|
||||||
"211.72.69.222", // 新竹
|
"211.72.69.222", // 新竹
|
||||||
"219.87.170.253", // 璟茂
|
"219.87.170.253", // 璟茂
|
||||||
"125.228.50.228" // 璟茂
|
"125.228.50.228", // 璟茂
|
||||||
|
"218.161.107.138" // 新增IP
|
||||||
];
|
];
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 環境變數配置
|
||||||
|
|
||||||
|
### .env.local 配置
|
||||||
|
```env
|
||||||
|
# 啟用IP白名單
|
||||||
|
ENABLE_IP_WHITELIST=true
|
||||||
|
|
||||||
|
# 允許的IP地址(包含新增的IP)
|
||||||
|
ALLOWED_IPS=114.33.18.13,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. **定期更新**:建議定期檢查和更新IP地址清單
|
1. **定期更新**:建議定期檢查和更新IP地址清單
|
||||||
|
@@ -43,14 +43,14 @@ SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here
|
|||||||
# - 多個IP: 192.168.1.100,10.0.0.50,172.16.0.0/16
|
# - 多個IP: 192.168.1.100,10.0.0.50,172.16.0.0/16
|
||||||
# 留空表示允許所有IP訪問
|
# 留空表示允許所有IP訪問
|
||||||
|
|
||||||
# 範例:使用 allowed_ips.txt 中的IP地址
|
# 範例:使用 allowed_ips.txt 中的IP地址(包含新增的IP)
|
||||||
# ALLOWED_IPS=114.33.18.13,125.229.65.83,60.248.164.91,220.132.236.89,211.72.69.222,219.87.170.253,125.228.50.228
|
# ALLOWED_IPS=114.33.18.13,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
|
||||||
|
|
||||||
# 範例:本地開發(允許本地網路)
|
# 範例:本地開發(允許本地網路)
|
||||||
# ALLOWED_IPS=127.0.0.1,192.168.1.0/24,10.0.0.0/8
|
# ALLOWED_IPS=127.0.0.1,192.168.1.0/24
|
||||||
|
|
||||||
# 範例:生產環境(只允許特定IP)
|
# 範例:生產環境(只允許特定IP)
|
||||||
ALLOWED_IPS=114.33.18.13,125.229.65.83,60.248.164.91,220.132.236.89,211.72.69.222,219.87.170.253,125.228.50.228
|
ALLOWED_IPS=114.33.18.13,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
|
||||||
|
|
||||||
# 是否啟用IP白名單檢查
|
# 是否啟用IP白名單檢查
|
||||||
# true: 啟用IP檢查,不在白名單內的IP將被拒絕
|
# true: 啟用IP檢查,不在白名單內的IP將被拒絕
|
||||||
@@ -71,6 +71,7 @@ ENABLE_IP_WHITELIST=true
|
|||||||
# 3. 可以使用 /test/ip-debug 頁面測試IP檢測功能
|
# 3. 可以使用 /test/ip-debug 頁面測試IP檢測功能
|
||||||
# 4. IP檢測會自動處理代理伺服器轉發的真實IP
|
# 4. IP檢測會自動處理代理伺服器轉發的真實IP
|
||||||
# 5. 支援 IPv4 和 CIDR 格式的IP範圍
|
# 5. 支援 IPv4 和 CIDR 格式的IP範圍
|
||||||
|
# 6. 新增的IP: 218.161.107.138 已包含在白名單中
|
||||||
|
|
||||||
# ================================
|
# ================================
|
||||||
# 注意事項
|
# 注意事項
|
||||||
|
102
scripts/update-ip-whitelist.js
Normal file
102
scripts/update-ip-whitelist.js
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
/**
|
||||||
|
* IP 白名單更新腳本
|
||||||
|
* 用於快速更新環境變數中的IP白名單
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
// 新的IP地址
|
||||||
|
const NEW_IP = '218.161.107.138';
|
||||||
|
|
||||||
|
// 現有的IP列表
|
||||||
|
const EXISTING_IPS = [
|
||||||
|
'114.33.18.13',
|
||||||
|
'125.229.65.83',
|
||||||
|
'60.248.164.91',
|
||||||
|
'220.132.236.89',
|
||||||
|
'211.72.69.222',
|
||||||
|
'219.87.170.253',
|
||||||
|
'125.228.50.228'
|
||||||
|
];
|
||||||
|
|
||||||
|
// 更新後的完整IP列表
|
||||||
|
const UPDATED_IPS = [...EXISTING_IPS, NEW_IP];
|
||||||
|
|
||||||
|
function updateEnvFile() {
|
||||||
|
const envPath = path.join(__dirname, '..', '.env.local');
|
||||||
|
|
||||||
|
try {
|
||||||
|
let envContent = '';
|
||||||
|
|
||||||
|
// 如果 .env.local 存在,讀取內容
|
||||||
|
if (fs.existsSync(envPath)) {
|
||||||
|
envContent = fs.readFileSync(envPath, 'utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新或添加 ALLOWED_IPS
|
||||||
|
const allowedIpsLine = `ALLOWED_IPS=${UPDATED_IPS.join(',')}`;
|
||||||
|
|
||||||
|
if (envContent.includes('ALLOWED_IPS=')) {
|
||||||
|
// 替換現有的 ALLOWED_IPS 行
|
||||||
|
envContent = envContent.replace(
|
||||||
|
/ALLOWED_IPS=.*/g,
|
||||||
|
allowedIpsLine
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// 添加新的 ALLOWED_IPS 行
|
||||||
|
envContent += `\n# IP 白名單配置\n${allowedIpsLine}\n`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 確保 ENABLE_IP_WHITELIST 設置為 true
|
||||||
|
if (!envContent.includes('ENABLE_IP_WHITELIST=')) {
|
||||||
|
envContent += 'ENABLE_IP_WHITELIST=true\n';
|
||||||
|
} else {
|
||||||
|
envContent = envContent.replace(
|
||||||
|
/ENABLE_IP_WHITELIST=.*/g,
|
||||||
|
'ENABLE_IP_WHITELIST=true'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 寫入文件
|
||||||
|
fs.writeFileSync(envPath, envContent);
|
||||||
|
|
||||||
|
console.log('✅ 成功更新 .env.local 文件');
|
||||||
|
console.log(`📝 新增的IP: ${NEW_IP}`);
|
||||||
|
console.log(`📋 完整的IP列表: ${UPDATED_IPS.join(', ')}`);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('❌ 更新 .env.local 文件時發生錯誤:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showInstructions() {
|
||||||
|
console.log('\n📋 手動配置說明:');
|
||||||
|
console.log('如果自動更新失敗,請手動在 .env.local 文件中設置:');
|
||||||
|
console.log('\n```env');
|
||||||
|
console.log('ENABLE_IP_WHITELIST=true');
|
||||||
|
console.log(`ALLOWED_IPS=${UPDATED_IPS.join(',')}`);
|
||||||
|
console.log('```');
|
||||||
|
console.log('\n🔄 更新後請重新啟動開發服務器:');
|
||||||
|
console.log('npm run dev');
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
console.log('🚀 IP 白名單更新工具');
|
||||||
|
console.log('=' * 40);
|
||||||
|
|
||||||
|
updateEnvFile();
|
||||||
|
showInstructions();
|
||||||
|
|
||||||
|
console.log('\n✅ 更新完成!你的IP 218.161.107.138 現在應該可以正常訪問了。');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
main();
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
updateEnvFile,
|
||||||
|
UPDATED_IPS,
|
||||||
|
NEW_IP
|
||||||
|
};
|
Reference in New Issue
Block a user