繁体   English   中英

为什么使用ipv6从本地php应用程序引擎开发到Cloud sql的连接失败?

[英]Why does my connection to cloud sql from local php app engine development fail using ipv6?

因此,我想使用免费的ipv6地址连接到Google Cloud sql实例,而不是购买ipv4地址。 为此,我查看了ip我的ipv6地址并允许了它。 我还查询了路由器的ipv6前缀,并允许使用该前缀(应该允许我家庭网络中的所有PC都访问sql实例的afaik)。

以下代码会产生问题:

$servername = "2001:6532:1234:1:6a4f:e1d7:5d69:52a3";
$username = "looooool";
$password = "superSecretStuff";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

该代码生成此错误:

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8
Connection failed: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.

很抱歉错误消息是德语的,但我不知道该在哪里更改。 第8行是$conn = new mysqli($servername, $username, $password, $dbname); 在上面。 我已经更改了IP地址,所以如果看起来很奇怪,那就是为什么。 希望您能够帮助我。

忍者编辑:如果我从Google获得了IPv4地址,则可以正常使用。

我发现,某些ISP(互联网服务提供商),特别是那些针对住宅客户的ISP,对于向其客户分配和持久化IPv6地址和范围非常容易,而使用IPv4,更容易知道一个人的位置(通常有一个选项费用来支付持久,静态IPv4地址-如果你不支付该费用,则默认情况下你会得到一个动态的IPv4地址,你知道这容易在任何时候改变)。 我已经通过使用多种服务(例如whatismyip.com等)验证了这种不当行为。 结果,当我在办公室没有问题(静态IP地址,无论是v4还是v6都可以正常工作)时,我无法从家庭网络(通过AT&T)可靠地使用Cloud SQL。

您可能想再问一次关于serverfault的问题,因为它完全是关于网络管理,而不是关于软件开发(也不是关于Cloud SQL),而是有关您可以使用哪些ISP的所有详细信息,并且着重于使用给定的ISP的“如何获得可预测的,无变化的IPv6外部可见地址”(对于AT&T,我至少在现在已经放弃了这一追求)。

因此,我认为答案仅是更改$servername = "2001:6532:1234:1:6a4f:e1d7:5d69:52a3"; $servername = "[2001:6532:1234:1:6a4f:e1d7:5d69:52a3]"; 也就是说,如果您的网络或ISP没有像我的所做的那样对您的IPv6地址进行疯狂的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM