Redireccion?

Forums: 

Hola

Necesito orientación sobre hacer lo siguiente.

- Tengo un VPS en WashingtonDC y un Dedicado en New York
- Desde mi PC (chile) al VPS tengo 140ms de ping y al servidor en NY 555ms
- Pero desde el VPS a NY solo 10ms constantes.

Mi idea es poder hacer algo para enlazar el VPS y el VPS me enlace a NY, de esa forma utilizo la velocidad del VPS para mejorar mi velocidad de Respuesta a NY.

El problema es que no se como se llama este método ni menos como se podría hacer.

También agrego que no solo yo ocuparia este enlace, sino que muchas personas mas.

Estoy actualmente en CentOS5

Saludos...

A nivel de firewall.

Imagen de Monkito

Ej si tienes un servicio web corriendo en el servidor de NY y quieres que se "vea" como si estuviera en Washington

iptables -A PREROUTING -p tcp --dport 80 -j REDIRECT --to washington:80

lo puedes poner en otro puerto cambiando "-dport 80", o apuntar a otro servicio de washington, no está de más decir que se deben agregar las reglas de INPUT y OUTPUT correspondientes en ambos servidores.

PD; lo puedes intentar con el protocolo icmp para probar, además de permitir/denegar el input de icmp en washington mientras pruebas con un ping para saber si funciona o no.

iptables -A PREROUTING -p icmp -j REDIRECT --to washington

Saludos.

------------
counter.li.org

Cogito Ergo Sum

sobre la IP

Entonces a ver ordenándome:

De washington a NY entonces es por iptables.

La pregunta es ahora : ¿Con que ip quedara registrado en NY? Con la IP de Washington ya que paso por ahí cierto?

Saludos y muchas gracias por ayudar ^^

Edit:

Hola ya hice lo que me sugeriste pero no Resulto, vera :


iptables -A PREROUTING -p tcp --dport 6900 -j REDIRECT --to 173.244.205.161:4000
iptables: No chain/target/match by that name

Estoy usando el iptables por defecto que hace CentOS cuando instala, solo le agregue unos puertos para TS3 y ademas Acepte los puertos que necesito escuchar.

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# ------------------------------------------------------------
-A RH-Firewall-1-INPUT -p tcp --dport 6900 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 3724 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 8080 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 4000 -j ACCEPT
# ------------------------------------------------------------
# TEAM SPEAK 3
# ------------------------------------------------------------
-A RH-Firewall-1-INPUT -p tcp --dport 9987 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 9987 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 10011 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 10011 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 30033 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 30033 -j ACCEPT
# ------------------------------------------------------------
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Intente agregando las lineas para los 3 puertos que necesito, pero dio Error:

-A PREROUTING -p tcp --dport 6900 -j REDIRECT --to 173.244.205.161:4000
-A PREROUTING -p tcp --dport 3724 -j REDIRECT --to 173.244.205.161:3724
-A PREROUTING -p tcp --dport 8080 -j REDIRECT --to 173.244.205.161:8080

Al Reiniciar Iptables me dice que hay Error en la linea que correspondería a la primera de este ultimo Code.

