IP ジオロケーション
IP ジオロケーションサービスは、個別に設定できる 2 つのデータソースで構成されています。一方は個別のグローバル IP を識別し、もう一方は地域条件を CIDR へ解決します。セッション、許可リスト、リクエストログと WAF ログ、イベントセンター、スキャナーのブロック、SSH セキュリティ、ゲートウェイの公開範囲に、表示用またはルール用のデータを提供します。
位置情報は判断を補助するためのもので、正確な位置を特定するものではありません。リスクの高い入口で、唯一の認証条件として使用しないでください。
2 種類の API
| API | 用途 |
|---|---|
| IP 位置情報データベース | 個別のグローバル IP を、国、省/市、通信事業者などの情報へ変換します |
| CIDR データベース | 省/市の一覧を提供し、地域および通信事業者の条件をルールで使用する CIDR へ変換します |
2 つの API では、それぞれ公式オンラインサービスまたはカスタムサービスを選択でき、組み合わせて使用することもできます。たとえば、IP 位置情報には公式サービスを使い、CIDR 検索には LAN 内のセルフホストサービスを使えます。
公式オンラインサービス
「公式オンラインサービス」を選択すると、システムは次のサービスを使用します。
- IP 位置情報:
https://ipaddress.fnknock.cn/api/v1 - CIDR データベース:
https://cidr.fnknock.cn/api/v1
公式サービスは最小限の設定で利用でき、地域データも自動的に管理されます。ただし、fn-knock の実行環境からドメイン名を解決し、該当する HTTPS サービスへアクセスできる必要があります。オフラインネットワークや外部アクセスが制限された環境では、カスタムサービスを使用してください。
カスタムサービス
画面で推奨されている互換実装は次のとおりです。
| サービス | プロジェクト | デフォルトの入力値 |
|---|---|---|
| IP 位置情報データベース | go-ipaddress-api | http://127.0.0.1:30661 |
| CIDR データベース | go-cidr-api | http://127.0.0.1:30662 |
システム設定 → IP 位置情報 で「カスタムサービス」を選択し、サービスのルート URL を入力します。アドレスは http:// または https:// で始める必要があり、末尾のスラッシュは保存時に削除されます。
https://example.test のようにドメインのルート URL を入力すると、fn-knock は API パス /api/v1 を自動的に補います。https://example.test/custom/ のようにカスタムパスを含むアドレスを入力した場合は、そのパスの配下にある ip/lookup、provinces などの API へ直接リクエストします。
Docker 内の 127.0.0.1 は、fn-knock コンテナ自身を指します。セルフホストサービスが別のコンテナまたはホスト上にある場合は、同じ Docker ネットワーク内のサービス名、コンテナから到達できるホストアドレス、または明示的に公開したポートを使用してください。
テストと保存
「接続テスト」では現在の入力値が使われるため、先に保存する必要はありません。
- IP 位置情報のテストでは
8.8.8.8を照会し、レスポンスに成功ステータスと位置情報が含まれているかを確認します。 - CIDR のテストでは省の一覧を取得し、続けて通信事業者による絞り込みに対応しているかを確認します。
両方のテストに成功してから保存してください。テストの成功は、API とレスポンス形式が利用できることだけを示します。すべてのアドレスと地域データが完全に揃っていることを保証するものではありません。
地域を選択する際は、China Telecom、China Unicom、China Mobile で CIDR を絞り込めます。セルフホストした CIDR データベースで通信事業者による絞り込みを使用するには、0.1.3 以降が必要です。旧バージョンでは接続テスト時に更新を求めるメッセージが表示されますが、通常の省/市検索は引き続き利用できます。
画面にデータが反映される仕組み
IP 位置情報の照会はバックグラウンドキューで非同期に実行され、結果がキャッシュされます。セッション、ログ、許可リスト、イベントの詳細を初めて開いたときは、最初に「位置情報を取得中...」と表示され、その後で位置情報が追加されることがあります。プライベートアドレスとループバックアドレスでは、グローバル IP の位置情報照会は行われません。
既存の記録に含まれる位置情報は、作成時に保存されたデータか、後からキャッシュによって補完されたデータです。このため、データソースを切り替えても、すべての履歴がすぐに新しい情報へ更新されるとは限りません。
検証と制限事項
保存後、同じグローバル IP を次の画面で確認します。
- リクエストログまたは WAF ログ。
- セッション記録、許可リスト、または共通ブラックリスト。
- イベントセンター。
- SSH ログインログ。
各画面には、一致または近い結果が表示されるはずです。失敗する場合は、ベース URL、プロトコル、DNS、コンテナネットワーク、TLS 証明書、サービスのレスポンス形式、fn-knock のバックエンドログを確認してください。
すべてのリクエストが CDN、リバースプロキシ、プライベートアドレス、またはループバックアドレスとして表示される場合は、位置情報データベースを調整するのではなく、先に実クライアント IPの伝達を修正してください。
位置情報データベースの更新には遅れがあり、IP が通信事業者によって再利用される場合もあります。また、地域ルールによって、旅行中、ローミング中、企業ネットワークの出口を利用するユーザーが誤ってブロックされることもあります。リスクの高いアクセスに対する唯一の条件にはせず、CIDR、ログイン認証、ログの監視と組み合わせて使用してください。
