无法访问在 vpc 的子网 cidr 范围为 100.0.0.0/26 的私有子网中创建的 mysql
Posted
技术标签:
【中文标题】无法访问在 vpc 的子网 cidr 范围为 100.0.0.0/26 的私有子网中创建的 mysql【英文标题】:Not able to access mysql created in private subnet where vpc is having subnet cidr range of 100.0.0.0/26 【发布时间】:2021-12-23 23:14:38 【问题描述】:我创建了一个 VPC,它有 2 个公共子网和 2 个私有子网。
公共的cidr_range
是[100.0.0.0/26, 100.0.0.64/26]
,私人的[100.0.0.128/26, 100.0.0.192/26]
。
现在我在私有子网中创建了一个 mysql 实例,其私有 IP 为 10.85.0.2
。
要访问私有数据库,首先在同一 VPC 中创建具有公共和私有 ip 的堡垒,然后在私有子网中创建主实例(只有私有 ip)。
现在,如果我想从 master 访问 mysql,则会出现错误
ERROR 2003 (HY000): Can't connect to MySQL server on '10.85.0.2:3306' (110)
如果我在192.168.0.0/26
范围内更改子网的cidr_range
,那么我就可以访问数据库了。
有什么解决方案可以在不改变cidr_range
(access in range of 100.0.00/26)
的情况下访问db吗?
【问题讨论】:
在您的问题中,您的 IP 地址以100.
、10.
、192.
开头,是否真的打算同时拥有这三个地址?
CIDR 100.0.0.128/26 不是有效的私有 IP 地址。这是一个有效的可路由公共 IP 地址。请参阅 RFC 1918 以创建有效地址。 datatracker.ietf.org/doc/html/rfc1918 如果没有网关/代理,公共 IP 无法连接到私有 IP。
你检查this GCP docs了吗?你有什么特别的原因要使用100.0.0.0/26
、100.0.0.64/26
吗?请检查 VPC here 的 GCP 有效 IP 范围,因为您看到有效范围是:10.0.0.0/8
172.16.0.0/12
和 192.168.0.0/16
。
我使用 cidr_range 作为 100.0.0.64/26 因为所有 cidr 范围都已在另一个运行数据库的 vpc 中使用。所以我不能使用系列 10 或 192 或 172 范围的 cidr_range。
CIDR 块 10.0.0.0 非常大(24 位或 1600 万个地址)。通常,您可以从该块创建多个 VPC。
【参考方案1】:
将其写为 Community Wiki
以获得更好的可见性。
这个问题的答案是John Hanley
在评论区写的。
CIDR 100.0.0.128/26 不是有效的私有 IP 地址。这是一个有效的可路由公共 IP 地址。请参阅 RFC 1918 以创建有效的寻址。datatracker.ietf.org/doc/html/rfc1918 如果没有网关/代理,公共 IP 无法连接到私有 IP。
在GCP Documentation - Virtual Private Cloud
中有Valid Ranges 部分,它提供了可供使用的默认Private IP
范围。
私有 IP 地址RFC 1918
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
这就是您将 CIDR 设置为 192.168.0.0/26
的原因。
关于你的问题:
有没有办法在不改变cidr_range的情况下访问db(访问范围为100.0.00/26)
IMO,最好的解决方案是在 GCP 项目中重新配置整个网络。不使用 default
VPC,而是使用 custom
并根据您的特定需求自定义 VPC
【讨论】:
以上是关于无法访问在 vpc 的子网 cidr 范围为 100.0.0.0/26 的私有子网中创建的 mysql的主要内容,如果未能解决你的问题,请参考以下文章
在实例安全组的入站部分使用 VPC 的 CIDR 会阻止负载均衡器到达它
在 AWS 中确定或计算 VPC 的 Cidr 的标准公式 [关闭]
在 CloudFormation 模板中以编程方式生成子网 CIDR 块(或将整数相加)