Ich besitze 3 öffentliche IPs für meinen Server und habe mehrere VMs, die ihren eigenen „Job“ haben. Der Server hat 1 NIC. Öffentliche IPs:
- XX.XX.9.247 (HAUPT)
- XX.XX.21.141 (zusätzlich)
- XX.XX.21.142 (zusätzlich)
LAN-IPs:
- 10.10.0.0/24
- 10.10.0.10:80 (Webserver für die HAUPT-IP)
- 10.10.0.20:80 (Webserver für die 1. zusätzliche IP)
- 10.10.0.30:80 (Webserver für die 2. zusätzliche IP)
- 10.10.0.31:9987 (TeamSpeak für die 2. zusätzliche IP)
und so weiter und so fort.
Beispiel: Anfrage kommt von XX.XX.21.141:80. Die Anfrage wird an 10.10.0.20:80 gesendet. Der virtuelle Server sendet das Paket über XX.XX.21.141 zurück.
Warum ich das so mache? Weil ich einige VServer vermieten möchte.
Ich weiß, wie das mit IPTables auf einer öffentlichen IP geht, habe aber keine Ahnung, wie das mit mehreren öffentlichen IPs geht.
Ich hoffe, ihr könnt mir helfen.
Grüße
Antwort1
Wenn Sie nur http/https umleiten möchten, verwenden Sie besser nginx (Sie können aber auch Apache verwenden). Je nachdem, was Ihr Webserver ist (Apache, NGinx), sollten Sie einen HTTP-Proxy auf Ihrem Front-End-Server in Betracht ziehen:
- Proxy-Passwort(NGinx)
- mod_proxy(Apache)
Sie können Bridges verwenden, um für einige VM dedizierte IPs bereitzustellen.
Iptables-Lösung
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 80 ________ | |
( internet )------------>[_...__...°]------------->| VM |
'-( ).-' XX.XX.9.247 ^ 10.10.0.10 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
Dies ist ein Skript
#!/bin/sh
# eth1 is WAN
WAN=eth1
MAIN_IP=XX.XX.9.247
MAIN_PORT=80
BACK_END_IP=10.10.0.10
BACK_END_PORT=80
echo 1 > /proc/sys/net/ipv4/ip_forward
# it's clean all tables
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -A PREROUTING -i ${WAN} -d ${MAIN_IP} --dport ${MAIN_PORT} -j DNAT --to-destination ${BACK_END_IP}:${BACK_END_PORT}
iptables -A FORWARD -d ${MAIN_IP} --dport ${MAIN_PORT} -j ACCEPT
#maybe this# iptables -A FORWARD -i ${WAN} -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE