echo gethostbyname(‘www.ychr.com’);
这个怎么会得到是内网IP地址 :127.0.0.31
http://www.comca.cn/ip?ip=www.ychr.com
但是在站长工具查询又能得到正确的IP地址
http://ip.chinaz.com/?ip=www.ychr.com
这个是PHP问题,还是服务器的原因???
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 用户在使用PHP函数gethostbyname('www.ychr.com')
获取域名解析的IP地址时,得到的是内网IP地址127.0.0.31。然而,通过外部站长工具查询(如http://www.comca.cn/ip?ip=www.ychr.com 或 http://ip.chinaz.com/?ip=www.ychr.com),却能获得该域名对应的正确公网IP地址。用户想了解这是由于PHP配置问题还是服务器设置原因导致的。
解决方案:
检查本地DNS配置:首先,需要确认服务器的DNS解析配置是否正确。查看 /etc/resolv.conf
文件中的 nameserver
配置,确保其指向了正确的DNS服务器地址,如阿里云公共DNS 240.79.32.68 或 240.79.32.69。
开启single-request-reopen选项:对于CentOS系统,如果DNS请求出现问题,可以考虑在 /etc/resolv.conf
的 options
配置中添加或确认已存在 single-request-reopen
选项,以优化DNS请求处理逻辑。
检查PHP配置:虽然直接关联性不大,但也可以检查PHP的配置文件(如 /etc/php.ini
),看是否有影响DNS解析的特定配置,例如是否启用了某些特定的DNS解析器或有相关缓存设置。
网络与防火墙检查:确认服务器的网络配置和安全组规则没有阻止对外部DNS服务器的访问。同时,检查服务器的防火墙设置,确保未对DNS查询流量进行不当限制。
注意事项:
gethostbyname('www.ychr.com')
测试结果,以确认问题是否解决。总结: 该问题可能是由服务器的DNS配置错误或网络环境限制导致,而非直接的PHP问题。通过检查并调整DNS设置、优化DNS请求处理方式以及验证网络可达性,通常可以解决此类域名解析异常的问题。
通过上述步骤,您可以逐步排查并解决获取到内网IP地址而非正确公网IP地址的问题。