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

Anti-DDoS:TOAカーネルモジュールをインストールして、要求の送信元IPアドレスを取得します。

最終更新日:May 22, 2024

Elastic Compute Service (ECS) インスタンスまたはデータセンターのサーバーをオリジンサーバーとして使用し、保護のためにサービスのポートをAnti-DDoSプロキシに追加すると、サービスのリクエストのトラフィックはAnti-DDoSプロキシによってスクラブされ、オリジンサーバーに転送されます。 オリジンサーバーは、リクエストの発信IPアドレスを直接取得できません。 送信元IPアドレスを取得するには、TCP Option Address (TOA) カーネルモジュールをオリジンサーバーにインストールします。 このトピックでは、TOAカーネルモジュールをインストールする方法について説明します。

シナリオ

シナリオ

説明

Anti-DDoS Proxy - ECSインスタンス

配信元サーバーはECSインスタンスにデプロイされています。 トラフィックはAnti-DDoS Proxyによってスクラブされ、ECSインスタンスにデプロイされている配信元サーバーに転送されます。

Anti-DDoS Proxy - Layer 4 Server Load Balancer (SLB) インスタンス-ECSインスタンス

配信元サーバーはECSインスタンスにデプロイされています。 トラフィックはAnti-DDoS Proxyによってスクラブされます。 次に、レイヤー4 SLBインスタンスは、ECSインスタンスにデプロイされているオリジンサーバーにトラフィックを転送します。

データセンターのAnti-DDoS Proxy - Server

オリジンサーバーはデータセンターにデプロイされています。 リクエストは、まずAnti-DDoS Proxyによってスクラブされ、データセンターにデプロイされている配信元サーバーに転送されます。

使用上の注意

  • このトピックで説明するメソッドは、Linuxカーネルベースのオペレーティングシステムにのみ適用されます。

  • このメソッドは、ポートを使用してAnti-DDoS Proxyに追加されたTCPベースのWebサイト以外のサービスでのみ使用できます。 UDPベースのサービスはサポートされていません。 Webサイトサービスからリクエストの送信元IPアドレスを取得する方法の詳細については、「リクエストの送信元IPアドレスの取得」をご参照ください。

  • サーバーがTOAソースコードのダウンロードリンクにアクセスできることを確認します。

  • root以外のユーザーの場合は、sudo権限が必要です。

  • このトピックで説明する操作をテスト環境で実行し、操作が環境の安定性に影響を与えるかどうかを確認することをお勧めします。 操作が環境の安定性に影響しない場合は、運用環境で操作を実行します。

  • オペレーティングシステムにTOAカーネルモジュールが組み込まれている場合は、事前にモジュールをバックアップすることをお勧めします。 再起動に失敗した場合は、元のTOAカーネルモジュールに切り替えることで、オペレーティングシステムを復元できます。

  • TOAカーネルモジュールは、要求内のデータを変換するために使用され、バイパスモードで展開されます。 このモジュールは、ネットワークパフォーマンスへの影響が最小限です。

  • Linuxカーネルがアップグレードされた後、元のTOAカーネルモジュールはアップグレードされたLinuxカーネルと一致しません。 Linuxカーネルをアップグレードするたびに、TOAカーネルモジュールを再コンパイルしてインストールする必要があります。

方法1: modprobeコマンドを実行してVTOAカーネルモジュールを読み込む

この方法は、Alibaba Cloud Linux 3にのみ適しています。

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

    #modprobe vtoa
  2. VTOAモジュールがロードされているかどうかを確認します。

    #lsmod | grep vtoa
  3. オペレーティングシステムの起動時に自動的にロードされるようにVTOAカーネルモジュールを設定します。

    1. /etc/sysconfig/modules/vtoa.mo dulesファイルを作成し、次の内容をファイルに追加します。

      #!/bin/bash
      modprobe vtoa > /dev/null 2>&1 
    2. 次のコマンドを実行して、vtoa.mo dulesファイルに実行権限を付与します。

      sudo chmod + x /etc/sysconfig/modules/vtoa.mo dules

方法2: ソースコードを使用してTOAカーネルモジュールをロードする

  1. TOAソースコードダウンロードリンクにアクセスして、ソースコードパッケージをダウンロードします。

    • カーネルバージョンが2.xの場合、toa_kernel2.xファイルを使用します。

    • カーネルバージョンが3.xの場合、toa_kernel3.xファイルを使用します。

    • カーネルバージョンが4.xまたは5.xの場合、toa_kernel_commonファイルを使用します。

  2. コンパイル環境 (gcc、kernel-headers、kernel-devel) をインストールします。

    • CentOS

      #yum install gcc kernel-headers kernel-devel -y
    • UbuntuまたはDebian

      #apt-get install gcc linux-headers-$(uname -r) -y
  3. TOAカーネルモジュールをコンパイルします。

    ソースコードパッケージを解凍し、cdコマンドを実行してフォルダーを開き、ソースコードファイルをコンパイルします。 コンパイルプロセス中に警告メッセージやエラーメッセージが表示されない場合、コンパイルは成功です。 カレントディレクトリにtoa.koファイルが生成されているか確認してください。

    // ソースコードパッケージのパス。 この例では。 toa_kernel3.xファイルのパスが使用されます。
    # cd toa_kernel3.x /
    // コンパイルを実行します。
    # メイク 
    説明

    TOAカーネルモジュールを別のオペレーティングシステムにロードする場合は、toa.koファイルを別のサーバーにコピーし、次の手順を実行してTOAカーネルモジュールをロードします。

  4. 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 
  5. TOAカーネルモジュールがロードされているかどうかを確認します。

    # lsmod | grep toa
  6. オペレーティングシステムの起動時に自動的にロードされるようにTOAカーネルモジュールを設定します。

    • CentOS

      1. /etc/sysconfig/modules/toa.mo dulesファイルを作成し、次の内容をファイルに追加します。

        #!/bin/bash
        [ -e /lib/modules/'uname -r'/kernel/net/netfilter/ipvs/toa.ko ] ;
        その後、insmod /lib/modules/'uname -r'/kernel/net/netfilter/ipvs/toa.ko > /dev/null 2>&1
        fi 
      2. 次のコマンドを実行して、toa.mo dulesファイルに実行権限を付与します。

        sudo chmod + x /etc/sysconfig/modules/toa.mo dules
    • UbuntuまたはDebian

      /etc/modules-load.d/toa.confファイルを作成し、次の内容をファイルに追加します。

      トア
  7. sudo rebootコマンドを実行して、オペレーティングシステムを再起動します。

方法3: RPMパッケージマネージャ (RPM) を使用してTOAカーネルモジュールを読み込む

サポートされるオペレーティングシステム:

  • Redhat Linux

  • CentOS 6.x

  • CentOS 7.x

  1. サーバーのオペレーティングシステムに基づいて、TOAカーネルモジュールのインストールファイルをダウンロードします。

  2. 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カーネルモジュールのバージョンよりも新しい場合は、rpmコマンドに -- forceパラメーターを追加して、カーネルを強制的にインストールします。

  3. オペレーティングシステムの起動時に自動的にロードされるようにTOAカーネルモジュールを設定します。

    1. /etc/sysconfig/modules/toa.mo dulesファイルを作成し、次の内容をファイルに追加します。

      • CentOS 7.x:

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

        #!/bin/bash
        [ -e /lib/modules/'uname -r'/kernel/net/toa/toa.ko ] ;
        その後、modprobe toa > /dev/null 2>&1
        fi 
    2. 次のコマンドを実行して、toa.mo dulesファイルに実行権限を付与します。

      sudo chmod + x /etc/sysconfig/modules/toa.mo dules
  4. rebootコマンドを実行して、オペレーティングシステムを再起動します。

結果

TOAカーネルモジュールがインストールされた後、サーバは、要求の発信IPアドレスを取得することができる。

サーバーがリクエストの送信元IPアドレスを取得できない場合は、lsmod | grep toaコマンドを実行して、TOAカーネルモジュールがロードされているかどうかを確認することを推奨します。 TOAモジュールがロードされていない場合は、modprobe toaコマンドを実行してモジュールを手動でロードします。 TOAカーネルモジュールがロードされた後、サーバーアクセスログを表示し、オリジンサーバーがリクエストの送信元IPアドレスを取得できるかどうかをテストできます。

参照

  • TOAカーネルモジュールを一時的に無効にするには、rmmod path/TOA kernel module nameコマンドを実行します。

    rmmod toa.ko
  • TOAカーネルモジュールをアンインストールします。

    rmmod toa
  • TOAカーネルモジュールがアンインストールされているかどうかを確認します。 「TOAアンロード」メッセージが表示されると、TOAカーネルモジュールがアンインストールされます。

    dmesg -T