Me pase horas intentando diferentes formas pero nada me resulto. :(
Es angustiante.... :jawdrop:

Saludos...

Cita: La pregunta es ahora :

Imagen de Monkito

[quote]La pregunta es ahora : ¿Con que ip quedara registrado en NY? Con la IP de Washington ya que paso por ahí cierto?[/quote]

No, es solo una redirección, la conexión se hará con la IP cliente original como src y el nuevo destino como dst, para hacer lo que sugieres hace falta agregar un enmascaramiento o SNAT, de esa manera el src será el servidor.

[quote]iptables -A PREROUTING -p tcp --dport 6900 -j REDIRECT --to 173.244.205.161:4000
iptables: No chain/target/match by that name[/quote]
No funcionó porque por defecto iptables usa la tabla filter, y necesitamos usar la tabla NAT para este redireccionamiento.

------------
counter.li.org

Cogito Ergo Sum

Algo mas elaborado:

Imagen de Monkito

Me disculpo por el "REDIRECT" es solo para servicios locales, en su lugar usaremos DNAT.

Para el server que hace bypass

SERVICE_ADDR="IP_de_NY"
SERVICE_PORT=80
LOCAL_PORT=5580

# Permitir comunicación entre los clientes del puerto local y el servidor externo
$IPT -t filter -A FORWARD -p tcp --dport $SERVICE_PORT -d $SERVICE_ADDR -j ACCEPT
$IPT -t filter -A FORWARD -p tcp --sport $SERVICE_PORT -s $SERVICE_ADDR -j ACCEPT

# Aqui la redirección con DNAT
$IPT -t nat -A PREROUTING -p tcp --dport $LOCAL_PORT -j DNAT --to $SERVICE_ADDR:$SERVICE_PORT

No olvidar habilitar el bit de forwarding:


echo 1 > /proc/sys/net/ipv4/ip_forward

Para el server que está mas lejos en latencia:


SERVICE_PORT=80

# Permitir acceso al puerto local
$IPT -t filter -A INPUT -p tcp --dport $SERVICE_PORT -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --sport $SERVICE_PORT -j ACCEPT

Aqui no es necesario el bit de forwarding.

Saludos

------------
counter.li.org

Cogito Ergo Sum

Hola Gracias por seguir en el

Hola Gracias por seguir en el Tema...

Intente de varias formas y no ha resultado por iptables.
También intente con esta ultima que usted me siguiere pero tampoco funciona.
Según leí por ahí en un foro gringo iptables redirecciona solo de forma Local por lo que me da a entender que por eso no me daba acceso a una IP Externa.

Entonces vi que siguieron el programa rinetd el cual instale en el VPS y hice las configuraciones correspondientes (muy facil de usar).
Y funciono la redireccion.
Desde mi PC paso por el VPS y el VPS me lleva a NY... peroooo...

Como la redireccion la necesito para mi servidor de Juego Online desconozco mi Ping Real entonces pasa que estando dentro del Juego tengo Freezes.
Ya no es Lag sino que Freezes.

Puede que exista algún tipo de delay en el proceso de la aplicación o quizá el calculo del ping sea incorrecto.
También puede que no sea una conexión persistente por lo que cada vez que muevo al personaje este debe "reconectar" la "redireccion".

Lamentablemente como desconozco el ping final no podría dar votos por uno u otro caso.

Entonces hasta el momento se pudo hacer la Re-dirección pero no estoy satisfecho con el Rendimiento y eso que estoy probando con 2 VPS en la misma zona, tienen un ping de 0.62ms.

Saludos...

Yo la probé

Imagen de Monkito

Acabo de probar las líneas de arriba con un par de servidores para jugar HALO online y funciona bien, verifica que tu bit de forwarding esté en 1, también los puertos, y si mas arriba no hay algo que esté bloqueando la redirección.

en última instancia podrías probar con un nat adicional

PD: al editar el firewall deberá ser sin las variables, es decir no va $IPT, y reemplazas el resto por tu escenario.

saludos

------------
counter.li.org

Cogito Ergo Sum

algo hice mal

Entonces algo hice mal... ya mire le dare los datos completos de las IP y puertos...

[quote]VPS:
173.192.195.188
Puertos:
6900-3724-8080[/quote]

[quote]Dedicado:
173.244.205.161
Puertos:
4000-3724-8080[/quote]

La información del Dedicado es un segundo VPS que tengo en Washington para hacer pruebas, pero creo que igual vale porque es una IP distanta en otro Host.

Aqui le graficare un poco mi situación:

Lo otro es que tengo una confusión con su configuración de IPtables que no es como la mía. Yo uso el archivo /etc/sysconfig/iptables
Y he visto que las reglas se escriben distinto.

Es lo mismo pero sin poner el

Imagen de Monkito

Es lo mismo pero sin poner el comando iptables ni la tabla con -t sino en el segmento correspondiente,

En tu segundo vps dentro del dedicado, busca la parte de tu archivo /etc/sysconfig/iptables donde diga "*nat", y antes del COMMIT pon esto:


-A PREROUTING -p tcp -m tcp --dport 4000 -j DNAT --to-destination 173.192.195.188:6900
-A PREROUTING -p tcp -m tcp --dport 3724 -j DNAT --to-destination 173.192.195.188:3724
-A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 173.192.195.188:8080

ahora para permitir la redirección "forward" busca en la sección "*filter" está dividida por el grupo de los INPUT, FORWARD y OUTPUT, entonces antes de cualquier OUTPUT pones lo siguiente:


-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 6900 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 6900 -j ACCEPT
-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 3724 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 3724 -j ACCEPT
-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 8080 -j ACCEPT

No olvidar del bit de forwarding, con "cat /proc/sys/net/ipv4/ip_forward" si sale 0 nunca funcionará el reenvío de paquetes, debe salir 1, se lo establece con "echo 1 > /proc/sys/net/ipv4/ip_forward".

Ha por cierto, estamos haciendo todo sobre tcp, espero que tus aplicaciones no usen udp, o tendrás que modificar algo por allí..

PD: tu imagen no se ve, puedes agregarla aqui

Saludos

------------
counter.li.org

Cogito Ergo Sum

No funciona Mira este es el

No funciona

Mira este es el iptables completo :


# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 4000 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 4000 -j ACCEPT
-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 3724 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 3724 -j ACCEPT
-A FORWARD -d 173.192.195.188 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -s 173.192.195.188 -p tcp -m tcp --sport 8080 -j ACCEPT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 4000 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 3724 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 8080 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 4000 -j DNAT --to-destination 173.192.195.188:4000
-A PREROUTING -p tcp -m tcp --dport 3724 -j DNAT --to-destination 173.192.195.188:3724
-A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 173.192.195.188:8080
COMMIT

Sabes, lo que me llama la atención es que en ningún lugar se hace referencia a la IP del Dedicado.

Subí la imagen donde me dijo ojala se pueda entender.

Saludos...

Todo bien..

Imagen de Monkito

Prueba con un servicio menos complejo, puedes instalar lighttpd y tratar con ese servicio la redirección.

no es necesario especificar la ip del dedicado ( o de su vps de pruebas ) para que coincida a cualquier ip que tenga asociada.

EDIT:
Posible problema

puede ser que los clientes de tu aplicación tengan inconvenientes al recibir los datos de una ip diferente a la original, puedes agregar un enmascaramiento, justo debajo de la regla DNAT en la tabla *nat.


-A POSTROUTING -p tcp -m tcp -d 173.192.195.188 --dport 80 -j MASQUERADE

EDIT2

Viendolo bien, ahora que me detengo a analizar tu imagen, este firewall debe ser estar en el server con ip a.b.c.188 y tu aplicación está en f.g.h.161, de ser así todas las reglas que contengan la ip 188 están mal, deben apuntar a la 161..

------------
counter.li.org

Cogito Ergo Sum

Páginas