Q:

how to block specific domains in hosts file?

I know hot to block single tumblr blog with 
127.0.1.1 something.tumblr.com

but I want to block entire tumblr. I tried 127.0.1.1 tumblr.com but it's not working.
Is there a way to do this?

A:

Install dnsmasq:
$ sudo apt-get install dnsmasq

Then in /etc/dnsmasq.conf (which you may have to create) add the line:
address=/tumblr.com/127.0.0.1

This will block tumblr.com and all of its subdomains by redirecting it to localhost (127.0.0.1).

Note:
For Ubuntu Trusty and others which already have NetworkManager use dnsmasq by default you don't need to install anything.
Just create a file /etc/NetworkManager/dnsmasq.d/local :
address=/tumblr.com/127.0.0.1

and reboot or restart NetworkManager
$ sudo service network-manager restart

A:

The /etc/hosts file does NOT support wildcard subdomains. i.e. you can't say 127.0.0.1 *.tumblr.com and have it block all URLs of the form something.tumblr.com.
If you want to block these at the browser level, you can either use a plugin or better, a filtering proxy like Privoxy.
If you want to block these at the network level, so that no one on that computer can access the sites, you need a simple firewall rule to block something.tumblr.com's IP range, which at first glance appears to be 50.97.143.0/24, i.e. 50.97.143.0-50.97.143.255.

