{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# IP名单

## IP名单有效范围

GoEdge中有多个位置可以管理IP名单，分别有着不同的作用范围：

- `公共名单` - 可以设置为全局有效，这样所有只要开启了WAF的网站都会自动生效，可以在左侧 “网站列表”菜单 – “IP”名单中管理公共黑名单、公共白名单、公共灰名单
- `WAF策略`中的IP名单 - 可以在WAF策略中设置IP黑名单和白名单，设置后对策略本身的规则和使用此策略的开启了WAF的网站有效
- `WAF`设置中的名单 – 开启后只对网站网站有效，当然，前提仍然是当前网站开启了WAF设置

## IP名单类型

- `黑名单` - 其中的IP将会被禁止访问
- `白名单` - 其中的IP将会自动放行，优先级高于黑名单
- `灰名单` - 其中的IP仅作为记录和观察使用，不影响黑名单和白名单的作用（GoEdge v1.3.9中加入）

## IP类型

IP名单中的IP可以有以下几种类型：

- `单个IP` - 比如 `1.2.3.4`
- `IP段` - 比如 `1.2.3.4-2.3.4.5`
- `CIDR` - 比如 `1.2.3.4/24`
- `所有IP` - 这是一种特殊的IP类型，不需要填写任何具体的IP或IP段，代表所有的IP

## IP版本

完整支持IPv4和IPv6两种。

## 拦截IP触发动作

如果你想在系统拦截IP时触发一系列自定义动作，可以在对应的集群 – “集群设置” – “WAF动作”中添加对应的动作。

## 常见问题

### 为什么我设置的IP黑名单没有起作用？

1. 首先确认IP可以正常访问某个网站：在网站的访问日志中找到该IP的访问记录，确认这个IP确实能正常访问网站
2. 如果你是在”公共黑名单“中添加的IP，请先确保当前黑名单为“全局有效”（可以在名单详情中查看），否则只有绑定了具体网站的WAF策略才会生效
3. 在“网站列表” – “IP名单”中搜索该IP，确保该IP已经在黑名单中
4. 在“网站列表” – “IP名单”中搜索该IP，确保该IP没有在白名单中（单个IP或IP范围）
5. 在“网站列表” – “WAF策略“ – 点击集群对应策略 – “IP管理“ – “白名单”中确保该IP没有在白名单中（单个IP或IP范围）
6. 在该IP访问的网站中的 – 网站设置 – “WAF”设置中确认已经“启用Web防火墙“
7. 在网站设置 – “WAF”设置 – “白名单”中确保该IP没有在白名单中（单个IP或IP范围）
8. 登录节点服务器，查看节点日志（`/var/log/edge-node.log`），确保当前边缘节点和API节点连接没有异常
9. 登录节点服务器，查看节点日志（`/var/log/edge-node.log`），确保没有出现 `IP_LIST_DB` 相关错误，如果出现，请根据提示进行操作
10. 登录节点服务器，删除 `edge-node/data/ip_*` 相关文件，然后重启节点进程（`edge-node restart`），然后稍等片刻后，再观察访问日志，检查该IP是否仍能访问；如果这些文件不存在，可以单纯重启节点中 `edge-node` 进程进行测试；
11. 如果你在管理系统中批量导入了大量的IP，节点需要一定的时间同步数据，请等一段时间后再尝试加入黑名单

### 为什么我设置的IP白名单没有起作用？

1. 如果你是在”公共白名单“中添加的IP，请先确保当前白名单为“全局有效”（可以在名单详情中查看），否则只有绑定了具体网站的WAF策略才会生效
2. 在“网站列表” – “IP名单”中搜索该IP，确保该IP已经在白名单中
3. 登录节点服务器，查看节点日志（`/var/log/edge-node.log`），确保当前边缘节点和API节点连接没有异常
4. 登录节点服务器，查看节点日志（`/var/log/edge-node.log`），确保没有出现 `IP_LIST_DB` 相关错误，如果出现，请根据提示进行操作
5. 登录节点服务器，删除 `edge-node/data/ip_*` 相关文件，然后重启节点进程（`edge-node restart`），然后稍等片刻后，再观察访问日志，检查该IP是否可以访问；如果这些文件不存在，可以单纯重启节点中 `edge-node` 进程进行测试；
6. 如果你在管理系统中批量导入了大量的IP，节点需要一定的时间同步数据，请等一段时间后再尝试加入白名单
7. 如果IP已经在黑名单中，则添加白名单并不会删除黑名单中的相关记录

### 为什么我添加黑名单后，nftables规则中没有出现此IP？

在管理系统添加黑名单后，系统并不会立即将此IP加入到边缘节点的nftables，而是等待此IP访问边缘节点时才会 短暂地 （一般为1个小时）将IP加入到nftables中。一是避免nftables中规则数量过多，导致系统性能严重下降；二是避免单个网站的黑名单影响别的网站的访问。同时，边缘节点仍然会遵循IP的有效期，拦截当前IP在有效期间的所有访问，nftables只是提升拦截效率的辅助作用。

### 为什么我的边缘节点日志中会出现大量firewall-cmd相关提示？

如果你的边缘节点中没有安装nftables，那么就会默认使用 `firewalld` 拦截IP，如果IP数据量较大时，`firewall-cmd`命令可能出现操作超时的情况，此时请安装 nftables，然后重启`edge-node`进程（`edge-node restart`）。

### 我怎么将系统自动拦截的IP发送到我自己的接口上？

你可以在对应的集群 – “集群设置” – “WAF动作”中添加对应的动作，选择类型为“自定义HTTP API”或者“自定义脚本“。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}