TGW Policy Table:先选路由表,再选下一跳
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
两个 VPC 普通互通,直接使用 Route Table 即可。 当同一目标的流量需要按来源、协议或端口走不同路径时,使用 Policy Table 做 Policy-Based Routing(PBR,通用的策略路由概念)。
| 对象 | 回答的问题 | 输出 |
|---|---|---|
| Policy Table | 这类流量应该用哪张表? | 目标 TGW Route Table |
| Route Table | 这个目的 IP 下一跳去哪里? | VPC、Peering 等 attachment,或 blackhole |
| Security Group / NACL | 对应路径上的请求是否允许? | 放行或拒绝;仍须单独配置 |
Policy Table 可匹配源/目的 IP、源/目的端口和协议。它先选择 Route Table,后者仍按目的地址选下一跳。AWS PBR 说明
例子:同一台 B,HTTPS 经防火墙,SSH 直达#
示例地址:A=172.31.1.10,B=10.230.1.20。普通 Route Table 只有 10.230.0.0/16 → B attachment 时,ping、SSH、HTTPS 都选同一个下一跳,能否访问由安全规则决定。
现在要求 A 到 B 的 TCP 443 必须先检查,TCP 22 可以直达:
A ── TCP 443 ──→ TGW ──→ inspection VPC 的防火墙 ──→ B
A ── TCP 22 ──→ TGW ─────────────────────────────→ B将 A 的 VPC attachment 关联到如下 Policy Table,分类的是从 A 进入 TGW 的流量:
| Rule number | 匹配条件 | Target route table |
|---|---|---|
| 100 | source 172.31.1.10/32、destination 10.230.1.20/32、TCP、destination port 443;source port 为 Any |
inspection-table |
| 9000 | 其余流量 | direct-table |
再在两张 Route Table 中分别配置:
| Route Table | Destination | 下一跳 |
|---|---|---|
inspection-table |
10.230.0.0/16 |
inspection VPC attachment |
direct-table |
10.230.0.0/16 |
B 的 VPC attachment |
于是 TCP 443 先选 inspection-table,TCP 22 选 direct-table,再由各表决定下一跳。按来源区分生产/测试流量时,也可把规则条件换成对应 source CIDR。
这张表只说明选路,不会创建防火墙、开放端口或自动补齐回程。实际接入还需防火墙处理后的转发、对称回程及适用的 appliance mode;不要把检查后的流量再次送回同一重定向路径造成环路。这里匹配的是 TCP 端口,不会识别或解密 HTTPS 内容。
容易踩的坑#
- Attachment 的关联二选一:直接关联 Route Table,或关联 Policy Table;不能同时关联两者。Policy Table 中引用的 Route Tables 仍然需要存在且有正确路由。
- 规则顺序影响结果:若有 AWS system-managed entries,先匹配它们;然后按自定义 Rule number 从小到大取第一个匹配。
- 全部未匹配会丢包:需要保留其他流量时,配置高编号的 fallback rule。上例 9000 只选择
direct-table,不授予 SG 权限;该表也必须有目标路由。 - 方向要单独设计:A 发起请求的目标端口是 443,响应的源端口才是 443;不能把同一端口条件原样当作双向检查策略。
- ICMP 没有 TCP/UDP 端口:ICMP/GRE/Any 的 port 条件为 Any,不用端口 22/443 规则解释 ping 行为。
只读核对现有配置#
Console:VPC → Transit Gateway Policy Tables。先确认流量进入的 attachment 关联哪张表,再查看规则和被选中的 Route Table。
PROFILE='REPLACE_PROFILE'
REGION='ap-northeast-1'
POLICY_TABLE='REPLACE_TGW_POLICY_TABLE_ID'
aws ec2 get-transit-gateway-policy-table-entries \
--profile "$PROFILE" --region "$REGION" --no-cli-pager \
--transit-gateway-policy-table-id "$POLICY_TABLE"检查 system-managed entries、自定义规则顺序及 Target route table;继续到 路由与 SG 排障核对下一跳、回程和访问许可。以上仅查询,不创建或关联任何资源。