In computational chemistry, the term "van der Waals interaction" tend to refer to the London term only; the Keesom term (electrostatic interactions between two freely-rotating permanent dipoles) is generally included in the electrostatic interaction, while the Debye term (interaction between a permanent dipole and an induced dipole) is usually considered as a type of induction interaction and is treated on the same footing as the ion-induced dipole force. Both the Keesom and the Debye terms are described excellently by most density functionals, with caveats that are detailed below.
To compute the Keesom term, the most rigorous way is to perform a rotational average over the interacting molecules, which may require either a molecular dynamics simulation or a Monte-Carlo sampling; the simple "geometry optimization + frequency + single point (+ counterpoise correction)" workflow cannot be guaranteed to capture the Keesom term correctly when the molecules can rotate quite freely, but if the molecules have a relatively fixed orientation with respect to each other (as is often the case for molecules that are not very small), then the rotational average is not necessary, and the usual quasi-RRHO scheme (as implemented in, e.g., ORCA) usually suffices to give accurate results. In more layman terms, if you don't do rotational averaging, the electronic energy does not accurately capture the Keesom term (and usually overestimates its magnitude), but the thermal correction U(T)-U(0), which you obtain from your frequency calculation, largely corrects the error of the Keesom term, so that if you add the U(T)-U(0) and ZPE terms to the electronic energy to give the energy at finite temperature U(T), you actually have the Keesom term at hand already. Note however that some programs (e.g., Gaussian) uses the RRHO scheme, instead of the quasi-RRHO scheme, in calculating the partition functions; in this cases the Keesom contribution may be poorly reproduced, and the way out is to use third-party tools like GoodVibes (https://github.com/bobbypaton/GoodVibes) or Shermo (http://sobereva.com/soft/shermo/) to recalculate the partition functions using quasi-RRHO. In any case, even if you do fail to compute the Keesom term accurately, it is not a failure of the functional, but a failure of (quasi-)RRHO.
The Debye term depends on the permanent dipole of the polarizer molecule and the polarizability of the polarized molecule. Both are accurately reproduced by most functionals if and only if the basis set is sufficiently diffuse. So again, even if the Debye term is calculated wrong, it's not the functional to blame.
For the London dispersion term, things are wholly different. The London interaction is a long-range correlation interaction that decays like $1/R^6$. By contrast, all local and semilocal functionals, as their name suggests, have a correlation contribution that decays at least exponentially. It is because of this reason that they cannot describe the London dispersion term adequately. Within the semilocal framework, one can parameterize the functional such that it describes the London interaction when the molecules are not very far apart (e.g. the M06 and M06-2X functionals), but as the molecules become progressively far from each other, any parameterization must eventually fail and underestimate the London interaction, because the exponential decay is bound to kick in. Thus, the simplest physically correct way to restore the London interaction is to introduce diatomic attraction potentials with built-in $1/R^6$ behavior, which is exactly the approach used by DFT-D. More robust but costly alternatives (such as the VV10 correction) also exist.