> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IP 封禁系统

> 介绍如何使用通过 PlayFab API 和 Game Manager 公开的 IP 封禁系统。

IP 封禁功能允许你限制来自指定 IP 地址或范围的游戏访问。当应用 IP 封禁时,未来从该 IP 地址或在封禁范围内进行的身份验证尝试将被拒绝。IP 封禁可以是永久的,也可以是具有指定过期日期的临时封禁,并且可以应用于单个 IP 地址或以 CIDR 表示法表达的 IP 范围。IP 封禁的范围限定于某个游戏,不适用于你的[命名空间](/services/playfab/live-service-management/game-configuration/entities)中的任何其他游戏。

以下教程向你展示如何使用 PlayFab API 和 Game Manager 来使用 IP 封禁系统。

## 识别

你可以通过 PlayStream Monitor 识别要封禁的 IP 地址。如果你注意到可疑的登录活动,请找到 **Player logged in** 事件,然后选择 **JSON** 列中的花括号以查看其详细信息。从 **"IPV4Address"** 字段复制地址。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-suspicious-login-event.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=8cc7a5e0fd83557e26642cf5c762c03b" alt="Game Manager - IP 封禁 - 可疑登录事件" width="1370" height="673" data-path="images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-suspicious-login-event.png" />

<Note>
  如果你的游戏在**设置 > 数据收集**中禁用了"存储完整的用户 IP 地址",则 IP 地址的最后一个八位字节将被混淆。
</Note>

## 应用封禁

如果你认为有必要,可以创建 IP 封禁。有两种创建封禁的方式:通过 Game Manager 手动创建,或通过 [Services SDK](/services/playfab/sdks/playfab-sdk-intro) 以编程方式创建。

<Note>
  一个游戏最多可为 200 个 IP 地址或范围创建 IP 封禁。
</Note>

### 从 Game Manager 创建 IP 封禁

你的社区经理可能希望使用 Game Manager 应用封禁。

1. 导航至 IP 封禁部分。
2. 选择 **New IP Ban** 以显示 **New IP Ban** 表单。
3. 粘贴你希望封禁的 IP 地址,或键入你希望封禁的 CIDR 范围。
4. 选择 **Permanent** 进行永久封禁,或为你的封禁选择过期日期和时间。
5. (可选)键入封禁原因。
6. 最后,选择 **ADD BAN** 按钮。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-new-ip-ban.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=42567eb75f0d8ea839a865fc3bac832c" alt="Game Manager - IP 封禁 - 新建 IP 封禁" width="1372" height="685" data-path="images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-new-ip-ban.png" />

如果所有设置都正确,你将在表中看到一个状态为 **"Active"** 的新 IP 封禁。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-table.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=21604260c8ec2c76cc13ecc5ab558000" alt="Game Manager - IP 封禁 - 表" width="1376" height="701" data-path="images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-table.png" />

### 从 Game Manager 管理 IP 封禁

你可以通过选择 IP 封禁然后选择 **Disable selected bans** 来手动禁用它们。它们的状态将更改为 **"Disabled"**。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-disable.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=c7fbdc60e6a109011eff1684882b474c" alt="Game Manager - IP 封禁 - 禁用" width="1369" height="827" data-path="images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-disable.png" />

你可以通过选择表中的 IP 地址字段来编辑封禁。这会将你带到 **Edit IP Ban** 表单。在这里,你可以禁用(或重新启用)封禁,以及修改过期日期和原因。选择 **Save** 保存你的更改。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-edit.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=c8fa5ea054f8f74b7cddf3297bf714f8" alt="Game Manager - IP 封禁 - 编辑" width="1366" height="692" data-path="images/playfab/player-progression/player-data/tutorials/game-manager-ipbans-edit.png" />

当封禁的过期日期过后,其状态变为 **"Expired"**。若要重新激活该封禁,你必须定义一个新的过期日期。只有状态为 **"Active"** 的 IP 封禁才能阻止登录。

### 从服务器或服务创建封禁

<Warning>
  由于 IP 封禁的广泛影响以及对玩家的潜在高影响,我们建议不要自动或以编程方式创建 IP 封禁。
</Warning>

从受信任的服务器或服务,你可以使用 [Services SDK](/services/playfab/sdks/playfab-sdk-intro) 通过 Admin API 创建 IP 封禁。Admin API 需要你的游戏的开发者密钥,并且不得从游戏客户端调用。

```csharp theme={null}
public async Task CreateIPBanAsync(string ipAddress, DateTime expirationDate)
{
    var response = await PlayFabAdminAPI.CreateIPBanAsync(
        new CreateIPBanRequest
        {
            IPAddress = ipAddress,
            Expires = expirationDate.ToUniversalTime(),
            Reason = "Automatic IP ban"
        });

    if (response.Error != null)
    {
        Debug.LogError(response.Error.GenerateErrorReport());
        return;
    }

    // Handle response.Result.IPBanData
}
```

通过 API 应用的 IP 封禁也会显示在 Game Manager 中该游戏的 IP 封禁表中。


## Related topics

- [玩家封禁系统](/zh-CN/services/playfab/player-progression/player-data/player-bans.md)
- [PlayFab Game Manager 中的 API 功能设置](/zh-CN/services/playfab/live-service-management/gamemanager/api-feature-settings-in-the-playfab-game-manager.md)
- [PFAccountManagementBanUsersRequest](/zh-CN/services/playfab/api-references/c/pfaccountmanagementtypes/structs/pfaccountmanagementbanusersrequest.md)
- [PFAccountManagementBanInfo](/zh-CN/services/playfab/api-references/c/pfaccountmanagementtypes/structs/pfaccountmanagementbaninfo.md)
- [PFAccountManagementBanRequest](/zh-CN/services/playfab/api-references/c/pfaccountmanagementtypes/structs/pfaccountmanagementbanrequest.md)
