/etc/hostsのIPv6スコープID

/etc/hostsのIPv6スコープID

私はローカルネットワークの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名前解決クエリを実行するためのコマンドとwrapresolvelibc検証ルーチンを使用してプログラムを実行するためのコマンドを提供します。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ライブラリの修正

これは私の長期的なやり方のリストにあり、それらのいくつかを作業している他の人と連絡しています。より多くのオプションがあり、後でこの回答でより多くの情報を入力します。

おすすめ記事