Konfigurieren mehrerer Ethernet-Verbindungen in einem Linux-Server

Konfigurieren mehrerer Ethernet-Verbindungen in einem Linux-Server

Ich habe die folgende Topologie

                                                                                        .───────────────.        
   ┌──────────────────┐                                                             _.─'                 `──.    
   │                  │                                                          ,─'                         '─. 
   │    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  `.                 ,'      
    '─.           ,─'                    │                         │                    '─.           ,─'        
       `─────────'                       └─────────────────────────┘                       `─────────'

Aus historischen Gründen verwendet mein ISP ein separates Netzwerk, um statische IPs bereitzustellen. Das bedeutet, dass ich meinen Server direkt an eine spezielle Verbindung anschließen muss, die direkt dem Internet ausgesetzt ist (im Diagramm ist dies eth0mit IP 1.2.3.5).

Ich verwende diesen Server jedoch als NAS bei mir zu Hause und da es sich dabei um ein völlig separates Netzwerk handelt, verbinde ich ihn über eine andere Schnittstelle eth1und erstelle eine statische DHCP-Zuweisung mit der Adresse 10.0.0.5. Auf diese Weise können andere Geräte im Heimnetzwerk ihn finden und auf die Netzwerk-Mounts zugreifen.

Schließlich habe ich einen DNS-Eintrag mit meiner Domäne, in diesem Beispiel mydomain.com, der auf verweist 1.2.3.5.

Ich habe einige Probleme:

  • Wenn ich versuche, von meinem LAN aus darauf zuzugreifen, mydomain.comfunktioniert es nicht. Ich glaube, das liegt daran, dass der Server das Paket von der Schnittstelle erhält eth0, dann aber antwortet eth1und das andere Gerät die Antwort verwirft, da sie von einer anderen IP-Adresse stammt.
  • Beim Booten sollte der Server 1.2.3.4als Netzwerk auswählen, an das der Internetverkehr weitergeleitet wird, damit der externe Zugriff über funktioniert mydomain.com. Da jedoch sowohl als eth0auch eth1über die jeweiligen Gateways auf das Internet zugreifen können, bootet er manchmal und wählt 10.0.0.1als Standard-Gateway aus, und dann mydomain.comfunktioniert der Zugriff nicht. Ich glaube, dies ist ein ähnliches Problem mit Datenverkehr, der über eingeht, eth0aber über abgeht eth1.

Ich bin zwar mit den grundlegenden Netzwerkfunktionen vertraut, habe jedoch keine Erfahrung damit, einen Server auf diese Weise mit mehreren Netzwerken gleichzeitig zu verbinden. Idealerweise würde ich den Server so konfigurieren, dass:

  • Der gesamte Internetverkehr wird übereth0
  • Der gesamte eingehende Datenverkehr eth0wird beantwortet durcheth0
  • Der gesamte eingehende Datenverkehr eth1wird beantwortet durcheth1

Auf meinem Server läuft Debian, ich bin für jede Hilfe dankbar.

BEARBEITEN: Nachdem ich das eth1-Gateway deaktiviert und ein bisschen damit herumgespielt hatte, tcpdumpkonnte ich bestätigen, dass der Datenverkehr von eth0 eingeht und eth1 verlässt. Das Problem besteht darin, dass der ISP den Datenverkehr zum Endpunkt nicht NAT-tut und der Server die Adressen dann als auf der Schnittstelle befindlich 1.2.3.5identifiziert .10.0.0.Xeth1

Antwort1

Dies ist ein Routing-Problem, das mit quellenbasiertem Routing oder Policy-Routing gelöst werden kann. Dabei werden zwei Routing-Tabellen verwendet, eine für jede Quelladresse:

Sehenhttp://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.htmlfür mehr Details.

Antwort2

Ich glaube, das liegt daran, dass der Server das Paket von der Schnittstelle eth0 erhält, dann aber über eth1 antwortet.

