問題タブ [idn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1031 参照

utf-8 - ホスト名の解決が、utf-8 文字を含むホスト名の「不明なホスト」エラーで失敗する

Linux クライアントからホスト名「win-2k12r2-addc.阿伯测阿伯测ad.hai.com」に ping を実行しようとしています。

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 ファイルには、ホスト用の次のエントリがあります。
++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++
ホスト: ファイル 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: タイプ A,クラスIN