すべてのプロダクト
Search
ドキュメントセンター

Anti-DDoS:TOA カーネルモジュールのインストール:リクエストの送信元 IP アドレスを取得する

最終更新日:Apr 01, 2026

TCP サービスを Anti-DDoS Pro または Anti-DDoS Premium で保護するために Anti-DDoS Proxy に追加すると、Anti-DDoS Proxy が着信トラフィックをフィルタリングし、ご利用のオリジンサーバーに転送します。ただし、プロキシがクライアントとご利用のサーバーの間に位置するため、オリジンサーバーでは実際のクライアント IP アドレスではなく、プロキシの IP アドレスが表示されます。送信元 IP アドレスへの可視性を復元するには、オリジンサーバーに TCP Option Address (TOA) カーネルモジュールをインストールしてください。

本トピックでは、Linux ベースのオリジンサーバーについて説明します。インストール方法は 3 種類あり、ご利用のオペレーティングシステムに合った方法を選択してください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • サポート対象の Linux ディストリビューションを実行しているオリジンサーバー

  • ポートを使用して Anti-DDoS Proxy に追加された TCP ベースの非 Web サービス(UDP ベースのサービスはサポートされていません)

  • インストールパッケージをダウンロードするための、オリジンサーバーからのインターネットアクセス

  • root ユーザーでない場合の sudo 権限

Web サービスについては、「リクエストの送信元 IP アドレスを取得する」をご参照ください。

サポート対象のシナリオ

シナリオ説明
Anti-DDoS Proxy — ECS インスタンスオリジンサーバーが Elastic Compute Service (ECS) インスタンス上にデプロイされています。トラフィックは Anti-DDoS Proxy によってフィルタリングされ、ECS インスタンスに転送されます。
Anti-DDoS Proxy — レイヤー 4 Server Load Balancer (SLB) インスタンス — ECS インスタンスオリジンサーバーが ECS インスタンス上にデプロイされています。トラフィックは Anti-DDoS Proxy によってフィルタリングされた後、レイヤー 4 SLB インスタンスによって ECS インスタンスに転送されます。
Anti-DDoS Proxy — お客様のデータセンター内のサーバーオリジンサーバーがお客様のデータセンター内にデプロイされています。トラフィックは Anti-DDoS Proxy によってフィルタリングされ、データセンター内のサーバーに転送されます。

インストール方法の選択

まず、本番環境ではない環境でインストールをテストしてください。環境が安定していることを確認したうえで、本番環境に適用してください。

方法サポート対象のオペレーティングシステム使用タイミング
方法 1:modprobe を使用して VTOA モジュールをロードAlibaba Cloud Linux 3 のみ最もシンプルな方法。コンパイル不要
方法 2:ソースコードからコンパイルCentOS、Ubuntu、Debian およびその他の Linux ディストリビューション方法 1 および方法 3 が適用できない場合に使用
方法 3:RPM Package Manager (RPM) を使用してインストールRed Hat Linux、CentOS 6.x、CentOS 7.xRPM ベースのディストリビューションに推奨

方法 1:modprobe を使用して VTOA カーネルモジュールをロード

この方法は、Alibaba Cloud Linux 3 のみに適用されます。

  1. (任意)組み込みの TOA カーネルモジュールをバックアップします。再起動時に障害が発生した場合、元のカーネルに戻すことでオペレーティングシステムを復元できます。

  2. VTOA カーネルモジュールをロードします。

    modprobe vtoa
  3. VTOA モジュールが正しくロードされているかを確認します。

    lsmod | grep vtoa
  4. VTOA モジュールを起動時に自動的にロードするように設定します。

    1. 以下の内容で /etc/sysconfig/modules/vtoa.modules を作成します:``bash #!/bin/bash modprobe vtoa > /dev/null 2>&1 ``

    2. ファイルに実行権限を付与します。``bash sudo chmod +x /etc/sysconfig/modules/vtoa.modules ``

方法 2:ソースコードから TOA カーネルモジュールをコンパイルおよびロード

