Linux サーバーで複数のイーサネット接続を構成する

Linux サーバーで複数のイーサネット接続を構成する

私は次のようなトポロジを持っています

                                                                                        .───────────────.        
   ┌──────────────────┐                                                             _.─'                 `──.    
   │                  │                                                          ,─'                         '─. 
   │    ISP Router    │ Dynamic IP                                              ;                               :
   │     with NAT     ├─────────────────────────────────────────────────────────:           Internet            ;
   │                  │                                                          ╲                             ╱ 
   └─────────┬────────┘                                                           '─.                       ,─'  
             │                                                                       `──.               _.─'     
             │  10.0.0.1                                                                 `──────┬──────'         
             │                                                                                  │                
      .──────┴────.                                                                       .─────┴─────.          
   ,─'             '─.                   ┌─────────────────────────┐                   ,─'             '─.       
 ,'                   `.                 │                         │                 ,'                   `.     
;          LAN          :  Static DHCP┌──┴───┐                  ┌──┴───┐ Static IP  ;      Public Net       :    
:                       ;─────────────┤ eth1 │     My Server    │ eth0 ├────────────:                       ;    
 ╲     10.0.0.0/24     ╱     10.0.0.5 └──┬───┘                  └──┬───┘  1.2.3.5    ╲     1.2.3.4/20      ╱     
  `.                 ,'                  │       Debian Buster     │    mydomain.com  `.                 ,'      
    '─.           ,─'                    │                         │                    '─.           ,─'        
       `─────────'                       └─────────────────────────┘                       `─────────'

歴史的な理由により、私の ISP は静的 IP を提供するために別のネットワークを使用しています。つまり、インターネットに直接公開されている特別な接続にサーバーを直接接続する必要があります (図ではeth0IP を使用しています1.2.3.5)。

ただし、私はこの同じサーバーを自宅で NAS として使用しており、これはまったく別のネットワークであるため、別のインターフェイスを使用して接続しeth1、アドレスを使用して静的 DHCP 割り当てを作成します10.0.0.5。これにより、ホーム ネットワーク内の他のデバイスがサーバーを見つけて、ネットワーク マウントにアクセスできるようになります。

最後に、私のドメイン (この例では ) の DNS レコードが を指していmydomain.comます1.2.3.5

いくつかの問題に直面しています:

  • LAN からアクセスしようとすると、mydomain.com機能しません。これは、サーバーがインターフェイスからパケットを取得してeth0応答し、eth1他のデバイスが別の IP からの応答であるため応答をドロップしているためだと考えています。
  • 起動時に、サーバーは を1.2.3.4インターネット トラフィックの送信先ネットワークとして選択し、 経由で外部アクセスが機能するようにする必要がありますmydomain.com。ただし、 とeth0はどちらもそれぞれのゲートウェイ経由でインターネットにアクセスするため、 が起動してデフォルト ゲートウェイとしてeth1選択され、アクセスが機能しないことがあります。これは、 経由で入力されるトラフィックが 経由で送信される場合に類似した問題であると思われます。10.0.0.1mydomain.cometh0eth1

基本的なネットワークのことはよく知っていますが、このようにサーバーを複数のネットワークに同時に接続する経験はありません。理想的には、サーバーを次のように構成したいと思います。

  • すべてのインターネットトラフィックはeth0
  • 入力からのすべてのトラフィックeth0は、eth0
  • 入力からのすべてのトラフィックeth1は、eth1

私のサーバーは Debian を実行しています。ご協力いただければ幸いです。

編集: eth1 ゲートウェイを無効にして少し試してみたところ、tcpdumpトラフィックが eth0 から入って eth1 から出ていることを確認できました。問題は、ISP がエンドポイントに向かうトラフィックを NAT しておらず1.2.3.5、サーバーが10.0.0.Xアドレスをインターフェース上にあるものとして識別していることですeth1

答え1

これは、ソース ベース ルーティングまたはポリシー ルーティングで解決できるルーティングの問題です。これには、ソース アドレスごとに 1 つずつ、2 つのルーティング テーブルが関係します。

見るhttp://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html詳細については。

答え2

これは、サーバーがインターフェイス eth0 からパケットを取得し、eth1 を介して応答しているためであると考えられます。

いいえ。NAT を備えた ISP ルーターは、クライアントの 10.0.0.0 アドレスを ISP ダイナミック アドレスに NAT するため、サーバーは内部アドレスではなくそのアドレスに応答することになります。FTP などの例外は、内部 IP アドレスを接続のもう一方の端に渡すため、必ずしも NAT と互換性があるわけではありませんが、一般的なケースでは、NAT トラフィックは eth0 に留まります。

ログをチェックして、クライアントが 1.2.3.4 に送信されていること、およびサーバーが NAT アドレス ip.ip.ip.ip から接続を取得していることを確認します。

起動時にサーバーはインターネットトラフィックを誘導するネットワークとして1.2.3.4を選択するため、外部アクセスはmydomain.com経由で機能します。ただし、eth0とeth1の両方がそれぞれのゲートウェイを介してインターネットにアクセスできるため、

そうしないでください。マルチホーム構成で複数のデフォルト ゲートウェイを持つことは、ほとんどの場合、意図したとおりに機能しません。大まかに言えば、複数のデフォルト ゲートウェイは、企業環境でのルーターの冗長性/高可用性など、両方のパスが同一のネットワークへのアクセスを提供する場合にのみ使用してください。インターネットへの ISP ルーターとパブリック ネットへの直接接続は同一ではないため、これを削除する必要があります。eth0 にはデフォルト ルートが必要で、eth1 には 10.xxx へのルートが必要です。DHCP を使用してこれを行うこともできますが、私はこれを 10.0.0.5 の予約/除外として扱い、サーバー IP を手動で構成します。

無関係なデフォルト ルートを除けば、説明した内容は通常のデフォルト操作です。上記に記載されていない他の問題も必ず確認してください。

  • ホストファイルがDNSと異なる(クライアントを1.2.3.4ではなく10.0.0.5に接続してみましたか?内部的にはwebserver1.internalfqdn.comのような技術的な名前を使い、外部的には次のようなわかりやすい名前を使うのが好きです。外部サイト
  • 手動ルート テーブルは上記に反映されていません (ルーターとして 10.0.0.5 を経由して 10.0.0.x を 1.2.3.4 にショートカットしようとしましたか? - これは機能しますが、追加の構成が必要です)
  • ルーティングプロトコル(例:RIP)(実際には上記のバリエーションですが、RIPまたはその他のルート公開が有効になっている場合は、不適切なルートを公開する可能性があります)

答え3

私は結局、分割DNSアプローチとしては、ホストに DNS サーバーを展開し、LAN 全体でそれをデフォルトの DNS サーバーとして使用するようにします。そこで、パブリック アドレスの代わりにmydomain.comリダイレクトするカスタム DNS 書き換えルールを追加しました10.0.0.5。この方法では、LAN 内のホストはドメインを内部 IP に解決し、LAN 外のホストはそれをパブリック IP に解決します。これにより、ローカル トラフィックが以前のように ISP ネットワークを経由する必要がなくなるという利点があります。

この問題を解決できると思われるもう一つの選択肢はヘアピンルーティングただし、ISP が提供するルーターはそれをサポートしていないようです。

関連情報