DNSTools v2 Beta

Over 10 years ago, I started working on a “DNS tools” site. Recently in my free time, I’ve started working on a second version of it, and I’d like to get some feedback on the new version so far, and whether anything is broken.

I’ve totally rewritten most of the site, and the main new feature is that you can ping and traceroute from several different locations in the world. There’s a few other sites that have features like this, but a lot of them have a pretty poor UI (eg. they just show raw traceroute output) so I’m trying to make a better one.

URL: https://beta.dnstools.ws/

Current functionality:

The DNS lookups and traversals are still using the legacy codebase so they don’t support selecting a location yet, but I’ll add that at some point in the future.

I’ll open-source the code once I’m happy with its state - There’s still a bunch of things I need to clean up.

13 Likes

Awesome work! Looks nice and performs nice (judging by the limited tests I ran) :slight_smile:

Thanks for sharing! It seems nice, I tried to traceroute hostballs even before noticing you included a direct link for that :grinning:
Nice usage of @mikho boxes :ok_hand:

1 Like

Yeah! It was a good use case for a bunch of VPSes I already had that were mostly idling, but I also got a few of @mikho’s 256 MB NAT VPSes for locations where I didn’t already have servers (eg. Italy, France, Norway, Germany, Singapore).

I still need to set up a few more VPSes… Got a few NAT VPSes with Inception Hosting that I need to configure. I’m also going to add New York and Luxembourg (both with BuyVM), I just need to find time to reformat those VPSes as 64-bit. I originally set them up as 32-bit given the low RAM (512 MB) but the DNSTools worker app is written in C# / .NET Core which only has 64-bit builds available now <_<

1 Like

Any particular reason for that. Or was it more of a “this is what I’m most familiar with” decision?

One of my favourite programming languages, plus it has some really nice features, and I wanted to learn more about some related technologies that I hadn’t used much in the past. For example the ping and traceroute pages push content to the browser using web sockets - That was trivial to do using SignalR.

The old site was PHP, which is okay, but you generally can’t get web sockets working well with PHP for example.

2 Likes

Gotcha, makes sense.

I’ve done some things with C# / .NET Core for my Master’s. Had to implement a GUI-based code repository (i.e. a git clone) using WCF (Windows Communication Foundation), which was interesting. However, with anything that is Windows-based, I just can’t shake the stigma that it’s bloated and could be done more efficiently with a different stack (go, python, etc.).

1 Like

@Daniel
If you are missing some location, I’m willing to give them to you for free (as long as you keep running this tool).

It’s projects like this that I like to sponsor :slight_smile:

I have 2-3 more locations comming up

  • Seattle
  • Romania
  • Canada

I’ll let you know when they are ready and give you a promo key for them.

8 Likes

Its simple, its quick and its useful. Great project!

I know Microsoft has a bad rep in some cases, but .NET Core is actually really good. One of the best frameworks at the moment IMO. Uses less RAM than a comparable Node.js app, and Kestrel (the web server ASP .NET Core uses) is one of the fastest available, faster than both Nginx and Node.js.

Oh wow!! Thanks! I think I’m missing Romania and Bulgaria at the moment. I need OpenVZ7 though (running Debian 10 everywhere), whereas I think some locations I’m missing are still OpenVZ6. I’ve got a few US VPSes so don’t need any of those, but Canada might be good too once you have that available. Thanks so much :slight_smile:

2 Likes

Tomorrow is work day :slight_smile:
Will try to have all new locations up by then.

Will let you know when its ready.

3 Likes

Great project! :slightly_smiling_face::+1:

(… So this is C# / .NET running on Linux, not Mono, but Microsoft’s code?)

Yeah, Microsoft officially support running .NET on Linux now! They have a Debian repo too: Install .NET on Debian - .NET | Microsoft Learn. Their entire stack is open-source and they accept pull requests (which is nice because I can fix bugs in the framework myself :laughing:). It’s so different from the old Microsoft that hated open-source.

So as an update here, I now have 13 locations! :smile: Set up a few more NAT VPSes from Gullo’s Hosting @Cam and Inception Hosting @AnthonySmith in addition to the MrVM ones I’ve got so far (still missing a few but I’ll get to that eventually, when @mikho is ready). Scripted most of the setup using Ansible so it’s pretty easy to spin up new locations now. Fixed a bunch of bugs too.

Next plans are to rewrite the remaining code from the old site (mainly the DNS lookup functionality) so you can select the location to perform the DNS lookup from, and so I can delete the legacy codebase.

1 Like

Latest update is that I just published the source code to GitHub this morning, in case anyone’s curious: https://github.com/Daniel15/dnstools.

I rewrote the code for the DNS lookups so you can now select the location to perform the lookup from (which is useful when testing GeoIP). Added a few more locations - Now there’s 19 available to choose from.

Once everything is at feature parity with the old site (it’s pretty close now) and a few other small things are fixed, I’ll shut down the old site :slight_smile:

4 Likes

Nice, sure it will be useful.

This is awesome Dan, please make it possible to perform DNS Lookups for all locations, etc, to check the propagation status for example.

1 Like

Killed the old site last night - Now it’s just the new one :slight_smile:

I’m glad you like it! :smiley:

I’m planning on doing this! :slight_smile:

I want to update the ‘DNS Traversal’ page to do it. Currently it’s using the legacy code, which queries all authoritative DNS servers and shows the results, but only from one location (currently only from Vegas). I want to update it to show all DNS results, from all the domain’s DNS servers, from all locations. Lots of queries, but they’ll all run in parallel so it shouldn’t be too slow.

The ping page shows the IP address in each location (eg. try ping google.com), but that’s a cached lookup so it’s not appropriate for every use case. The DNS lookup page always shows uncached results.

2 Likes

This is awesome!!! :grin:

1 Like

It’s a part of my Toolkit. Thanks for your work :slight_smile:.
The footer still says 2019.

1 Like