この方法は、CentOS、Ubuntu、Debian を含むほとんどの Linux ディストリビューションで動作します。

  1. (任意)組み込みの TOA カーネルモジュールをバックアップします。再起動時に障害が発生した場合、元のカーネルに戻すことでオペレーティングシステムを復元できます。

  2. TOA ソースコードパッケージ をダウンロードします。このファイルをダウンロードするには、サーバーがインターネットに接続している必要があります。カーネルバージョンに応じて、適切なソースファイルを選択してください。

    カーネルバージョンソースファイル
    2.xtoa_kernel2.x
    3.xtoa_kernel3.x
    4.x または 5.xtoa_kernel_common
  3. コンパイル環境(gcc、kernel-headers、kernel-devel)をインストールします。

    • CentOS:``bash yum install gcc kernel-headers kernel-devel -y ``

    • Ubuntu または Debian:``bash apt-get install gcc linux-headers-$(uname -r) -y ``

    重要

    上記コマンドが Debian で失敗した場合は、事前にビルド済みのヘッダーパッケージを手動でダウンロードしてください。次の例では、Debian 11.11(64 ビット)、カーネルバージョン 5.10.0-33-amd64 を使用しています。

    1. Debian_11.11_5.10.0-33-amd64.zip をダウンロードします。

    2. 以下の順序でパッケージをインストールします。

      sudo dpkg -i linux-headers-5.10.0-33-common_5.10.226-1_all.deb
      sudo dpkg -i linux-kbuild-5.10_5.10.237-1_amd64.deb
      sudo dpkg -i linux-compiler-gcc-10-x86_5.10.237-1_amd64.deb
      sudo dpkg -i linux-headers-5.10.0-33-amd64_5.10.226-1_amd64.deb
  4. TOA カーネルモジュールをコンパイルします。ソースコードパッケージを展開し、該当するフォルダに移動して make コマンドを実行します。警告やエラーが表示されなければ、コンパイルは成功です。toa.ko ファイルが現在のディレクトリに存在することを確認してください。

    別のサーバーに TOA カーネルモジュールをロードする場合は、toa.ko ファイルをそのサーバーにコピーし、残りの手順を実行してください。
    # カーネルバージョンに一致するフォルダに移動します:
    # カーネル 2.x:cd toa_kernel2.x/
    # カーネル 3.x:cd toa_kernel3.x/
    # カーネル 4.x または 5.x:cd toa_kernel_common/
    cd toa_kernel3.x/
    make
  5. TOA カーネルモジュールをロードします。

    mv toa.ko /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko && depmod
    insmod /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko
  6. TOA モジュールが正しくロードされているかを確認します。

    lsmod | grep toa
  7. TOA モジュールを起動時に自動的にロードするように設定します。

    • CentOS:

      1. 以下の内容で /etc/sysconfig/modules/toa.modules を作成します:``bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/netfilter/ipvs/toa.ko ] ; then insmod /lib/modules/uname -r/kernel/net/netfilter/ipvs/toa.ko > /dev/null 2>&1 fi ``

      2. ファイルに実行権限を付与します。``bash sudo chmod +x /etc/sysconfig/modules/toa.modules ``

    • Ubuntu または Debian:/etc/modules-load.d/toa.conf を以下の内容で作成します:`` toa ``

  8. オペレーティングシステムを再起動します。

    sudo reboot

方法 3:RPM を使用して TOA カーネルモジュールをインストール

サポート対象のオペレーティングシステム:

  • Red Hat Linux

  • CentOS 6.x

  • CentOS 7.x

  1. (任意)組み込みの TOA カーネルモジュールをバックアップします。再起動時に障害が発生した場合、元のカーネルに戻すことでオペレーティングシステムを復元できます。

  2. ご利用のオペレーティングシステムに対応するインストールファイルをダウンロードします。このファイルをダウンロードするには、サーバーがインターネットに接続している必要があります。

  3. TOA カーネルモジュールをインストールします。

    • CentOS 7.x — ダウンロードしたファイルが格納されているディレクトリに移動し、以下のコマンドを実行します。

      sudo yum localinstall kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
      説明

      注意: 依存関係の問題を回避するため、yum localinstall を使用してください。代わりに sudo rpm -ivh kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm を実行しても構いません。

    • CentOS 6.x または Red Hat Enterprise Linux — ダウンロードしたファイルが格納されているディレクトリに移動し、以下のコマンドを実行します。

      sudo rpm -ivh kernel-firmware-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpm
      sudo rpm -ivh kernel-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpm
      説明

      注意:

      • kernel-firmware のバージョンがすでに 2.6.32-696.13.2.el6.centos.plus.toa 以降である場合は、2 番目のコマンドのみ実行してください。

      • 依存関係のエラーが発生した場合は、--nodeps オプションを rpm コマンドに追加してください。

      • インストール済みのカーネルバージョンが TOA モジュールのバージョンより新しい場合は、--force オプションを指定して強制的にインストールしてください。

  4. TOA モジュールを起動時に自動的にロードするように設定します。

    1. OS バージョンに応じた内容で /etc/sysconfig/modules/toa.modules を作成します。

      • CentOS 7.x:``bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/toa/toa.ko.xz ] ; then modprobe toa > /dev/null 2>&1 fi ``

      • CentOS 6.x または Red Hat Enterprise Linux:``bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/toa/toa.ko ] ; then modprobe toa > /dev/null 2>&1 fi ``

    2. ファイルに実行権限を付与します。``bash sudo chmod +x /etc/sysconfig/modules/toa.modules ``

  5. オペレーティングシステムを再起動します。

    reboot

結果の確認

TOA カーネルモジュールをインストールした後、サーバーはリクエストの送信元 IP アドレスを取得できるようになります。

サーバーがリクエストの送信元 IP アドレスを取得できない場合は、以下のコマンドを実行して TOA カーネルモジュールがロードされているかを確認してください。

lsmod | grep toa

TOA モジュールがロードされていない場合は、以下のコマンドを実行して手動でロードしてください。

modprobe toa

TOA カーネルモジュールがロードされた後は、サーバーのアクセスログを確認して、オリジンサーバーがリクエストの送信元 IP アドレスを取得できていることを検証してください。

TOA カーネルモジュールの管理

  • TOA カーネルモジュールを一時的に無効化するには:

    rmmod toa.ko
  • TOA カーネルモジュールをアンインストールするには:

    rmmod toa
  • TOA カーネルモジュールが正常にアンインストールされたかを確認します。dmesg の出力に「TOA unloaded」と表示されれば、正常に削除されています。

    dmesg -T

よくある質問

TOA カーネルモジュールはネットワークパフォーマンスにどのような影響を与えますか?

TOA モジュールはバイパスモードで実行されるため、ネットワークパフォーマンスへの影響は最小限です。

Linux カーネルをアップグレードした後に送信元 IP アドレスが取得できないのはなぜですか?

カーネルをアップグレードすると、既存の TOA モジュールは新しいカーネルと互換性がなくなります。Linux カーネルをアップグレードするたびに、TOA モジュールを再コンパイルおよび再インストールする必要があります。

次のステップ

リクエストの送信元 IP アドレスを取得する — Anti-DDoS Pro または Anti-DDoS Premium で保護される Web サービス向け