NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    GA4の内部トラフィック除外に活用 - IP アドレス をCIDR 表記へ変換する

    本記事は NRIネットコム Advent Calendar 2022 19日目の記事です。
    🎁 18日目 ▶▶本記事 ▶▶ 20日目 🎄

    はじめに

    こんにちは。1年目の桒原です。現在絶賛Google アナリティクスの修行中です。本日はGA4の内部トラフィック除外設定に使える、IPアドレスをCIDR表記に変換する方法を紹介します。

    GA4の内部トラフィック除外とCIDR表記の利用

    GAでは特定のIPアドレスを指定して内部トラフィックを除外することができます。自社社員や広告代理店など一般ユーザー以外のアクセスを集計対象から除外することで、より正確に分析ができるようになります。 従来版のユニバーサル アナリティクス(UA)では、正規表現を使うことで複数のIPアドレスをまとめて指定することができました。

    UAでの内部トラフィック除外のフィルタ作成画面

    しかし、GA4では内部トラフィック除外の設定時に正規表現を使うことができません。代わりに下図のように、CIDR表記や行を分けて複数のIPアドレスの条件を設定することができるようになっています。

    GA4での内部トラフィック除外ルールの作成画面

    CIDR表記とは

    CIDR表記とはIPアドレスの範囲を表す方法で、「IPアドレス/サブネットマスク」という形式で表記します。サブネットマスクとは、IPアドレス32ビットのうち何ビット目までがネットワーク部であるかを示すものです。
    以下よりCIDR表記の具体例を示してCIDR表記で記載したIPアドレスの範囲について説明したいと思います。
    (例)172.16.0.4/30 この例ではサブネットマスクが30ビットで、最下位の2ビットがホスト部であることがわかります。
    172.16.0.4/30のうちIPアドレスである172.16.0.4を2進数に変換すると
    10101100.00010000.00000000.00000100
    となります。上記をネットワーク部とホスト部に分けると下図の通りとなります。

    ホスト部の2ビットで表すことができる2進数は「00,01,10,11」の4通りなので、ネットワーク部が同じIPアドレスは下図に記載の4つであることがわかります。
    したがって、CIDR表記172.16.0.4/30 に含まれる IPアドレスは「172.16.0.4、172.16.0.5、172.16.0.6、172.16.0.7」 となります。

    ここまでの説明で、ネットワークの専門知識がない方にとってはIPアドレス・CIDR表記の概念は難しいと感じるのではないでしょうか。そういった方でも、Pythonを使うことでIPアドレスをCIDR表記に簡単かつ正確に変換できます。

    Pythonを使ってIPアドレスをCIDR表記に変換する

    ここからは、Pythonを使ってIPアドレスをCIDR表記に変換する方法を紹介します。
    *今回のコードではnetaddrモジュールを使用します。netaddrモジュールはPythonの標準モジュールではないので、あらかじめインストールする必要があります。インストールする際は下記コードをコマンド上で実行してください。

    pip install netaddr
    

    今回はサンプルのIPアドレスとして「172.16.0.4~172.16.0.7」を使用しています。
    下記Pythonコードを実行することで、IPアドレスの範囲をCIDR表記に変換することができます。
    *こちらのコードは、変換対象のIPアドレスが連続していることが前提で、IPアドレスの範囲によっては複数のCIDR表記が出力される場合がございますのでご注意ください。

    import netaddr
    startip = input('Please enter startip : ')
    endip = input('Please enter endip : ')
    cidrs = netaddr.iprange_to_cidrs(startip, endip)
    print('cidrs : ', cidrs)
    

    コードを実行することで下図のような実行結果が得られました。

    内部トラフィックの設定手順

    CIDR表記を取得できたら、ここからはGA4における内部トラフィック除外の設定方法を紹介します。設定には「内部トラフィックルールの設定」と「データフィルタの設定」の作業が必要です。 まずは、下記Googleの公式ヘルプページを参照して内部トラフィックを識別するためのルールを作成します。

    [GA4] 内部トラフィックの除外 - アナリティクス ヘルプ

    内部トラフィックルールの編集画面につきましては下図を参考に設定してください。

    内部トラフィックルールの設定が終了したら、データフィルタを有効にする作業に移ります。
    管理画面からプロパティ列にある「データ設定」を展開し「データフィルタ」を押下します。

    データフィルタ一覧の画面が表示されたら、データフィルタの名前が「Internal Traffic」のものを選択してください。

    続いて、フィルタの編集画面にて「フィルタの状態」を「有効」に変更した後、右上の保存ボタンを押下します。

    これで設定は終了です!

    なお、データフィルタの設定変更は過去のデータには影響しません。
    データフィルタを有効にしてからは、内部トラフィックに設定したIPアドレスからのアクセスをレポートから確認できなくなるのでご注意ください。
    *有効化した後に「フィルタの状態」を「テスト」や「無効」に戻すことは可能ですが、有効化されている期間中に集計対象から除外されたデータは確認できません。

    Pythonを使ってCIDR表記で指定しているIPアドレスを出力する

    下記コードを実行することでCIDR表記に含まれるIPアドレスを取得することができます。

    from netaddr import IPNetwork
    cidr = input('Please enter cidr : ')
    for ip in IPNetwork(cidr):
      print('%s' % ip)
    

    下図が実行例です。

    おわりに

    今回はPythonを使ってIPアドレスをCIDR表記に変換する方法について解説しました。ネットワークの専門知識が必要となるIPアドレスのCIDR表記への変換を簡単かつ正確にできますし、一度IPアドレスからCIDR表記に変換するためのコードを作ってしまえば、繰り返し使えるところもうれしいポイントだと思います。GA4で複数のIPアドレスを内部トラフィック除外する際に活用していただけると幸いです。