首页 文章

主机名解析失败,包含utf-8字符的主机名出现“未知主机”错误

提问于
浏览
0

我试图从Linux客户端ping主机名“win-2k12r2-addc . 阿伯测阿伯测ad.hai.com” .

我看到DNS请求通过线路传输,主机名以utf-8格式发送,我也从DNS服务器获得了具有正确IP地址的响应 .

但是ping失败并出现以下错误:ping:unknown host win-2k12r2-addc . 阿伯测阿伯测ad.hai.com

如果我在/ etc / hosts中添加一个条目,它可以正常工作
我在/ etc / hosts中有以下条目 .
127.0.0.1 localhost ava-dev
:: 1 localhost
10.141.33.93 win-2k12r2-addc . 阿伯测阿伯测ad.hai.com

/etc/nsswitch.conf文件具有以下主机条目 .

hosts:文件dns

我有点怀疑当我们尝试解析地址时getaddrInfo()调用失败,即它无法正确处理包含unicode字符的主机名的DNS响应 .

以前有人遇到过这个问题吗?或者有没有人尝试从Linux客户端解析unicode主机名?

我怀疑getaddrinfo()的原因是由于以下原因 .
除了ping之外,我尝试将以下ldap命令发送到同一主机,并且由于下面提到的错误而失败
ldapsearch -d 255 -x -h win-2k12r2-addc . 阿伯测阿伯测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(SIMPLE):无法联系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:type A, IN班

1 回答

  • 0

    看起来您正在尝试在DNS系统中使用UTF-8或unicode,而DNS系统确实不喜欢这样 . 它想要ascii(参见RFC 5890,5891,5892,5893 - 但主要是5891) . 转义utf-8字符不会将它们变成所需的ascii编码,称为punycode(以“xn--”为前缀) . 您想使用具有punycode而不是UTF-8的IDN版本:

    ping win-2k12r2-addc.xn--ad-tl3ca3569aba8944eca.hai.com

相关问题