

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# DDoPerlindungan S dengan Amazon GameLift Servers
<a name="ddos-protection-intro"></a>

Amazon GameLift ServersPlayer Gateway adalah jaringan berbasis relay yang mengarahkan lalu lintas UDP antara klien game dan server game yang di-host. Amazon GameLift Servers Gateway pemain memberikan perlindungan DDo S proaktif dengan memvalidasi lalu lintas sebelum mencapai server game, membatasi lalu lintas pemain, menyembunyikan alamat IP server game dari publik, dan menyediakan titik akhir yang diperbarui saat titik akhir relay menjadi tidak sehat. Fitur ini membantu melindungi server game Anda dari serangan volumetrik dengan latensi tambahan yang dapat diabaikan.

Gateway pemain membutuhkan server game untuk berjalan di armada EC2 Amazon GameLift Servers Terkelola berbasis Linux atau Armada Kontainer. Anda harus mengaktifkan gateway pemain selama pembuatan armada dan memperbarui klien game dan backend game Anda untuk menggunakan fitur ini.

## Manfaat utama
<a name="ddos-protection-intro-benefits"></a>

Gateway pemain memberikan manfaat keamanan dan operasional berikut:
+ **Sembunyikan alamat IP server game** — Klien game terhubung melalui titik akhir relai alih-alih langsung ke server game, menyembunyikan alamat server game Anda dari publik.
+ **Validasi lalu lintas** — Semua lalu lintas melalui gateway pemain memerlukan token gateway pemain, yang memungkinkan hanya lalu lintas dari pemain yang diautentikasi untuk mencapai server game Anda.
+ **Penggantian titik akhir dinamis** — Ketika titik akhir relai menjadi tidak sehat, Amazon GameLift Servers dengan cepat mengganti titik akhir dan menyediakan titik akhir sehat yang diperbarui pada panggilan berikutnya untuk menyegarkan detail koneksi pemain.
+ **Distribusikan lalu lintas pemain** — Titik akhir relay bervariasi di seluruh pemain, mengurangi dampak dari satu titik akhir relay yang tidak sehat ke pemain lain dalam sesi permainan yang sama.

# Cara kerja gateway pemain
<a name="ddos-protection-howitworks"></a>

Gateway pemain menggunakan jaringan relay untuk merutekan lalu lintas UDP antara klien game dan server game. Ini melindungi terhadap serangan DDo S dengan memvalidasi lalu lintas sebelum mencapai server game, membatasi lalu lintas pemain, menyembunyikan alamat IP server game dari publik, dan menyediakan titik akhir yang diperbarui ketika titik akhir relay menjadi tidak sehat.

## Arus lalu lintas
<a name="ddos-protection-howitworks-traffic-flow"></a>

Saat pemain terhubung ke sesi permainan, backend game Anda mengambil titik akhir relai dan token gateway pemain dari `GetPlayerConnectionDetails` API dan mengirimkannya ke klien game. Klien game menambahkan token gateway pemain ke paket UDP dan mengirim paket ke titik akhir relai. Jaringan relay memvalidasi token dan merutekan lalu lintas yang sah ke server game. Sebelum pengiriman, jaringan relai menghapus token gateway pemain sehingga server game menerima muatan klien game mentah dan tidak memerlukan perubahan kode. Komunikasi dari server game kembali ke klien game kembali melalui jaringan relai tanpa modifikasi.

