[SemiOT] cual es la IP que usa mi script (medio resuelto)

Chema Cortes pych3m4 en gmail.com
Vie Jun 23 16:18:27 CEST 2006


Me respondo a mí mismo en lugar de responder mensaje por mensaje, pero
agradezco todos los consejos que me habéis dado (algunos fuera de la
lista).

2006/6/22, Chema Cortes <pych3m4 en gmail.com>:
> Aunque esta pregunta tiene que ver con un script de jython, creo su
> solución tiene más que ver con el sistema operativo o con oracle.

He comprobado que se trata de un comportamiento propio del JDBC. En el
mismo servidor tengo una aplicación hecha con Oracle Web Server que
hace lo mismo, ésto es, el servidor web responde desde la ip
(10.35.216.19) pero luego conecta con el servidor oracle a través de
uno de los alias (10.35.216.17). Por lo que he leído, los sockets de
java obtienen un listado de los interfaces disponibles. Desconozco el
motivo, pero sospecho que debe ordenar el listado por ips y usar el
primero para la conexión. La cosa es que no se puede controlar. Al
menos no he encontrado la manera de hacerlo a través del JDBC.

Os cuento un poco más cómo tengo el sistema. La versión de debian que
uso es algo "prehistórica", con el kernel 2.4 aún. Uso varias máquinas
virtuales java, e incluso diferentes binarios para cada versión
(server vs client). A persar de tantas versiones, funciona todo muy
ligero, y con ello me evito tener que discutir con las empresas que
nos hacen las aplicaciones web para unificar versiones.

Los aliases no son importantes; ahí quedaron de un estudio que hize
para virtualizar servidores apache y de tomcat, pero los podría
eliminar. No uso nombre de máquinas; directamente uso direcciones ips
hasta que consiga poner en marcha un cluster ldap+dns que tengo a
medias.

Como solución al problema con el jdbc, la que he visto más aceptable
es el forzar el enrutado, tal como me habéis sugerido. Tan sólo falta
añadir el gateway, ya que el servidor  oracle se encuentra fuera de mi
red:

nagus:~# route add 195.55.130.195 dev eth0 gw 10.35.216.10


De este modo me solucionaría el problema puntual con este servidor
oracle, pero hay otra solución más global: usar métricas. A cada alias
asigno una métrica con el fin de dar mayor prioridad a eth0 frente al
resto de interfaces. Ahora tengo una tabla de rutas así:

nagus:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.35.216.0     *               255.255.254.0   U     0      0        0 eth0
default         10.35.216.10    0.0.0.0         UG    1      0        0 eth0
default         10.35.216.10    0.0.0.0         UG    2      0        0 eth0
default         10.35.216.10    0.0.0.0         UG    3      0        0 eth0

Aunque no se vea, las rutas por defecto son eth0, eth0:2 y eth0:1
De esta manera hago más privilegiado el interface eth0 (10.35.216.19)
frente a los alias, y parece que el jdbc lo respeta.


Muchas gracias a todos por vuestras respuestas.

Un saludo,
Chema




Más información sobre la lista de distribución Python-es