Les périphériques de couche IP ont été introduits dans Oracle Solaris pour améliorer l'observabilité. Ces périphériques donnent accès à tous les paquets avec les adresses associées à l'interface réseau du système. Ces adresses incluent des adresses locales ainsi que des adresses hébergées sur des interfaces sans loopback ou des interfaces logiques. Le trafic observable peut correspondre aux adresses IPv4 et IPv6. Par conséquent, vous pouvez surveiller l'ensemble du trafic destiné au système. Le trafic peut être du trafic d'IP avec loopback, des paquets provenant de machines distantes, des paquets envoyés à partir du système ou la totalité du trafic transféré.
Les périphériques de couche IP permettent à l'administrateur d'une zone globale de surveiller le trafic entre les zones ainsi qu'au sein d'une zone. L'administrateur d'une zone non globale peut également observer le trafic envoyé et reçu par cette zone.
Pour surveiller le trafic sur la couche IP, utilisez la commande snoop avec l'option –I, plus récente. Cette option indique à la commande d'utiliser les nouveaux périphériques de couche IP plutôt que le périphérique sous-jacent de couche liaison pour afficher les données de trafic.
# ipadm show-if
# snoop -I interface [-V | -v]
Tous les exemples suivants sont basés sur cette configuration système, procédez comme suit :
# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 dhcp ok 10.153.123.225/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::214:4fff:2731:b1a9/10 net0/v6 addrconf ok 2001:0db8:212:60bb:214:4fff:2731:b1a9/64 net0/v6 addrconf ok 2001:0db8:56::214:4fff:2731:b1a9/64
Supposons que deux zones, sandbox et toybox, utilisent les adresses IP suivantes :
sandbox – 172.0.0.3
toybox – 172.0.0.1
Vous pouvez exécuter la commande snoop –I sur les différentes interfaces du système. L'affichage des informations du paquet dépend de si vous êtes administrateur de la zone globale ou de la zone non globale.
Exemple 1-11 Trafic sur l'interface loopbackL'exemple suivant illustre le résultat de la commande snooppour l'interface loopback.
# snoop -I lo0 Using device ipnet/lo0 (promiscuous mode) localhost -> localhost ICMP Echo request (ID: 5550 Sequence number: 0) localhost -> localhost ICMP Echo reply (ID: 5550 Sequence number: 0)
Pour générer une sortie détaillée, utilisez l'option –v.
# snoop -v -I lo0 Using device ipnet/lo0 (promiscuous mode) IPNET: ----- IPNET Header ----- IPNET: IPNET: Packet 1 arrived at 10:40:33.68506 IPNET: Packet size = 108 bytes IPNET: dli_version = 1 IPNET: dli_type = 4 IPNET: dli_srczone = 0 IPNET: dli_dstzone = 0 IPNET: IP: ----- IP Header ----- IP: IP: Version = 4 IP: Header length = 20 bytes ...
La prise en charge de l'observation des paquets sur la couche IP introduit un nouvel en-tête ipnet qui précède les paquets observés. Les ID de source et de destination sont tous deux indiqués. L'ID 0 indique que le trafic est généré à partir de la zone globale.
Exemple 1-12 L'observation de paquets réalisée à l'aide de l'option de flux périphérique net0 dans les zones locales.L'exemple suivant montre le trafic des différentes zones qui se trouvent dans le système. Vous pouvez voir tous les paquets associés aux adresses IP net0, y compris les paquets livrés localement aux autres zones. Si vous générez une sortie détaillée, vous pouvez voir les zones impliquées dans le flux de paquets.
# snoop -I net0 Using device ipnet/net0 (promiscuous mode) toybox -> sandbox TCP D=22 S=62117 Syn Seq=195630514 Len=0 Win=49152 Options=<mss sandbox -> toybox TCP D=62117 S=22 Syn Ack=195630515 Seq=195794440 Len=0 Win=49152 toybox -> sandbox TCP D=22 S=62117 Ack=195794441 Seq=195630515 Len=0 Win=49152 sandbox -> toybox TCP D=62117 S=22 Push Ack=195630515 Seq=195794441 Len=20 Win=491
# snoop -I net0 -v port 22 IPNET: ----- IPNET Header ----- IPNET: IPNET: Packet 5 arrived at 15:16:50.85262 IPNET: Packet size = 64 bytes IPNET: dli_version = 1 IPNET: dli_type = 0 IPNET: dli_srczone = 0 IPNET: dli_dstzone = 1 IPNET: IP: ----- IP Header ----- IP: IP: Version = 4 IP: Header length = 20 bytes IP: Type of service = 0x00 IP: xxx. .... = 0 (precedence) IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: .... ..0. = not ECN capable transport IP: .... ...0 = no ECN congestion experienced IP: Total length = 40 bytes IP: Identification = 22629 IP: Flags = 0x4 IP: .1.. .... = do not fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 64 seconds/hops IP: Protocol = 6 (TCP) IP: Header checksum = 0000 IP: Source address = 172.0.0.1, 172.0.0.1 IP: Destination address = 172.0.0.3, 172.0.0.3 IP: No options IP: TCP: ----- TCP Header ----- TCP: TCP: Source port = 46919 TCP: Destination port = 22 TCP: Sequence number = 3295338550 TCP: Acknowledgement number = 3295417957 TCP: Data offset = 20 bytes TCP: Flags = 0x10 TCP: 0... .... = No ECN congestion window reduced TCP: .0.. .... = No ECN echo TCP: ..0. .... = No urgent pointer TCP: ...1 .... = Acknowledgement TCP .... 0... = No push TCP .... .0.. = No reset TCP: .... ..0. = No Syn TCP: .... ...0 = No Fin TCP: Window = 49152 TCP: Checksum = 0x0014 TCP: Urgent pointer = 0 TCP: No options TCP:
Dans la sortie précédente, l'en-tête ipnet indique que le paquet provient de la zone globale (ID 0) to sandbox (ID 1).
Exemple 1-13 Un réseau du trafic par identification de l'observation ZoneL'exemple suivant montre la manière d'observer le trafic réseau en identifiant la zone qui est extrêmement utile pour les systèmes dotés de plusieurs zones. Actuellement, la zone s'identifie uniquement par l'intermédiaire de l'ID de zone. L'utilisation de la commande snoop avec les noms de zone n'est pas prise en charge.
# snoop -I hme0 sandboxsnoop -I net0 sandbox Using device ipnet/hme0 (promiscuous mode) toybox -> sandbox TCP D=22 S=61658 Syn Seq=374055417 Len=0 Win=49152 Options=<mss sandbox -> toybox TCP D=61658 S=22 Syn Ack=374055418 Seq=374124525 Len=0 Win=49152 toybox -> sandbox TCP D=22 S=61658 Ack=374124526 Seq=374055418 Len=0 Win=49152