Eine externe IP mit mehreren virtuellen Hosts teilen

Eine externe IP mit mehreren virtuellen Hosts teilen

Für einen CentOS-Server, der einige virtuelle LAMP-Maschinen hostet (mit VirtualBox), habe ich eine einzelne externe IP. Ich möchte diese einzelne externe Host-IP verwenden können, um die virtuellen Maschinen anzusprechen. Wie das Weiterleiten von Ports an bestimmte Maschinen von außen:

2.2.2.2 > external IP [WAN]
10.0.0.1 > host IP (tiger) [LAN]
10.0.0.2 > virtual client #1 (zebra)
10.0.0.3 > virtual client #1 (mouse)

Die externe IP wird also über den Router an die Host-IP (Tiger) weitergeleitet. Dieser prüft dann den Port und sendet ihn an Zebra oder Maus. Beide virtuellen Clients verwenden möglicherweise (sollten) nicht dieselben Ports für Apache usw.

Die Routing-Lösung wird vorzugsweise auf dem Host durchgeführt, da ich keinen Zugriff auf den Router selbst habe (aber nach bestimmten Einstellungen fragen kann, wenn der Administrator das hinbekommt).

Ich hoffe, ich habe mich klar ausgedrückt.

Antwort1

Wenn Sie einfach verschiedene Ports auf 2.2.2.2 an verschiedene virtuelle Maschinen weiterleiten möchten, können Sie dies tun mitiptables. Siehe dieCentOS-Handbuchfür weitere Einzelheiten, einschließlichSo machen Sie Regeln dauerhaft( iptablesändert die Einstellungen nur bis zum nächsten Neustart). So leiten Sie eingehende TCP-Anfragen auf Port 13080 an 10.0.0.1 auf Port 80 weiter:

iptables -t nat -A PREROUTING -p tcp --dport 13080 -j DNAT --to 10.0.0.1:80

Wenn Sie die VM abhängig vom Hostnamen in der HTTP-Anforderung auswählen möchten, benötigen Sie einen HTTP-Server, der als Dispatcher fungiert. Sie können Apache verwenden, aber für eine so schnelle, einfache AufgabeNginxIst Populär.

verwandte Informationen