複数のWebサイトに個別のループバックアドレスを設定する開発環境をセットアップしています。
たとえば、私は次のとおりです。
127.0.0.1 www.example.com
127.0.0.2 foo.example.com
127.0.0.3 bar.example.com
127.0.0.4 waffles.example.com
IPv6の同等のソリューションを希望します。
:: 1をループバックアドレスとして使用できることはすでに知っていますが、:: 2、:: 3などは機能しないようです。
IPv6に他のループバックアドレスはありますか?複数の一意のループバックアドレスを設定する方法はありますか?
技術的には:: 2、:: 3などは:: 0.0.0.0/96、「ipv4互換ipv6アドレス」の範囲の一部です。それは非推奨ですが、おそらくその範囲を使用したくないでしょう。
ラボ環境では、一意のローカルアドレス指定を使用します。 https://www.ultratools.com/tools/rangeGenerator に移動して、プレフィックスを生成します。次に、そのプレフィックスから必要なアドレスを選択して、それらをループバックインターフェイスに割り当てることができます。
ループバックアドレスは:: 1/128です。サブネットの幅が1つのホストのみに制限されていることに注意してください。サブネットマスクをより広いものに変更し、ルーティングテーブルを確認します。または、リンクローカルアドレスを使用します。
RFC 419 アドレスを使用することをお勧めします。 RFC 4193では、バイト値fd
に続いて5randomバイトを取ることにより、ローカルで使用するために独自の/ 48を構築できます。最初の48ビットの後に適切と思われるものは何でも置くことができるため、/ 64が必要な場合は、Linuxシステムの例のように、fd
の後にランダムな7バイトを続けることができます。
ip -6 route add to local fd66:29e9:f422:8dfe::/64 dev lo
RFC 4193を使用すると、以前の回答に比べて、RFCに違反していないという利点があり、インターフェイス識別子なしでアドレスを使用できます。
以前の回答で述べた各範囲は、さまざまな目的のために予約された範囲、または使用されるたびにインターフェイス識別子を必要とするリンクローカルアドレスを使用しています。
期限切れの draft が存在し、範囲1::/32
は、要求しているように追加のループバックアドレスに割り当てられます。ただし、そのドラフトは数年前に期限切れになり、そのような allocation が作成されなかったため、1::/32
このため。
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ Sudo ip route add local ::/104 dev lo
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::2
PING ::2(::2) 56 data bytes
64 bytes from ::2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from ::2: icmp_seq=2 ttl=64 time=0.128 ms
^C
--- ::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.105/0.128/0.024 ms
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::3
PING ::3(::3) 56 data bytes
64 bytes from ::3: icmp_seq=1 ttl=64 time=0.148 ms
64 bytes from ::3: icmp_seq=2 ttl=64 time=0.141 ms
64 bytes from ::3: icmp_seq=3 ttl=64 time=0.142 ms
from アドレスの(大きな)ブロックをインターフェイスにバインドできますか?
それは私のために働いた唯一のものです。もちろん、Linux固有です。
nota bene:これは、将来のある時点で0.0.0.0/8アドレスと競合する可能性があるため、::127.0.0.0/104
はおそらくより良い選択でしょう。
RFC proporsal と呼ばれるIPv6のより大きなループバックプレフィックスがあり、1::/32
はlocalhostネットワークとして。ただし、提案は承認されず、2013年にすでに期限が切れています。
リンクローカルアドレス指定を使用することが唯一の有効なオプションのようです。ここでほとんどの提案が無視しているのは、IPv6プレフィックスがスコープを宣言するであるという事実であり、私はおそらくプライベートアドレッシングをグローバルスコープにしたくありません。
Linuxの場合:
$ Sudo ip -6 address add fe80::1/64 dev lo
$ Sudo ip -6 address add fe80::2/64 dev lo
$ Sudo ip -6 address add fe80::3/64 dev lo
また、これらのアドレスを参照する場合はインターフェースを指定してください。 netcatでのテスト:
$ nc -l -p 10001 fe80::1%lo
$ nc fe80::1%lo 10001
正しいスコープの確認:
$ ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 fe80::1/64 scope link
valid_lft forever preferred_lft forever
それでも、それにバインドするためにすべてのIPを追加しなければならないというのは、あまりエレガントではないようです。 127.0.0.0/8では、事前にアドレスを割り当てることなく、任意のアドレスにバインドできます。