Tengo 3 IP públicas para mi servidor y tengo varias máquinas virtuales que tienen su propio "trabajo". El servidor tiene 1 NIC. IP públicas:
- XX.XX.9.247 (PRINCIPAL)
- XX.XX.21.141 (adicional)
- XX.XX.21.142 (adicional)
IP de LAN:
- 10.10.0.0/24
- 10.10.0.10:80 (Servidor web para la IP PRINCIPAL)
- 10.10.0.20:80 (Servidor web para la 1. IP adicional)
- 10.10.0.30:80 (Servidor web para la 2. IP adicional)
- 10.10.0.31:9987 (TeamSpeak para la 2. IP adicional)
y así sucesivamente y así sucesivamente.
Ejemplo: la solicitud proviene de XX.XX.21.141:80. La solicitud se envía a 10.10.0.20:80. El servidor virtual devuelve el paquete a través de XX.XX.21.141.
¿Por qué lo hago así? Porque quiero alquilar algunos servidores virtuales.
Sé cómo lograrlo con IPTables en una IP pública, pero no tengo idea de cómo hacerlo con múltiples IP públicas.
Espero que puedan ayudarme.
Saludos
Respuesta1
Si desea redirigir solo http/https, es mejor usar nginx (pero puede usar Apache). Dependiendo de cuál sea su servidor web (Apache, NGinx), debería considerar un proxy HTTP en su servidor front-end:
- contraseña_proxy(NGinx)
- mod_proxy(Apache)
Puede utilizar puentes para proporcionar algunas IP dedicadas de VM.
solución iptables
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 80 ________ | |
( internet )------------>[_...__...°]------------->| VM |
'-( ).-' XX.XX.9.247 ^ 10.10.0.10 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
este es el guión
#!/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