
問題
インターフェースにブロックを追加する方法は知っています。しかし、特定のアドレスを動的に使用する方法がまったくわかりません。
私が欲しいもの
例えば:
- 私のアプリケーションにはブロック fe80::/32 があります。
- ユーザーが資格情報を持つ単一の IPv4 アドレスでサーバーにアクセスできるようにします。
- IPV6でフックを送信します
- すべてのユーザーに特定の送信アドレスを与えたいと思います。
- ユーザーA:
fe80::1
ユーザーB:fe80::2
私にはそのためのブロックが 1 つあるので、このサービスを利用するユーザーは大量にいるでしょう。
私がしたこと
しかし、特定のアドレスにリクエストをバインドすることができず、errno99 が発生することがわかりました。
Linux が必要な機能をサポートしているかどうかをテストするために curl を使用していましたが、サポートできないことがわかりました。
テスト方法:
テストサーバー範囲
サーバ
python3 -m http.server --bind ::
クライアント
curl -vvv -6 "http://[fe80::3]:8000"
curl -vvv -6 "http://[fe80::4]:8000"
これはうまくいきます。サーバーはすべてのアドレスをリッスンしているためです。そのため、どのアドレスでもアクセスできます。
範囲を持つテストクライアント
サーバ
python3 -m http.server --bind ::
クライアント
curl -vvv -6 -i "fe80::2" "http://[fe80::1]:8000"
curl -vvv -6 -i "fe80::3" "http://[fe80::1]:8000"
これは動作しません。Curlはerrno99をスローします。
すべてのIPをインターフェースにバインドする
私はさまざまな IP を持っていますが、各 IP を /32 以下にバインドする必要があるのは大変です。そのため、より良い解決策を探しています。
議論について
削除された議論がいくつかあります。その履歴を見つけることができません。
免責事項:
- 「欲しいもの」に「例えば」と入力しました
- この問題の編集履歴を確認すると、最初に「例:」がここにあることがわかります。
- この問題は、クライアントが要求した機能で発生します。
- 簡単に解決したいので、これ以上話したくないです。
- IPV6 のみの VPS でサービスをホストしているクライアントを満足させなければならないという理由だけで、なぜ解雇されるのかわかりません。
- 私が抱えている問題は、この問題を解決するためにハードウェアまたはソフトウェアで何かを設定すべきかどうかわからないことですが、これはサーバーの問題であり、この原因は話題から外れていると思います。そして、私は解決策を見つけました。
答え1
現実を直視し、そして - 咳払い - RTFM が必要です。
- アドレス ブロック FE80 はリンク ローカルです。これは最後の手段として意図されています。イーサネット セグメント上のすべてのエンドポイントは、IPv6 がアクティブであれば、そこにアドレスを持ちます。おめでとうございます。
- つまり、まず、コンピューターにはランダムにアドレスが割り当てられるため、すべてのアドレスを使用することはできません。これは、MAC アドレスに基づいてランダムに割り当てらます。
- このプレフィックスはリンク ローカルであり、すべてのリンクに自動的に割り当てられるため、ルーティングも行われません。したがって、ユーザーがローカルでない限り、このプレフィックスに送信することはできません。
- 最後に、アーキテクチャ上の大きな愚かな行為をしています。ユーザーを IPv4 アドレスで終了させ (これは良いことで、ユーザーは IPv4 にアクセスできます)、次に IPv6 にアクセスできるようにします (ただし、これは本当に愚かな考えですが)。ただし、ユーザーが IPv6 をアクティブにしていることを前提としています。これはおそらく当てはまりません。IPv4 を取得したら、IPv4 に固執します。IPv6 を取得したら、IPv6 に固執します。ただし、この場合はルーティングがないため無関係です。ただし、一般的にはプロトコルを切り替えるべきではありません。デュアル スタックを想定していますが、これは 99.9% の人には当てはまりません。
答え2
corosync と pacemaker を使用してクラスターを作成し、ブロックからの仮想 IP を持つ 2 つのノードといくつかのサービスを使用することを検討できます。サービスはノード 1 とノード 2 によって使用されるため、IP は仮想になり、ノード 1 とノード 2 はそれを使用できるはずです。