IPTables von öffentlicher IP und Port zu LAN-IP

IPTables von öffentlicher IP und Port zu LAN-IP

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:

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

verwandte Informationen