デュアル NIC で FreePBX をルーティングできない

デュアル NIC で FreePBX をルーティングできない

私は FreePBX サーバーを持っていますが、これに 2 番目の実際のインターフェイスを追加する必要があります。つまり、eth0 と eth1 の両方にルーティング可能な IP アドレスがあります。2 番目のアドレスの設定は、Google で簡単に検索したところ、比較的簡単でした。

https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System

  1. /etc/iproute2/rt_tablesを編集し、「200秒」というエントリを追加します。

  2. 「second」というテーブルにルートを追加しました:

    ip route add ip.subnet.on.eth1/27 dev eth1 src ip.address.on.eth1 table second
    ip route add default via router.ip.for.eth1 dev eth1 table second
    

(ここで、「ip.subnet.on.eth1」、「ip.address.on.eth1」、および「router.ip.for.eth1」は必要なアドレスです)

  1. ソースルーティングを介して適切なインターフェースを介してトラフィックを送信するためのルールを追加しました:

    ip rule add from ip.address.on.eth1/32 table second
    ip rule add to ip.address.on.eth1/32 table second
    

これにより、ある程度の成功が得られました。サーバーの 2 番目の IP アドレスにルーティングできるようになり、通常の要求 (icmp、sshd、apache など) にすぐに応答できるようになりました。

しかし、Asterisk に必要な UDP サービスではまったく機能しません。どのクライアントも eth0 の「通常の」IP アドレスには問題なく接続できます。しかし、eth1 の IP に接続しようとすると、クライアントはタイムアウトしてしまいます。

SIP に対して TCP を受け入れるようにサーバーを設定することも試みましたが、ログインできました。しかし、RTP (音声) トラフィックも UDP であるため、最終的には失敗しました。

現在、2 番目の eth1 デバイスがグローバルにルーティング可能である必要がない場合 (つまり、内部 LAN の場合) など、同様の設定が機能します。したがって、PBX に eth0 に 1 つの実際の IP があり、eth1 にプライベート IP がある場合は、単一の統合ルーティング テーブルのみを使用し、すべてが機能します。

SIP サーバーとの間のトラフィックをブロックするファイアウォールが存在しないことは、明確に確認できます。実際、すべての fail2ban やその他の不正行為を回避して、SIP クライアントのサブネットへのすべての TCP および UDP トラフィックを許可するエントリの明示的なセットも取得しています。

PS. 念のために言っておきますが、最終目標は、完全にルーティング可能な実際の IP アドレスを持つ eth0 と eth1 の両方のインターフェイスで Freepbx/asterisk を機能させることです。現時点では、eth0 のみが機能しています。

関連情報