Ich hoffe, dass jemand Licht in die Sache bringen kann. Meine Netzwerkkenntnisse sind bestenfalls Grundkenntnisse.
Ich habe einen CentOS-Server in zwei Netzwerken:
- NIC1 befindet sich auf einer öffentlichen IP mit Gateway-Set auf Switch 1. (ADSL-Internet)
- NIC2 ist auf 10.10.10.2 eingestellt, ohne dass auf Switch 2 ein Gateway festgelegt ist. (Kabel-Internet)
- Das Gateway/der Router von Switch 2 ist 10.10.10.1. (ASUS-Router)
Innerhalb des LAN können andere LAN-PCs über offene Ports auf 10.10.10.2 zugreifen. Wenn eine Portweiterleitungsregel von Gateway/Router 10.10.10.1 --> 10.10.10.2 gesetzt ist, funktioniert dies nicht. Die Portweiterleitung von Gateway/Router 10.10.10.1 --> auf 10.10.10.3 funktioniert (Windows-Rechner mit auf 10.10.10.1 eingestelltem Gateway).
Ist es möglich, 10.10.10.2 vom öffentlichen Internet aus über den ASUS-Router 10.10.10.1 zu erreichen?
Antwort1
IP-Richtlinienrouting.
Ich habe zwei Beschreibungen desselben gefunden, die ich verwendet habe, um meinen CentOS-Server zu aktualisieren, damit die zweite Netzwerkkarte Pakete empfangen und senden kann. Auch die Aktualisierung eines anderen ähnlichen Servers mit zwei Netzwerkkarten/Gateways war erfolgreich.
http://jensd.be/468/linux/two-network-cards-rp_filter<-- Ich habe im Abschnitt „Beste Lösung“ IP-Richtlinien eingerichtet und den rp_filter-Wert nicht geändert. Dieser Artikel enthält auch schöne Diagramme.
http://www.microhowto.info/howto/ensure_symmetric_routing_on_a_server_with_multiple_default_gateways.html <--zusätzliches Beispiel zum oben genannten, das es für mich klarer gemacht hat.
Wenn Sie die Änderungen dauerhaft wünschen, folgen Sie den Anweisungen unter dem ersten Link oben.
Mein Beispiel:
- ip route add 99.88.77.66/24 dev eth0 table 1 (Beispiel öffentliche IP Nr. 1)
- IP-Route hinzufügen, Standard über 99.88.77.1, Tabelle 1 (Beispiel: Gateway der öffentlichen IP Nr. 1)
- IP-Route hinzufügen 10.10.10.0/24 dev eth1 Tabelle 2 (zweite Netzwerkkarte in einem anderen Netzwerk)
- IP-Route standardmäßig hinzufügen über 10.10.10.1 Tabelle 2 (ASUS-Router-Gateway)
- IP-Regel hinzufügen von 99.88.77.66/32 Tabelle 1 Priorität 100
- IP-Regel hinzufügen von 10.10.10.4/32 Tabelle 2 Priorität 110
- IP-Route, Cache leeren
Die /24-Einstellung für Sie kann sich je nach Subnetzmaske Ihrer IPs ändern.
Antwort2
Zuerst müssen wir verstehen, warum Ihr Setup nicht funktioniert. Dazu müssen wir überlegen, was passiert.
- Von der „Kabel“-Internetverbindung kommt ein Verbindungsversuch.
- Der NAT-Router ändert die Zieladresse und richtet einen Eintrag in der Mapping-Tabelle ein.
- Das Paket erreicht Ihren Server und eine Antwort wird generiert.
- Ihr Server sucht in seiner Routing-Tabelle das Ziel der Antwort und sendet das Paket an das Standard-Gateway (z. B. an die „ADSL“-Internetverbindung).
- Höchstwahrscheinlich wird das Paket verworfen, weil es eine falsche Quelladresse hat. Selbst wenn es den Client erreicht, stimmt seine Quelladresse nicht mit der vom Client erwarteten überein, sodass der Client es als falsch verwirft.
Jetzt, da wir wissen, was schief läuft, können wir etwas dagegen tun. Es gibt einige Möglichkeiten.
Option 1 besteht darin, „Policy Routing“ auf dem Server zu verwenden, um den Datenverkehr basierend auf der Quell-IP zu routen. Dies ist die beste Option, sofern der Server dies unterstützt (aktuelle Linux-Versionen tun dies).Stiles Antwortbeschreibt, wie man Policy-Routing auf einem Linux-Server einrichtet, um basierend auf der Quelladresse zu routen.
Option 2 besteht darin, das Standard-Gateway des Servers auf eine Box zu richten, die Policy-Routing unterstützt. Dann kann diese Box den Datenverkehr je nach Quell-IP korrekt weiterleiten. Dies kann eine nützliche Lösung sein, wenn das Server-Betriebssystem Policy-Routing nicht unterstützt.
Option 3 besteht darin, die NAT-Box so einzurichten, dass sie den Datenverkehr maskiert, den sie als Portweiterleitung nutzt. Ich würde dies als letzte Möglichkeit betrachten, da dadurch die tatsächliche Quelladresse des Datenverkehrs verborgen wird.