http://ethereum.stackexchange.com/a/5931/4575https://ethereum.stackexchange.com/a/5931/4575 is answer to my question. My main problem was my local time was incorrect.
"Ethereum nodes (regardless of mining) need to have an accurate time, otherwise they will not be able to connect to peers and to the network "
"Common problems with connectivity
Sometimes you just can’t get connected. The most common reasons are:
- Your local time might be incorrect. An accurate clock is required to participate in the Ethereum network. Check your OS for how to resync your clock (example sudo ntpdate -s time.nist.gov) because even 12 seconds too fast can lead to 0 peers.
- Some firewall configurations can prevent UDP traffic from flowing. You can use the static nodes feature or admin.addPeer() on the console to configure connections by hand.
To start geth without the discovery protocol, you can use the --nodiscover parameter. You only want this if you are running a test node or an experimental test network with fixed nodes." [1]