In cellular networks, it is vital to allocate communication channels efficiently because the bandwidth allocated for cellular communication is limited. If channels are statically allocated, as is the case in current cellular networks, a cell may run out of channels when a large number of mobile hosts move to the cell. To overcome this problem, dynamic channel allocation approaches have been proposed. Under dynamic channel allocation, channels are allocated to cells on demand, thus increasing channel utilization. Such channel allocation approaches fall under two categories, namely, centralized and distributed. Centralized approaches are neither scalable nor reliable, while distributed approaches have the potential to be both reliable and scalable. In the distributed approaches, a mobile service station is responsible for allocating channels to mobile hosts in the same cell. In cellular networks, mobile service stations may fail. In addition, the network may encounter intermittent network congestion and/or link failures. It is desirable for a channel allocation algorithm to work well, even in the presence of network congestion, link failures, and/or mobile service station failures. In this paper, we present a distributed dynamic channel allocation scheme for cellular networks that is fault-tolerant. Our approach can tolerate the failure of mobile service stations, link failure, and network congestion, and make efficient reuse of channels. We also provide results of the performance evaluation of our algorithm.