A very good question, actually. Check out the std::list implementation to see how they solved it.
(Basically, the principle of least surprise holds. The user should be looking at an alloc<T>, but everything the class accepts should recognize it and automatically convert it to an alloc<node<T>> behind the scenes. There is a little more hoop jumping beyond that... but it is what it is.)
g++-4.8 -std=c++11 -O2 -Wall -Wextra -pedantic-errors main.cpp && ./a.out
type of std::list<int>::allocator_type is: std::allocator<int>
type of std::forward_list<double>::allocator_type is: std::allocator<double>
type of map_allocator_type is: std::allocator<std::pair<std::string const, long> >
type of my_list_type::allocator_type is: boost::interprocess::allocator<int, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >
my_list_type::allocator_type is same as my_allocator_type? true