Using wildcards in names in Windows hosts file

58

6

Is there a way to create a wildcard domain in the Windows hosts file.

I tried this

xxx.xxx.xxx.xxx *.somedomain.com

This does not work, is there maybe some other syntax I should use?

I am working on Windows 7

Saif Bechan

Posted 2010-04-28T15:08:18.850

Reputation: 2 835

1

i just answered a question on doing this with DNSmasq on ServerFault (not on windows, obviously, but on a router running DD-WRT/OpenWRT it's doable)

– quack quixote – 2010-04-28T15:19:08.920

XP SP2 included a castration of the host file - http://www.securityfocus.com/archive/1/431032/30/0/threaded

Assumed reason is people were using it to block ads while browsing. This is a guess as far as I know Microsoft has never revealed why they did this and why they are rolling it forward to everything since.

If you are able to put in a proxy server between your PC and the internet, then you could put in a block for what you wanted.

– bvaughn – 2016-06-08T15:22:49.187

Answers

63

There is not. The hosts file isn't very clever, you have to list every subdomain individually (including www and no-www)

Phoshi

Posted 2010-04-28T15:08:18.850

Reputation: 22 001

17

An answer to a very similar StackOverflow question worked well for me.

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=UserManual

Wildcard Support on XP at hostsfile. Enjoy.

Basically, this program Acrylic works as a DNS proxy for your local machine. Just point your Local Area Connection to 127.0.0.1, then edit the AcrylicHosts.txt in a very similar manner to the regular hosts file -- only with wildcards!

Curtis Gibby

Posted 2010-04-28T15:08:18.850

Reputation: 685

Unfortunately acrylic does not support DNS aliases, which makes it useless to me. – Spero – 2017-12-16T08:59:19.553

2Acrylic works great, but can confuse you if you are trying to access a machine with a dynamic IP address.

I have machines connected to my home network, and I use a dynamic dns to set the ip for the domain name. I use Acrylic on my laptop and I was gone for a few days, in the mean time my ip changed, but Acrylic remembered it as being the old ip, and I couldn't access the site. But running the "Purge Acrylic Cache Data" program took care of the problem. – leeand00 – 2012-04-13T17:00:54.293

11

Dnsmasq is what you need but it doesn't work quite well on Windows. So I wrote an alternative on Windows called DNSAgent.

You can use regular expression in rules. There is also some advanced features like customizing cache TTL, non-standard-port DNS server, compression pointer mutation, etc. Open sourced under MIT license.

Stackia

Posted 2010-04-28T15:08:18.850

Reputation: 210

2

first, i agree with phoshi that its not possible to do what you want in the hosts-file of windows (neither on unix).

secondly, you have to get control over the result of a request to dns. one option is to use your own dns-resolving on your router (dnsmasq, dnscache+tinydns, bind, whatever, see quack's comment) and tweak it or to use a dns-resolver on windows which you can control as you want.

see here for a list of dns-resolvers, check for the "wildcard" column, maybe powerdns or maradns or posadis is something that fits your needs.

akira

Posted 2010-04-28T15:08:18.850

Reputation: 52 754

-1

It's another syntax: xxx.xxx.xxx.xxx somedomain.com

Some examples to explain it:

  • 127.0.0.1 .com this line will block all outgoing dnsrequests ending with .com
  • 127.0.0.1 somesite.com will block all outgoing dnsrequests ending with somesite.com
  • 12.2.3.1 www.dns.com will lead all outgoing dnsrequests ending with www.dns.com to 12.2.3.1

You block/lead all second (third,fourth...) level urls with the top(second,third...) level url in the hosts file.

moonfern

Posted 2010-04-28T15:08:18.850

Reputation: 23

Given the last sentence, I assume www.example.com is not blocked by the first line, but only when adding 127.0.0.1 example.com? – Arjan – 2010-07-21T20:52:31.320

1That is definitely not the case on Windows, moonfern. – Owen Blacker – 2012-05-27T20:41:59.177

9

moonfern, I do not agree with your list. 127.0.0.1 somesite.com WILL NOT block all outgoing DNS requests ending with somesite.com, all it will block is http://somesite.com, not www.somesite.com or subdomain.somesite.com or the like.

– None – 2010-07-25T05:32:15.350

-3

If you want to block every subdomain in somedomain.com, then consider whether omitting "*." will achieve what you want.

Editing your example:

xxx.xxx.xxx.xxx somedomain.com

SquarePowder

Posted 2010-04-28T15:08:18.850

Reputation: 1

"Consider whether..." is pretty ambiguous. What, exactly, are you recommending as the solution? – fixer1234 – 2016-09-10T22:51:38.783

Please read the question again carefully. Your answer does not answer the original question. – DavidPostill – 2016-09-11T07:48:07.743

1fixer1234 -- I don't know what is the problem the poster wishes to solve, while they ask as though explicit wildcarding will address it. "Consider whether..." suggests something that might work. It's easy to try, and requires few characters. I know it works in some cases. Since I don't have enough context to understand the problem, I can't recommend a solution. David Postill -- I believe my answer addresses and is pertinent to the original question. But perhaps your own answer will work better. – SquarePowder – 2016-09-12T14:23:57.233