Routing mehrerer öffentlicher IPs an interne Subnetze

857
Adam Dodman

Mir wurde ein Block von / 29 ips für einen dedizierten Server zugewiesen, den ich vermiete. Ich möchte in der Lage sein, eine dieser IPs für die Verwaltung des Servers selbst beizubehalten und jeden Rest an sein eigenes internes Subnetz weiterzuleiten, damit mehrere OpenVZ-Container öffentliche IPs gemeinsam nutzen können.

Ich habe zum Beispiel zwei Webserver und zwei Dateiserver in 4 Containern. Dies sind nicht die eigentlichen Dienste, die ausgeführt werden, aber ich werde sie einfach verwenden. Ich möchte, dass eine meiner öffentlichen IP-Adressen (XX.XX.XX.2) auf die beiden Container im Subnetz 192.168.2.0/24 verweist, und die andere öffentliche IP-Adresse (XX.XX.XX.3) auf die Container im 192.158.3.0/24-Subnetz. Eine Kommunikation zwischen den Subnetzen ist nicht erforderlich, jedoch muss jeder Container auf das Web zugreifen können.

Ich habe versucht, Source-basiertes Routing wie hier beschrieben und NAT wie im OpenVZ-Wiki hier ohne Erfolg zu verwenden. Auf dem Host wird Centos 6 ausgeführt, und auf jeder VM wird Debian 7 ausgeführt, wenn dies einen Unterschied macht.

1
Können Sie bitte genau beschreiben, was Sie mit * ohne Erfolg * meinen? Was scheitert Fehlermeldungen? MariusMatutiae vor 8 Jahren 0
Keine Fehler per se, aber nur keine Internetverbindung auf den VMs - es können keine Pings an Hostknoten, Adressen oder IP-Adressen weitergeleitet werden, Traceroutes schlagen am Hostknoten aus. Nameserver sind korrekt - verwenden Sie Google Public DNS zum Testen. Adam Dodman vor 8 Jahren 0
Bitte posten Sie die Ausgabe von * ip addr show * und von * ip route show *, danke. MariusMatutiae vor 8 Jahren 0
Zu lang für den Kommentar, der so in Pastebin hochgeladen wurde [hier] (http://pastebin.com/rPiStCKD) Adam Dodman vor 8 Jahren 0
Die Ausgabe von 216.126.193.235 und 216.126.193.236 in ip adr show scheint falsche Masken zu haben Silvio Massina vor 8 Jahren 0
Ich gehe davon aus, dass die Masken in / 29 geändert werden müssen. Wie würde ich das machen? Adam Dodman vor 8 Jahren 0
Können Sie jetzt einen der Container vom Host aus anpingen? MariusMatutiae vor 8 Jahren 0
Ja, der Host kann einen Ping an die Container senden, und die Container können den Host anpingen. Adam Dodman vor 8 Jahren 0
@ Adam: Ich nehme an, du hast sie mit ifconfig gesetzt. Verwenden Sie ifconfig eth0: 0 216.126.193.235 Netzmaske 255.255.255.248 (anf Wiederholung für eth0: 1) Silvio Massina vor 8 Jahren 0

1 Antwort auf die Frage

0
Silvio Massina
  1. Richten Sie Ihre openvz-Container für die Verwendung von Bridged- Netzwerken ( mit veth-Schnittstellen ) ein.

  2. Erstellen Sie eine Brücke für jedes der internen Netzwerke, an die Sie Ihre Container anschließen möchten (in Ihrem Fall 2 Brücken, eine für 192.168.2.0/24 und eine für 192.168.3.0/24. Nennen wir sie br2 und br3).

  3. Geben Sie jeder Brücke eine IP-Adresse im richtigen Netzwerk (zum Beispiel könnte br2 192.168.2.1 und br3 192.168.3.1 sein)

  4. Konfigurieren Sie die Container, die sie mit ihren jeweiligen Bridges verbinden.

    Stellen Sie zum Beispiel br2 auf die Container, die sich im Netzwerk 192.168.2.0/24 befinden sollen (beispielsweise CT1 und CT2), und auf die gewünschten Container auf 192.168.3.0/24 (beispielsweise CT3 und CT4).

  5. Geben Sie jedem Container eine IP-Adresse im selben Netzwerk der Bridge, mit der er verbunden ist. Legen Sie die IP-Adresse der Bridge und das Standard-Gateway fest.

    Zum Beispiel: CT1 und CT2 mit IP 192.168.2.101 und 192.168.2.102. Ihr Gateway wird 192.168.2.1 (IP-Adresse von br2) sein.

  6. Aktivieren Sie die IP-Weiterleitung auf dem physischen Host

  7. Konfigurieren Sie alle öffentlichen IP-Adressen der Schnittstelle des physischen Hosts, die mit dem Internet verbunden ist (beispielsweise eth0), mit der richtigen Subnetzmaske.

  8. Konfigurieren Sie NAT für Ihre CTs wie folgt:

    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to first.pulic.ip.address iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j SNAT --to second.pulic.ip.address