par bobox » 22 Oct 2003 11:24
tiens voila ce que j ai trouvé
<BR>
<BR>Net8 et les Firewalls :
<BR>
<BR>Cette note technique vous concerne si vous essayez de faire fonctionner une application client-serveur Net8 (ex. SQL*Net) avec un Firewall entre le poste client et le serveur Oracle. Elle complète les chapitres 12 d'Oracle8i sous Linux et 5 d'Oracle8 pour Windows NT.
<BR>
<BR>Description du problème :
<BR>
<BR>Lorsqu'un client Net8 ou SQL*Net essaye de se connecter à un serveur Oracle, il entre en communication avec un Listener Oracle chargé d'accueillir des connexions. Le fichier de paramétrage tnsnames.ora du poste client précise le port IP de communication sur lequel le Listener doit être en écoute. Le poste client sait exactement comment contacter le Listener. Il est alors facile d'ouvrir un passage dans le paramétrage du Firewall pour laisser passer ce port, mais cela ne fonctionne pas.
<BR>
<BR>Lors de la connexion du poste client, le listener démarre un processus sur le serveur puis retourne au client Oracle un nouveau port IP "privé" qui servira pour la communication entre le client et son processus dédié. Ce numéro de port est pris de manière aléatoire dans une plage réservée. Il faudrait ouvrir une énorme brèche dans votre Firewall pour laisser passer l'ensemble de ces ports. C'est la raison pour laquelle vous devez avoir un Firewall certifié SQL*Net/Net8, seul capable d'ouvrir et de fermer dynamiquement un port IP.
<BR>
<BR>Contournement conseillé :
<BR>
<BR>Pour éviter l'achat d'un Firewall spécifique, utilisez Oracle Connection Manager placé sur un serveur à l'extérieur de la zone protégée par le Firewall. L'autre possibilité est de ne plus utiliser le logiciel client Oracle. Vous pouvez par exemple utiliser un pilote Thin JDBC. Cela n'est possible que pour les applications écrites en Java.
<BR>
<BR>Précision supplémentaire de Grégory DESLEE :
<BR>
<BR>Pour contourner la problème, il existe un autre moyen, qui consiste à forcer l'utilisation du port du listener pour les échanges entre le process serveur et le poste client. Le port IP "privé" devient alors public, c'est celui du listener.
<BR>Pour cela, il suffit de positionner la variable d'environnement USER_SHARED_SOCKET à TRUE (registry sur NT, variable d'env sur Unix), et de relancer la base de données et le listener (ainsi que le service de la base de données sous NT).
<BR>
<BR>
<BR>
<BR>
<BR>