Une application de serveur compatible IPv6 peut gérer les requêtes IPv4 et IPv6, ou les requêtes IPv6 uniquement. Le serveur gère toujours les requêtes par le biais d'un socket IPv6. En outre, le serveur utilise le même protocole qu'utilise le client correspondant. Pour ajouter ou modifier un service pour IPv6, utilisez les commandes disponibles à partir du service SMF (Service Management Facility, utilitaire de gestion des services).
Pour obtenir des informations sur les commandes SMF, reportez-vous à la section SMF Command-Line Administrative Utilities du System Administration Guide: Basic Administration .
Pour obtenir une tâche d'exemple utilisant le service SMF pour configurer un manifeste de service IPv4 s'exécutant sur SCTP, reportez-vous à la section Ajout de services utilisant le protocole SCTP.
Pour configurer un service IPv6, vous devez vous assurer que la valeur du champ proto dans le profil inetadm pour ce service répertorie la valeur adéquate :
Pour un service assurant la gestion de requêtes IPv4 et IPv6, sélectionnez tcp6, udp6 ou sctp. Une valeur proto de tcp6, udp6 ou sctp6 a pour conséquence de faire passer inetd sur un socket IPv6 vers le serveur. Le serveur contient une adresse mappée IPv4 au cas où un client IPv4 recevrait une requête.
Pour un service qui gère uniquement les requêtes IPv6, sélectionnez tcp6only ou udp6only. Si proto a l'une de ces valeurs, inetd passe le serveur à un socket IPv6.
Si vous remplacez une commande Oracle Solaris par une autre implémentation, vous devez vous assurer que l'implémentation de ce service prend en charge le protocole IPv6. Si l'implémentation ne prend pas IPv6 en charge, vous devez spécifier la valeur proto en tant que tcp, udp ou sctp.
Voici un profil qui résulte de l'exécution de inetadm pour un manifeste de service echo prenant IPv4 et IPv6 en charge, et s'exécute sur SCTP :
# inetadm -l svc:/network/echo:sctp_stream SCOPE NAME=VALUE name="echo" endpoint_type="stream" proto="sctp6" isrpc=FALSE wait=FALSE exec="/usr/lib/inet/in.echod -s" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE |
La syntaxe suivante permet de modifier la valeur du champ proto :
# inetadm -m FMRI proto="transport-protocols" |
Tous les serveurs fournis avec le logiciel Oracle Solaris ne nécessitent qu'une entrée de profil spécifiant proto en tant que tcp6, udp6 ou sctp6. Cependant, le serveur shell distant (shell) et le serveur d'exécution distant (exec) sont à présent composés d'une instance de service unique, nécessitant une valeur proto contenant les valeurs tcp et tcp6only. Par exemple, pour définir la valeur proto pour shell, émettez la commande suivante :
# inetadm -m network/shell:default proto="tcp,tcp6only" |
Consultez les extensions IPv6 de l'API Socket dans la section Programming Interfaces Guide pour obtenir des informations supplémentaires sur l'écriture de serveurs compatibles IPv6 qui utilisent des sockets.
Gardez les éléments suivants à l'esprit lorsque vous ajoutez ou modifiez un service pour IPv6 :
Vous devez spécifier la valeur proto en tant que tcp6, sctp6 ou udp6 afin d'activer les connexions IPv4 ou IPv6. Si vous spécifiez la valeur pour proto en tant que tcp, sctp ou udp, le service n'utilise qu'IPv4.
Bien qu'il soit possible d'ajouter une instance de service utilisant des sockets SCTP de style un à plusieurs à inetd, il est déconseillé de le faire. inetd ne fonctionne pas avec les sockets SCTP de style un à plusieurs.
Si un service nécessite deux entrées en raison de propriétés wait-status ou exec différentes, vous devez créer deux instances/services à partir du service d'origine.