As @Zoredache pointed out the
.local namespace has no official status (the closest you'll find is
.localhost, defined and reserved in RFC 2606). Accordingly
.local should never be used, as ICANN could one day assign that TLD to someone.
The Right Thing to do is to register a domain of your own like
example.com, and assign hostnames under it (perhaps under
internal.example.com) as appropriate.
That being said, if you want to use
.lan as the top level domain for your internal hosts you certainly would not be alone, and at this point the likelihood of anyone trying to usurp
.private is pretty low: They are used so pervasively that trying to correct the decades of badness would not be worth the fight.
Note however that such machines and names should not be reachable from (or exposed in any way to) the public internet. It is a lesser sin, similar to emitting RFC-1918 network addresses over your public interfaces, and people like me will frown disapprovingly at you in public, and make fun of your network information leaks in private.
Also note that *nix machines do not really have a concept of "domain" in the Active Directory sense of the word -- the closest analog would be NIS domains, which aren't tied to DNS the way AD is.
A bare *nix system really only knows of its own personal hostname, which need not be a fully qualified domain name (
alice is just as valid as
alice.wonder.lan), though by convention many administrators use the fully qualified DNS name of the machine as its hostname.
This gives you an out against using "unofficial" domain names like
.local, but IMHO is less "correct" than having a valid, assigned, fully-qualified domain name as your system's hostname.