私はローカルネットワークのIPv6アドレスの静的ホスト名を設定したいと思います。しかし、/etc/hosts
ゾーンIDを許可していないようです。ゾーン ID を IPv6 アドレスに追加すると、ホストが定義されていないかのように動作します。ゾーンIDがないと、アプリケーションはホストに接続できません。
どうすればこの問題を解決できますか?それとも特別なゾーンID構文がありますか/etc/hosts
?
ベストアンサー1
これは限界ですGNU Cライブラリ(他の人もいるかもしれません)。プラグインAPIがあります範囲ID(またはifindex / ifname)を確実に渡すこともできません。。それからnss_files
私が知っている限り、構文がまだ準備されていない実際のプラグインがあります。
私は間違いなくこれを助けることができ、それに応じて答えを修正することができます。まず、オープンソースプロジェクトの形でglibc名前解決APIをやや実験的に置き換える作業を進めています。ネットワーク分析。何をしているのかを知っていれば、実験や日常業務に使用できます。また、/ etc / hostsはIPv6スコープIDをサポートしていないようですが、それをTODOリストに追加します。第二に、glibcの基本的なサポートのためのパッチを提供することができます。ローカルで適用するか、プロジェクトでそれに対応できることを願っています。
理論的には、この機能を提供できるマルチキャストDNSなどのプロトコルがありますが、nss_mdnsでは実装されていません。同じ問題でブロックされました。
netresolveを使用したソリューション
だから私は私がそうしたことに気づきました。ネットワーク分析しかし、私はしなければなりません。いくつかのマイナーなバグ修正本当に効果があるようにしてください。私が試してみてくれて、興味を持ってくれてありがとう。
gitでプロジェクトをビルドする必要があります。 ㅏGentooリアルタイムebuildそしてアーチAURバッグ供給。依存性チェックはまだ完璧ではありません。このパッケージは、netresolve
名前解決クエリを実行するためのコマンドとwrapresolve
libc検証ルーチンを使用してプログラムを実行するためのコマンドを提供します。libnetresolve。環境変数を使用してこれを行うので、LD_PRELOAD
実行などを介してフルシェルを実行することもできます。wrapresolve bash
構成
/etc/ホスト:
fe80::2677:3ff:fe40:db38%wlan0 test-link-local-with-scope-id
注:例で報告されているように、パーセント記号とインターフェイス名(ifname)またはインターフェイスインデックス(ifindex)を追加して、標準的な方法で範囲IDを持つリンクローカルアドレスを作成できますip link
。
netresolveを使用したテスト
# netresolve --node testxxx
response netresolve 0.0.1
name testxxx
ip 1:2:3:4:5:6:7:8%eth0 any any 0 0 0 0
secure
Wrapresolveとgetaddrinfoを使用したテスト
netresolveパッケージgetaddrinfo()
もgetaddrinfo
。
# wrapresolve getaddrinfo test-link-local-with-scope-id
query:
nodename = test-link-local-with-scope-id
servname = (null)
status = 0
#0:
family = 10
addrlen = 28
address:
family = 10
port = 0
flowinfo = 0x00000000
address = 0xfe80000000000000267703fffe40db38
scope_id = 3
nodename = test-link-local-with-scope-id
Wrapresolveとgetentを使用したテスト
これは、システムにすでに存在するツールを使用した最初のテストです。それ以外の場合は、以前のテストと非常によく似ています。
# wrapresolve getent ahosts test-link-local-with-scope-id
fe80::2677:3ff:fe40:db38 0 test-link-local-with-scope-id
Wrapresolveとping6を使用したテスト
# wrapresolve ping6 test-link-local-with-scope-id
PING test-link-local-with-scope-id(fe80::2677:3ff:fe40:db38) 56 data bytes
64 bytes from fe80::2677:3ff:fe40:db38: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from fe80::2677:3ff:fe40:db38: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from fe80::2677:3ff:fe40:db38: icmp_seq=3 ttl=64 time=0.072 ms
64 bytes from fe80::2677:3ff:fe40:db38: icmp_seq=4 ttl=64 time=0.078 ms
^C
注:rootとしてping
実行する必要がありますping6
。その操作には追加の権限が必要です。水の根したがって、Wrappesolveでは正しく機能しません。
WrapresolveとSSHによるテスト
# wrapresolve ssh test-link-local-with-scope-id
# logout
などのツールを使用してテストすることもできますcurl
。これは、権限のないユーザーにも適用されます。
マルチキャストDNS
私のnetresolve ToDoリストにmDNSがあります。おそらく、Avahiとsystemd-resolvedを介してDNS、LLMNR、およびmDNSサービスを同時に提供できます。
GNU Cライブラリの修正
これは私の長期的なやり方のリストにあり、それらのいくつかを作業している他の人と連絡しています。より多くのオプションがあり、後でこの回答でより多くの情報を入力します。