Nein. Der ISP-Router mit NAT wird Ihre Client-Adresse 10.0.0.0 in eine dynamische ISP-Adresse umwandeln, sodass Ihr Server an diese Adresse und nicht an die interne Adresse antwortet. Es gibt Ausnahmen wie FTP, die nicht unbedingt mit NAT kompatibel sind, da sie Ihre interne IP-Adresse an das andere Ende der Verbindung weitergeben. Im Allgemeinen bleibt Ihr NAT-Verkehr jedoch auf eth0.

Überprüfen Sie Ihre Protokolle, um zu bestätigen, dass Clients ausgehende Verbindungen zu 1.2.3.4 herstellen und der Server Verbindungen von den NAT-Adressen ip.ip.ip.ip erhält.

Beim Booten sollte der Server 1.2.3.4 als Netzwerk auswählen, an das der Internetverkehr weitergeleitet wird, damit der externe Zugriff über mydomain.com funktioniert. Da jedoch sowohl eth0 als auch eth1 über die jeweiligen Gateways auf das Internet zugreifen können

Tun Sie das nicht. Mehrere Standard-Gateways in Multi-Homed-Konfigurationen funktionieren selten wie beabsichtigt. Mehrere Standard-Gateways sollten nur verwendet werden, wenn beide Pfade Zugriff auf identische Netzwerke bieten, beispielsweise für Router-Redundanz/hohe Verfügbarkeit in einer Unternehmensumgebung. Da Ihr ISP-Router zum Internet und Ihre direkte Verbindung zum öffentlichen Netz nicht identisch sind, sollten Sie dies entfernen. eth0 sollte eine Standardroute haben, eth1 sollte eine Route zu 10.xxx haben. Sie können dies immer noch mit DHCP tun, ich würde dies jedoch als Reservierung/Ausschluss für 10.0.0.5 betrachten und die Server-IP manuell konfigurieren.

Abgesehen von der externen Standardroute ist das, was Sie beschrieben haben, der normale Standardvorgang. Achten Sie unbedingt auf andere Probleme, die oben nicht beschrieben sind:

  • Hostdateien, die sich vom DNS unterscheiden (haben Sie versucht, Clients dazu zu bringen, eine Verbindung zu 10.0.0.5 statt 1.2.3.4 herzustellen? Ich verwende intern gerne einen technischen Namen wie webserver1.internalfqdn.com und extern einen benutzerfreundlichen Namen wiewww.externalfqdn.com)
  • Manuelle Routentabellen sind oben nicht aufgeführt (haben Sie versucht, 10.0.0.x als Router über 10.0.0.5 auf 1.2.3.4 zu verkürzen? – das kann funktionieren, erfordert aber eine zusätzliche Konfiguration)
  • Routing-Protokolle (z. B. RIP) (eigentlich eine Variante des oben genannten, aber wenn Sie RIP oder andere Routenveröffentlichungen aktiviert haben, veröffentlichen Sie möglicherweise schlechte Routen

Antwort3

Ich habe das Problem schließlich gelöst, indem ich einenDNS teilenAnsatz, bei dem ich einen DNS-Server auf meinem Host bereitstelle und diesen im gesamten LAN als Standard-DNS-Server verwende. Dort habe ich benutzerdefinierte DNS-Umschreibregeln hinzugefügt, um anstelle der öffentlichen Adresse mydomain.comumzuleiten 10.0.0.5. Auf diese Weise lösen Hosts im LAN meine Domäne in die interne IP-Adresse auf und Hosts außerhalb des LANs lösen sie in die öffentliche IP-Adresse auf, mit dem Vorteil, dass der lokale Datenverkehr nicht wie zuvor über das ISP-Netzwerk geleitet werden muss.

Eine weitere Alternative, die dieses Problem meiner Meinung nach lösen sollte, istHaarnadel-Routing. Der Router meines ISPs scheint dies jedoch nicht zu unterstützen.

verwandte Informationen