例如,AWS 上的同一 VPC 中有两个 CIDR。其中一个是公共的,一个是私有的。他们属于不同的细分市场。
# Public Subnet CIDR
10.124.42.0/27
# Private Subnet CIDR
10.124.43.128/25
如果想从公共网络连接到私人网络,有可能吗?
例如,AWS 上的同一 VPC 中有两个 CIDR。其中一个是公共的,一个是私有的。他们属于不同的细分市场。
# Public Subnet CIDR
10.124.42.0/27
# Private Subnet CIDR
10.124.43.128/25
如果想从公共网络连接到私人网络,有可能吗?
我想使用 Terraform 为 EKS 创建一个新子网。在同一个账户中,已经创建了 VPC 并创建了一些子网。
locals {
vpc_cidr_block = "10.148.52.0/22"
public_subnets = [
"10.148.52.0/27",
"10.148.54.0/27",
]
# ...
private_subnets_3 = [
"10.148.52.80/28",
"10.148.54.80/28",
]
subnets_4 = [
"10.148.52.240/28",
"10.148.54.240/28",
]
eks_private_subnets = [
"10.148.52.128/25",
"10.148.54.128/25",
]
}
resource "aws_subnet" "eks_private" {
count = length(local.eks_private_subnets)
vpc_id = aws_vpc.this.id
cidr_block = local.eks_private_subnets[count.index]
availability_zone = local.azs[count.index]
}
运行部署时,出现以下错误:
Error: error creating subnet: InvalidSubnet.Conflict: The CIDR '10.148.54.128/25' conflicts with another subnet
status code: 400, request id: 11111111111-111111-1111111-1111111111111
on main.tf line 50, in resource "aws_subnet" "eks_private":
50: resource "aws_subnet" "eks_private" {
Error: error creating subnet: InvalidSubnet.Conflict: The CIDR '10.148.52.128/25' conflicts with another subnet
status code: 400, request id: 22222222222-222222-22222-222222222222222
on network.tf line 50, in resource "aws_subnet" "eks_private":
50: resource "aws_subnet" "eks_private" {
.128/25 大小似乎与其他子网冲突。但是我想在这个 VPC 中创建一个 /25 大小的子网,这不可能吗?否则,我是否需要创建一个新的 VPC 才能使用?
在 AWS 中,创建了 2 个帐户。
想从账户 1 的 EC2 连接到账户 2 的 RDS,但不起作用。因此启用了 VPC 流日志来诊断问题出在哪里。这 2 个账户之间的连接正在使用中转网关。双方都通过路由表连接到自己的 VPC。
通过 db connect 客户端从 A 到 B 进行连接测试后,试图从 A 中查找网络接口 ID,例如eni-XXXXXXXX
属于 EC2 实例,在 B 的 CloudWatch Logs 组中,找不到它的名称。
我按照本指南操作,使用 AWS VPC 流日志诊断间歇性 RDS 连接。但是这些步骤不能解决我的问题,我无法用它来诊断:
如何正确确认彼此的网络流量?
我在流日志中发现了一个未知端口。
2 023910321035 eni-12309fdsaj0jf012 ACCOUNT_1_EC2_IP ACCOUNT_2_RDS_IP 45052 31337 6 3 180 1619490209 1619490213 REJECT OK
2 023910321035 eni-12309fdsaj0jf012 ACCOUNT_1_EC2_IP ACCOUNT_2_RDS_IP 45052 31337 6 3 180 1619490209 1619490213 REJECT OK
端口31337
没有打开。为什么它会连接这个端口?
我在 AWS 账户 A 中有一个 EC2 实例。它的私有 IPv4 地址是 10.111.12.23。
我在账户 B 的 RDS 安全组规则中允许它,以制作 TypeCIDR/IP - Inbound
的 Rule 10.111.12.23/32
。还要在这两个账户的 vpc 网络之间使用中转网关,将它们路由到让账户 A 的 ec2 访问账户 B。
当我在账户 A 中登录 ec2 时,无法 ping RDS 集群的端点。检查ec2主机上的ip,得到
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 00:01:b2:31:d0:d2 brd ff:ff:ff:ff:ff:ff
inet 10.111.12.23/27 brd 10.111.12.43 scope global dynamic eth0
valid_lft 2390sec preferred_lft 2390sec
inet6 ze20::202:b3fa:fe31:a0c2/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:ed:6d:80:1a brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 ze20::20:b1fa:fl39:712x/64 scope link
valid_lft forever preferred_lft forever
...
IP10.111.12.23/27
的子网是 27 但不是 32。所以这是无法访问 RDS 的原因,即使它允许使用 /32 的 IP 但不起作用。
而且,有点复杂,我还想从账户 A 的 ec2 实例访问账户 B 中的 RDS,上面有 docker。登录 docker 容器,查看其 IP:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
117: eth0@if118: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 01:12:lc:22:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.5/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
它使用不同的网络IP。那么即使可以从ec2主机连接RDS,是否也可以在上面访问docker里面的RDS呢?