## GCP 路由基础概念及与 VPC、实例关系

### 1. 路由概述

在 GCP 中，路由是控制 VPC 网络中流量进出方式的规则。您可以使用路由来：

* 将流量定向到不同的目的地，例如实例、Internet 或本地网络。
* 控制哪些流量允许进出您的 VPC 网络。

您可以使用 `gcloud compute routes list` 命令列出项目中的所有路由，并查看它们的详细信息，例如：

* **NAME:** 路由的名称。
* **NETWORK:** 路由所属的 VPC 网络的名称。
* **DESTINATION_RANGE:** 与此路由匹配的目标 IP 地址范围 (CIDR 表示法)。
* **NEXT_HOP:** 流量的下一个跃点，可以是实例、VPN 隧道、互联网网关等。
* **PRIORITY:**  路由的优先级，数字越小优先级越高。

### 2. 实例、默认网关和路由的关系

每个 VPC 网络都包含一个默认路由 ( `default-internet-gateway` )，用于管理进出互联网的流量。默认情况下，所有新创建的实例都会自动获得一个内部 IP 地址，并通过默认路由访问互联网。

**关系:**

* **实例:** 实例拥有内部 IP 地址，并通过 VPC 网络中的路由访问其他资源。
* **默认网关:**  默认网关 ( `default-internet-gateway` ) 是 VPC 网络中预定义的网关，充当 VPC 网络与互联网之间的桥梁。
* **路由:** 路由定义了如何将流量从 VPC 网络中的一个点路由到另一个点，包括默认路由。

**默认网关地址并非路由范围中的第一个地址。** 默认网关拥有自己的内部 IP 地址，通常位于 VPC 网络的 IP 地址范围内的特定地址，例如 `10.128.0.1` 。

### 3. 实例如何发送流量

1. 当实例需要发送流量时，它会先查看本地路由表。
2. 路由表包含一系列路由规则，根据目标 IP 地址匹配相应的规则。
3. 如果找到匹配的路由规则，则实例会将流量发送到路由规则中指定的下一跳。
4. 如果没有找到匹配的路由规则，则实例会将流量发送到默认网关。
5. 默认网关会将流量转发到互联网。

### 4.  示例

假设您的 VPC 网络 CIDR 范围为 `10.128.0.0/20` ，您有一个实例的内部 IP 地址为 `10.128.0.10` 。

* 当实例需要访问互联网上的 `8.8.8.8` 时，它会查找路由表并匹配到默认路由，因为 `8.8.8.8` 不在 `10.128.0.0/20` 范围内。
* 默认路由会将流量发送到默认网关，网关再将流量转发到互联网。

### 5. 自定义路由

您可以创建自定义路由来覆盖默认路由行为，例如：

* 将特定 IP 地址范围的流量路由到特定的实例或 VPN 隧道。
* 阻止特定 IP 地址范围的流量。

## 总结

路由是 GCP 中 VPC 网络的重要组成部分，它定义了流量在 VPC 网络中的传输方式。默认情况下，所有实例都使用默认路由访问互联网。您可以创建自定义路由来覆盖默认路由行为，并根据您的需求控制流量。 


### GCP 默认网关设置

在 GCP 中，默认网关 ( `default-internet-gateway` ) 是自动创建并配置的，您无法直接对其进行设置或修改。每个 VPC 网络都会自动拥有一个默认网关，用于处理 VPC 网络与互联网之间的流量。

### 默认网关的功能：

* **提供互联网访问：**  默认网关为 VPC 网络中的实例提供 NAT (Network Address Translation，网络地址转换) 功能，使实例可以使用 VPC 网络的外部 IP 地址访问互联网。
* **接收来自互联网的流量：** 默认网关接收发送到 VPC 网络外部 IP 地址的流量，并根据路由规则将其转发到相应的实例。
* **充当默认路由的下一跳：** 默认路由 ( `default-internet-gateway` ) 将默认网关作为下一跳，这意味着所有未匹配到其他路由规则的流量都将发送到默认网关。

### 无法修改默认网关的原因：

GCP 为了确保 VPC 网络的安全性、稳定性和易用性，限制了用户对默认网关的直接访问和修改。默认网关的配置由 GCP 自动管理，以确保其始终以最佳状态运行。

###  自定义网络流量行为

如果您需要自定义 VPC 网络的流量行为，例如将特定流量路由到特定目标或阻止某些流量，您可以创建自定义路由规则：

* **自定义路由：** 您可以创建自定义路由规则，将特定目标 IP 地址范围的流量路由到不同的目标，例如特定实例、VPN 隧道或 Cloud NAT。
* **防火墙规则：** 您可以使用防火墙规则允许或阻止特定协议和端口的流量进出 VPC 网络。

###  总结

GCP 中的默认网关是 VPC 网络与互联网之间的桥梁，它由 GCP 自动管理，无法直接修改。您可以通过创建自定义路由规则和防火墙规则来自定义 VPC 网络的流量行为。 

