编程

使用 PHP 获取服务器的公共 IP 地址

59 2025-01-15 23:55:00

PublicIP 是一个 PHP 库,可以可靠快速地获取服务器的公共 IP 地址。此软件包具有坚定的默认配置,可为你提供最快、最可靠的提供者(Provider)。当然,你也可以配置和使用不同的提供者:

use KnotsPHP\PublicIP\Finders\PublicIP;
use KnotsPHP\PublicIP\Finders\PublicIPv4;
use KnotsPHP\PublicIP\Finders\PublicIPv6;
 
$ipv4 = PublicIPv4::get(); // returns your IPv4
$ipv6 = PublicIPv6::get(); // returns your IPv6
$ipv4or6 = PublicIP::get(); // returns either IPv4 or IPv6

此包提供了两种获取服务器 IP 的基本方法,包括 dig 和 HTTP whoami 提供者。如果你想要更精细的控制,你可以定义使用哪个 “fetcher” 和/或哪个 DNS 提供者:

use KnotsPHP\PublicIP\Enums\DnsProvider;
use KnotsPHP\PublicIP\Fetchers\DigFetcher;
use KnotsPHP\PublicIP\Finders\PublicIPv4;
 
$ipv4 = PublicIPv4::finder()
    ->addFetcher((new DigFetcher())
        ->from(DnsProvider::OpenDNS)))
    ->fetch();
 
// Use the Fetcher directly
$ipv4 = (new DigFetcher)
   ->from(DnsProvider::Cloudflare)
   ->fetch(IpVersion::v4);

此软件包还提供了一个命令行界面(CLI)来获取当前计算机的公共 IP。在安装命令期间,这可能很有用,因为你需要知道 IP 地址才能正确配置应用:

vendor/bin/publicip --ipv4
vendor/bin/publicip --ipv6

可以了解有关此软件包的更多信息,获取完整的安装说明,并在 GitHub 上查看源代码。我还建议浏览自述文档,以获取 dig`提供者列表以及支持的 HTTP whoami 提供者。你可以通过 Composer 将此软件包安装到项目中,方法如下:

composer require knotsphp/publicip

Bonus

我个人有一个 Bash 别名,用于在命令行上快速获取我的公共 IP 地址。你永远不知道什么时候需要使用你的 IP 进行 VPN 或安全列表访问。它是我的点文件的一部分,提供了一种通过 dig 访问我的 IP 的快速方法:

alias ip='dig @resolver4.opendns.com myip.opendns.com +short'
alias ip6='dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6'