我正在尝试从阿伯测阿伯测ad.hai.com客户端ping主机名“win-2k12r2-addc.linux”。
我看到DNS请求通过线路,主机名以utf-8格式发送,我从DNS服务器获得响应,也使用正确的IP地址。
但是ping失败,并出现以下错误: ping:未知主机win-2k12r2-addc。阿伯测阿伯测ad.hai.com
如果我在/etc/hosts中添加一个条目,它就能正常工作
当/etc/hosts正常工作时,我在/etc/hosts中有以下条目。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
127.0.0.1本地主机ava-dev
::1本地主机
10.141.33.93 win-2k12r2-add.阿伯测阿伯测ad.hai.com
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/nsswitch.conf文件包含以下主机条目。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
主机:文件dns
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我怀疑当我们尝试解析地址时,getaddrInfo()调用会失败,即它不能正确地处理包含unicode字符的主机名的DNS响应。
以前有没有人遇到过这个问题?或者,是否有人尝试过从linux客户端解析unicode主机名?
我怀疑getaddrinfo()的原因有以下几点。
除了ping之外,我还在同一台主机上尝试执行以下ldap命令,但失败了,并出现了下面提到的错误
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ldapsearch -d 255 -x -h win-2k12r2-add.阿伯测阿伯测ad.hai.com
ldap_create
ldap_url_parse_ext(ldap://win-2k12r2-addc.%E9%98%BF%E4%BC%AF%E6%B5%8B%E9%98%BF%E4%BC%AF%E6%B5%8Bad.hai.com)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection %1 1%0
ldap_int_open_connection
ldap_connect_to_host: TCP win-2k12r2-addc。阿伯测阿伯测ad.hai.com:389
ldap_connect_to_host: getaddrinfo失败:名称或服务未知
ldap_err2string
Ldap_sasl_bind(简单):无法联系LDAP服务器(-1)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在这两种场景(ping / ldap)中,我看到DNS查询请求发往DNS服务器,DNS服务器向linux客户机发回正确的响应。以下是DNS查询中发送的主机名的值
win-2k12r2-addc.\351\230\277\344\274\257\346\265\213\351\230\277\344\274\257\346\265\213ad.hai.com:类型A,类IN
发布于 2017-12-10 09:59:42
看起来您正在尝试在DNS系统中使用UTF-8或unicode,而DNS系统确实不喜欢这样。它需要ascii (参见RFC5890,5891,5892,5893 --但主要是5891)。转义utf-8字符不会将它们转换为所需的ascii编码,称为punycode (前缀为"xn--")。您希望使用包含punycode的IDN版本,而不是UTF-8:
ping win-2k12r2-addc.xn--ad-tl3ca3569aba8944eca.hai.com
https://stackoverflow.com/questions/47566382
复制相似问题