PHP获取本机(小主机/树莓派)ipv4/v6地址

Linux获取公网ipv4/v6

命令行获取

ipv4:

图片[1]~PHP获取本机(小主机/树莓派)ipv4/v6地址~星空小站
#curl 4.ipw.cn 已失效
curl ip.3322.net
curl ipv4.ip.mir6.com
curl https://ipv4.ddnsip.cn

ipv6:

方法一

图片[2]~PHP获取本机(小主机/树莓派)ipv4/v6地址~星空小站
ifconfig enp2s0 | grep inet6 | awk '{print $2}' #注意:enp2s0更改为你的网卡名称,使用ifconfig获取

方法二

图片[3]~PHP获取本机(小主机/树莓派)ipv4/v6地址~星空小站
#如果IPv6优先级高于IPv4
curl ip.sb
curl https://ddnsip.cn
#通用
//curl -g -d -k -v http://[2402:4e00:1013:e500:0:9671:f018:4947]/ 已失效
curl ipv6.ip.mir6.com
curl https://ipv6.ddnsip.cn

PHP获取公网ipv4/v6

图片[4]~PHP获取本机(小主机/树莓派)ipv4/v6地址~星空小站
<?php
//使用正则和file_get_contents函数获取本地ipv4
$content = file_get_contents('https://my.ip.cn');
preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $content, $matches);
$ipv4 = $matches[0];
//使用curl_init函数获取本地ipv6
$ipv6_ch = curl_init('https://ipv6.ip.mir6.com');
curl_setopt_array($ipv6_ch, [CURLOPT_RETURNTRANSFER=>1, CURLOPT_IPRESOLVE=>CURL_IPRESOLVE_V6, CURLOPT_TIMEOUT=>10]);
$ipv6 = trim(curl_exec($ipv6_ch));//$ipv6赋值
if (curl_errno($ipv6_ch)) { $ipv6 = '获取失败'; }
curl_close($ipv6_ch);

适用环境示例

拥有动态公网,但是在IP变更时,依靠DDNS不能实时变更解析、DNS未即时刷新,
需求直连更快的内网对外FTP/Alist等服务情况。

借助OpenFRP/SakuraFRP映射一个PHP站点,

在该站点中使用本文提及的获取ipv4/v6方法,例如本人的 家庭网络服务中心 – Guest

将该站点作为内网服务直连索引。

© 版权声明
THE END
点赞11 分享
评论 共4条
头像~星空小站
欢迎您留下宝贵的见解!
提交
头像~星空小站

昵称

取消
昵称表情代码图片快捷回复
    • 头像~星空小站Qicloud0
    • 头像~星空小站7wate0