how many ips would be needed to have a 3 node (active, active, passive) Sql cluster?
One for each physical node (3). and one for each virtual (active) sql resource (2).
You might also use a second interface on each physical server for heartbeat traffic. That would require 3 more IPs. But they can/should be in another subnet and possibly different LAN segment alltogether
one for each physical node's public interface, double if there is a private interface (3) One for cluster resource (1) One for DTC cluster resource (1) One for each virtual SQL instance (2)
Not counting IPs for the cluster heartbeat network (which only cluster nodes see, so you can use any IP you want for it), you will need at least 6 IP addresses (and network names):
You can also use another IP address (and name) for an additional cluster group to run MSDTC; but it can be safely run in the main cluster resource group, just be sure to not make the group dependant on it.
Assuming there are only two SQL Instances in this equation...
One for the Cluster itself One for each Node's Public IP, three total One for each Node's Private IP, three total; these should be from a different subnet or segment One for each SQL Instance, two total Optional; zero, one, or two for MSDTC
So, 9, 10, or 11 IPs in total, depending on how you set up MSDTC.
MSDTC can actually be setup in a few different configurations. This will be driven by how many SQL Instances there are and how heavily they use MSDTC.
You can install MSDTC as a default instance for the cluster, that will be shared by all the SQL Instances.
Or you can map a SQL Instance to a named MSDTC Instance.
Or you can install as instance of MSDTC that is part of a SQL Instance's Cluster Resource Group.
You might do these last two if one particular SQL Instance is making a very heavy use of MSDTC.
Or you can setup MSDTC as a local instance on each Node in the Cluster.
Actually, you can combine all of these methods on the same cluster.
It will use the first instance of MSDTC it finds in this order: local group, mapped, default, local machine.