![\[Diagram arsitektur yang menunjukkan klien game yang terhubung melalui jaringan relai ke server game\]](http://docs.aws.amazon.com/id_id/gameliftservers/latest/developerguide/images/player_gateway_architecture.png)


## Konsep inti
<a name="ddos-protection-howitworks-components"></a>

### Titik akhir relai
<a name="ddos-protection-howitworks-endpoints"></a>

Relay endpoint adalah alamat IP dan kombinasi port yang digunakan klien game untuk mengirim lalu lintas melalui gateway pemain. Setiap pemain menerima beberapa titik akhir yang bervariasi antar pemain untuk mendistribusikan lalu lintas dan mengurangi dampak serangan pada pemain lain dalam sesi permainan yang sama.

![\[Diagram yang menunjukkan beberapa pemain menerima titik akhir relay yang berbeda untuk sesi permainan yang sama\]](http://docs.aws.amazon.com/id_id/gameliftservers/latest/developerguide/images/player_gateway_relay_endpoints.png)


### Token gateway pemain
<a name="ddos-protection-howitworks-tokens"></a>

Token gateway pemain adalah array byte terenkripsi yang mengizinkan pemain untuk mengirim lalu lintas ke sesi permainan melalui gateway pemain. `GetPlayerConnectionDetails`API mengembalikan token sebagai string yang dikodekan base64. Klien game harus menambahkan token gateway pemain ke setiap paket UDP. Jaringan relay memvalidasi token dan menolak paket dengan token yang tidak valid atau hilang.

**penting**  
Token gateway pemain tidak boleh dienkripsi dan harus muncul di awal setiap paket UDP yang dikirim oleh klien game. Jika game Anda mengenkripsi muatan, tambahkan token gateway pemain yang tidak dimodifikasi setelah mengenkripsi data game.

Token gateway pemain tetap berlaku setidaknya selama 3 menit. Kami merekomendasikan penyegaran token setiap 60 detik untuk memastikan pemain menerima titik akhir yang diperbarui saat titik akhir relay menjadi tidak sehat.

### GetPlayerConnectionDetails API
<a name="ddos-protection-howitworks-api"></a>

Backend game Anda memanggil `GetPlayerConnectionDetails` API untuk mengambil detail koneksi bagi pemain dalam sesi game. API mengembalikan titik akhir relay dan token gateway pemain, atau kembali ke alamat IP server game dan port untuk koneksi langsung. Klien game Anda harus dirancang untuk menangani kedua jenis koneksi. Untuk menerima titik akhir yang diperbarui saat titik akhir relai menjadi tidak sehat, panggil API ini secara berkala selama sesi game (disarankan setiap 60 detik).

Untuk informasi selengkapnya, lihat [GetPlayerConnectionDetails API](ddos-protection-integrate.md#ddos-protection-integrate-backend-api).

## Memantau gateway pemain
<a name="ddos-protection-howitworks-monitoring"></a>

Gateway pemain menerbitkan metrik CloudWatch ke Amazon untuk membantu Anda memantau pola lalu lintas jaringan, mengidentifikasi potensi serangan DDo S, dan melacak kinerja relai. Metrik termasuk paket dan byte in/out, lalu lintas terbatas, dan sesi pemain. Untuk daftar lengkap metrik gateway pemain, lihat[DDoMetrik perlindungan S (gateway pemain)](monitoring-cloudwatch.md#gamelift-metrics-fleet-playergateway).

## IPv4 dan IPv6 kompatibilitas
<a name="ddos-protection-howitworks-ipv4-ipv6"></a>

Klien game berkomunikasi menggunakan IPv4. Gateway pemain digunakan IPv6 untuk berkomunikasi dengan server game. Amazon GameLift Serverssecara otomatis menangani terjemahan antara IPv4 dan IPv6 berdasarkan konfigurasi armada Anda.

Untuk informasi selengkapnya tentang mengonfigurasi gateway pemain di armada Anda, lihat [CreateFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateFleet.html#gameliftservers-CreateFleet-request-PlayerGatewayMode)atau [CreateContainerFleet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateContainerFleet.html#gameliftservers-CreateContainerFleet-request-PlayerGatewayMode). Untuk informasi lebih lanjut tentang IPv4 dan IPv6 dukungan, lihat[IPv4 dan IPv6 kompatibilitas](ddos-protection-enable.md#ddos-protection-enable-ip-protocol).

# Aktifkan gateway pemain di armada
<a name="ddos-protection-enable"></a>

Aktifkan gateway pemain saat membuat armada untuk merutekan lalu lintas game melalui titik akhir relai yang memvalidasi dan membatasi lalu lintas UDP yang masuk ke server game Anda.

## Prasyarat
<a name="ddos-protection-enable-prerequisites"></a>

Sebelum mengaktifkan gateway pemain, verifikasi persyaratan berikut:
+ **Lokasi yang didukung** — Untuk daftar AWS lokasi yang mendukung gateway pemain, lihat[Amazon GameLift Serverslokasi layanan](gamelift-regions.md).
+ **Jenis armada** - Gateway pemain mendukung armada EC2 Terkelola berbasis Linux dan armada Kontainer Terkelola.
+ **Server SDK** — Gateway pemain memerlukan Amazon GameLift Servers Server SDK 5.0 atau yang lebih baru.

## Mode gateway pemain
<a name="ddos-protection-enable-modes"></a>

Konfigurasikan kompatibilitas gateway pemain untuk armada Anda menggunakan `PlayerGatewayMode` properti:

DINONAKTIFKAN (default)  
Armada tidak kompatibel dengan gateway pemain.

ENABLED  
Armada kompatibel dengan gateway pemain di lokasi yang didukung. Lokasi armada yang tidak mendukung fitur masih dapat ditambahkan ke armada tetapi tidak akan memanfaatkan gateway pemain, langsung memanfaatkan alamat IP server game.

REQUIRED  
Armada kompatibel dengan gateway pemain. Lokasi armada yang tidak mendukung fitur tidak dapat ditambahkan ke armada.

## IPv4 dan IPv6 kompatibilitas
<a name="ddos-protection-enable-ip-protocol"></a>

Klien game harus berkomunikasi dengan gateway pemain melalui IPv4. Jaringan relay gateway pemain berkomunikasi dengan server game menggunakan IPv6. Armada Kontainer Terkelola secara otomatis menerjemahkan lalu lintas IPv6 ke IPv4. Untuk armada EC2 Terkelola, konfigurasikan cara armada Anda menangani IPv6 lalu lintas menggunakan `GameServerIpProtocolSupported` properti di: `PlayerGatewayConfiguration`

IPv4 (default)  
Server game Anda hanya menerima lalu lintas masuk IPv4 . Perangkat lunak terjemahan IP ringan akan diinstal dan dieksekusi pada instans Anda untuk menerima dan mengubah IPv6 lalu lintas masuk ke. IPv4

DUAL\$1STACK  
Server game Anda kompatibel dengan IPv6 lalu lintas masuk. Perangkat lunak terjemahan IP tidak akan diinstal atau dieksekusi pada instance Anda. Server game yang mendukung IPv6 secara native mungkin memiliki kinerja yang sedikit lebih tinggi.

# Integrasikan gateway pemain ke dalam game
<a name="ddos-protection-integrate"></a>

Setelah membuat armada yang mendukung gateway pemain, Anda harus memperbarui klien game dan backend game Anda untuk diintegrasikan dengan gateway pemain. Backend game Anda mengambil titik akhir relay dan token gateway pemain, lalu menyediakannya ke klien game. Klien game mengirim semua lalu lintas UDP ke titik akhir relai ini.

Integrasi mengikuti jalur panggilan ini:

1. Backend game Anda memanggil `GetPlayerConnectionDetails` API untuk mengambil titik akhir relai dan token gateway pemain untuk setiap pemain dalam sesi permainan.

1. Backend game Anda mengirimkan titik akhir relay dan token gateway pemain ke klien game.

1. Klien game Anda menambahkan token gateway pemain ke semua paket UDP keluar dan mengirim paket ke titik akhir relai.

1. Jaringan relai memvalidasi token gateway pemain dan merutekan lalu lintas ke server game Anda.

1. Server game Anda mengirimkan lalu lintas kembali ke klien game Anda melalui jalur relay yang sama.

## Integrasi backend
<a name="ddos-protection-integrate-backend"></a>

Backend game Anda harus memanggil `GetPlayerConnectionDetails` API untuk mengambil titik akhir relai dan token gateway pemain untuk pemain. Backend kemudian memberikan informasi ini kepada klien game.

### GetPlayerConnectionDetails API
<a name="ddos-protection-integrate-backend-api"></a>

`GetPlayerConnectionDetails`API mengembalikan detail koneksi untuk pemain dalam sesi game:

Relay titik akhir dan token  
Ketika gateway pemain diaktifkan dan didukung di lokasi, mengembalikan:  
+ **Titik akhir relai** — Beberapa titik akhir relai (alamat IP dan port) yang bervariasi antar pemain
+ **Token gateway pemain** — Token yang harus diberikan klien ke semua paket UDP (berlaku setidaknya selama 3 menit)
+ **Kedaluwarsa - Stempel** waktu kedaluwarsa token gateway pemain

Koneksi langsung  
Ketika gateway pemain tidak diaktifkan atau tidak didukung di lokasi, mengembalikan alamat IP dan port server game

Klien game Anda harus dirancang untuk menangani kedua jenis koneksi.

Contoh panggilan API:

```
// C++ example using AWS SDK
Aws::GameLift::GameLiftClient client;
Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request;
request.SetGameSessionId(gameSessionId);
request.SetPlayerIds(playerIds);  // Vector of player IDs

auto outcome = client.GetPlayerConnectionDetails(request);
if (outcome.IsSuccess()) {
    auto result = outcome.GetResult();
    auto connectionDetails = result.GetPlayerConnectionDetails();
    
    // Process each player's connection details
    for (const auto& detail : connectionDetails) {
        std::string playerId = detail.GetPlayerId();
        
        // Get relay endpoints (IP address and port)
        auto endpoints = detail.GetEndpoints();
        for (const auto& endpoint : endpoints) {
            std::string ipAddress = endpoint.GetIpAddress();
            int port = endpoint.GetPort();
        }
        
        // Get player gateway token
        auto token = detail.GetPlayerGatewayToken();
        
        // Get expiration time
        auto expiration = detail.GetExpiration();
        
        // Send endpoints and token to game client
    }
}
```

Lihat [GetPlayerConnectionDetails](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GetPlayerConnectionDetails.html)di *Referensi Amazon GameLift Servers API*.

### Segarkan titik akhir relai
<a name="ddos-protection-integrate-backend-refresh"></a>

Panggil `GetPlayerConnectionDetails` secara berkala untuk memberi pemain titik akhir yang diperbarui saat titik akhir relay menjadi tidak sehat. Kami merekomendasikan memanggil API setiap 60 detik untuk semua pemain dalam sesi permainan. Untuk mengoptimalkan penggunaan API, gabungkan beberapa pemain IDs dalam satu panggilan API.

**penting**  
Panggilan penyegaran reguler adalah mekanisme utama untuk memberikan titik akhir yang diperbarui kepada pemain. Meskipun token gateway pemain tetap berlaku setidaknya selama 3 menit, penyegaran setiap 60 detik memastikan pemain menerima titik akhir yang diperbarui secara teratur.

## Integrasi klien
<a name="ddos-protection-integrate-client"></a>

Klien game Anda harus menambahkan token gateway pemain ke semua paket UDP keluar dan mengirim paket ke titik akhir relai yang disediakan. Amazon GameLift ServersKlien SDK for C\$1\$1 dan Unreal Engine menyediakan utilitas untuk menyederhanakan integrasi ini.

### Persyaratan klien
<a name="ddos-protection-integrate-client-requirements"></a>

Untuk merutekan lalu lintas melalui gateway pemain, klien game Anda harus:
+ **Prepend player gateway token** — Prepend token gateway pemain ke semua paket UDP keluar. Token gateway pemain tidak boleh dienkripsi dan harus muncul di awal setiap paket. Paket tanpa token gateway pemain yang valid akan dijatuhkan.
+ **Kirim ke titik akhir relai** — Kirim semua paket UDP ke titik akhir relai yang disediakan.
+ **Pertahankan aktivitas koneksi** — Pastikan bahwa klien game mengirim paket ke server game, atau server game mengirim paket ke pemain, setidaknya sekali setiap 30 detik. Aktivitas ini memelihara koneksi melalui jaringan relai.
+ **Tangani pembaruan titik akhir** — Terima titik akhir relai yang diperbarui dan token gateway pemain dari backend Anda (disarankan setiap 60 detik) dan transisi ke titik akhir baru tanpa membatalkan koneksi.

### SDK Klien
<a name="ddos-protection-integrate-client-sdk"></a>

Amazon GameLift ServersKlien SDK for C\$1\$1 dan Unreal Engine menyediakan utilitas untuk menyederhanakan integrasi gateway pemain:
+ **Manajemen token** — Menambah token gateway pemain ke semua paket UDP keluar.
+ **Pemilihan titik akhir — Merutekan** lalu lintas ke titik akhir relay menggunakan algoritma yang dapat dikonfigurasi.
+ **Penyegaran titik akhir** - Menjadwalkan panggilan balik berkala untuk mengambil titik akhir relai yang diperbarui dan token gateway pemain dari backend Anda.

### Algoritma pemilihan titik akhir
<a name="ddos-protection-integrate-client-algorithms"></a>

SDK klien menyediakan dua algoritma bawaan untuk memilih titik akhir relai mana yang akan digunakan:

Algoritma fallback  
Menggunakan satu titik akhir sampai menjadi tidak sehat, kemudian beralih ke titik akhir lain. Terbaik untuk menu, lobi, dan game berbasis giliran di mana interupsi singkat dapat diterima. Selama failover endpoint, paket mungkin hilang untuk periode batas waktu yang dikonfigurasi (default: 2 detik).

Algoritma rotasi prediktif  
Terus berputar melalui semua titik akhir yang tersedia dan memprediksi kegagalan sebelum terjadi. Terbaik untuk gameplay real-time seperti first-person shooter dan game balap di mana pengiriman paket yang konsisten sangat penting. Membutuhkan server game untuk mengirim pesan pada frekuensi yang konsisten.

Anda juga dapat menerapkan algoritma kustom dengan memperluas kelas algoritma dasar SDK.

### Sumber daya SDK klien
<a name="ddos-protection-integrate-client-resources"></a>

Untuk instruksi integrasi lengkap dan kode contoh, lihat sumber daya berikut:

C\$1\$1  
SDK klien untuk C\$1\$1 [Amazon GameLift Serverstersedia di client SDK for](https://github.com/amazon-gamelift/amazon-gamelift-servers-client-sdk-for-cpp) C\$1\$1.

Unreal Engine  
Plugin untuk Unreal Engine tersedia di [SDK Amazon GameLift Servers klien untuk Unreal](https://github.com/amazon-gamelift-for-unreal/amazon-gamelift-servers-client-sdk-for-unreal) Engine. Akses memerlukan keanggotaan dalam organisasi Epic Games pada GitHub. Lihat [Unreal Engine GitHub](https://www.unrealengine.com/en-US/ue-on-github) untuk detailnya.

## Uji integrasi Anda
<a name="ddos-protection-integrate-testing"></a>

Sebelum menerapkan ke armada, uji integrasi gateway pemain Anda secara lokal menggunakan alat pengujian gateway pemain. Alat ini mensimulasikan infrastruktur proxy UDP gateway pemain dan membantu Anda memverifikasi bahwa klien game Anda dengan benar menambahkan token gateway pemain, merutekan lalu lintas melalui beberapa titik akhir, dan menangani degradasi jaringan.

Untuk petunjuk penyiapan dan penggunaan, lihat [aplikasi pengujian gateway pemain](https://github.com/amazon-gamelift/amazon-gamelift-toolkit/tree/main/player-gateway-testing-app) aktif GitHub.

## Praktik terbaik
<a name="ddos-protection-integrate-best-practices"></a>

Ikuti praktik terbaik ini saat mengintegrasikan gateway pemain:
+ **Segarkan titik akhir setiap 60 detik** — Hubungi `GetPlayerConnectionDetails` setiap 60 detik untuk memastikan pemain menerima titik akhir yang diperbarui secara teratur.
+ **Panggilan API Batch** — Saat memanggil `GetPlayerConnectionDetails` beberapa pemain dalam sesi game yang sama, gabungkan panggilan bersama-sama untuk mengurangi overhead API.
+ **Pertahankan aktivitas koneksi** — Pastikan arus lalu lintas antara klien game dan server game setidaknya sekali setiap 30 detik. Ini bisa berupa server-to-client lalu lintas client-to-server atau lalu lintas.
+ **Tangani pembaruan titik akhir dengan anggun** — Saat klien game Anda menerima titik akhir yang diperbarui dari backend, transisi ke titik akhir baru tanpa menjatuhkan koneksi pemain.
+ **Pilih algoritma yang tepat** — Pilih algoritma pemilihan titik akhir yang paling sesuai dengan kebutuhan game Anda. Gunakan algoritma fallback untuk game berbasis giliran dan algoritma rotasi prediktif untuk game waktu nyata.