What is the use case that requires <a href="http://test.10.0.0.3.xip.io/test-page" rel="nofollow">http://test.10.0.0.3.xip.io/test-page</a> rather than <a href="http://10.0.0.3/test-page" rel="nofollow">http://10.0.0.3/test-page</a> ? I've been using the latter on iphones and ipads with no problem.<p>Honest question.
I have a dd-wrt router with DNSmasq functioning as the DNS server for local hosts. DNSmasq resolves external domains using Google DNS (8.8.8.8/8.8.4.4). With this setup, domain names like 192.168.X.X.xip.io and 127.X.X.X.xip.io won't resolve, and I believe there is something wrong with my DNSmasq setup. Anyone else ran into similar issues?<p>(Update) Problem solved by myself. The DNSmasq config has stop-dns-rebind option enabled, which filters out DNS results in private IP ranges from upstream servers for security reasons. DNSmasq doc has the following part:<p><pre><code> -stop-dns-rebind
</code></pre>
Reject (and log) addresses from upstream nameservers which are in the private IP ranges. This blocks an attack where a browser behind a firewall is used to probe machines on the local network.<p>In case you run into this issue, just comment out this option in dnsmasq.conf and restart dnsmasq.
Reimplemented in ~30 lines of ruby as a powerdns pipe backend.<p><a href="https://gist.github.com/2897076" rel="nofollow">https://gist.github.com/2897076</a><p>powerdns is a solid dns server and very extensible!<p>$ host whatever.192.0.43.10.ip.ipq.co
whatever.192.0.43.10.ip.ipq.co is an alias for 1h9u9ze.ip.ipq.co.
1h9u9ze.ip.ipq.co has address 192.0.43.10
For those who missed the other announcement, Pow 0.4.0 has xip.io support built-in: <a href="http://37signals.com/svn/posts/3191-announcing-pow-040-with-xipio-support" rel="nofollow">http://37signals.com/svn/posts/3191-announcing-pow-040-with-...</a>
This would be great for testing multi-tenanted cloud applications. For example:<p>tenant1.10.0.0.1.xip.com
tenant2.10.0.0.1.xip.com
tenant3.10.0.0.1.xip.com<p>They all resolve to the same IP Address (10.0.0.1), but now the web application at that address knows which tenancy is being targeted.
Couldn't you accomplish this with djbdns' dnsrewrite or pdns_recursor's lua scripting?<p>Why anyone would want to write DNS server (=something that needs to be very fast) in Javascript is beyond my comprehension. The ASCII art is probably better work than the DNS server.
You guys are missing the point. It's intended to be used with Pow. This way you don't have to bother with manually starting & stopping servers or remembering ports or whatever. This domain allows you to have access your sites in the same way from any device in your network. Not just your dev machine. Handy! And it works. What's not to like then?<p><a href="http://37signals.com/svn/posts/3191-announcing-pow-040-with-xipio-support" rel="nofollow">http://37signals.com/svn/posts/3191-announcing-pow-040-with-...</a>
I created a clone of xip.io which doesn't have any the DNS faults:<p><a href="http://news.ycombinator.com/item?id=4085522" rel="nofollow">http://news.ycombinator.com/item?id=4085522</a>
I run a kinda related service that does instant dns records: <a href="http://ipq.co/" rel="nofollow">http://ipq.co/</a><p>And I wrote a Ruby DSL to easily integrate with a real dns server (powerdns). Makes it trivially easy to write things like xip.io<p><a href="https://github.com/johnl/powerdns_pipe" rel="nofollow">https://github.com/johnl/powerdns_pipe</a>
I run a simple djbdns setup locally with a caching resolver that passes specific domains to my dns server proper and the rest up the chain. Took about seven minutes to configure properly. This seems overly complex.
Nice hack.<p>Of course reverse dns doesn't work :-) I suppose it kinda sorta could if you tracked where a request came from and what IP you sent it and if you got a reverse lookup you could undo that, but still it is clever!
I've identified several technical problems with this domain, and this isn't an example of how to properly operate DNS. 37signals is setting an absurdly low TTL on these records (10 minutes; the answers never change, I absolutely do not understand the logic behind this TTL), which means every 10 minutes you're re-resolving <i>a local address</i>, through a <i>CNAME</i> (so two DNS round trips, and in my case this resolution took between 115ms and 230ms, not small change):<p><pre><code> [~]$ dig foo.169.254.84.1.xip.io
foo.169.254.84.1.xip.io. 600 IN CNAME foo.daze1.xip.io.
foo.daze1.xip.io. 600 IN A 169.254.84.1
</code></pre>
Concerningly, ns-1.xip.io is also broken; it does not serve NS records for its own zone, instead relying upon the SOA record and the upstream glue, which I'm shocked works:<p><pre><code> [~]$ dig +short NS xip.io
[~]$
</code></pre>
The nameserver delegation from nic.io is also broken:<p><pre><code> xip.io. 86400 IN NS ns-1.xip.io.
xip.io. 86400 IN NS ns6.gandi.net.
;; Received 86 bytes from 2001:678:5::1#53(b.nic.io) in 60 ms
</code></pre>
Oh, well that's interesting, Gandi is a backup for their custom daemon, eh? So did they implement AXFR, IXFR, and notify and such to Gandi? Well, let's ask Gandi:<p><pre><code> [~]$ dig @ns6.gandi.net. SOA xip.io
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 3222
</code></pre>
Oh, guess not. The long and short of this is for DNS purposes, a custom daemon is almost never the answer. This could have been accomplished with BIND fairly easily, and the zone would be functional as well.
This is a hack for devices where the user cannot access /etc/hosts?<p>Running a local DNS server on these devices is also not possible?<p>Can a user access ifconfig and change interface settings, e.g. adding an alias?<p>In terms of networking, these devices appear to be crippled. Yet they do not have to be if they're built using code from BSD's.
I think it really speaks to the impoverished startup environment in Chicago that this ends up as an un-monetized throwaway product.<p>In Silicon Valley an idea like this could lead to a helluva exit with backing from incubators like YC.