The 404 indicates either ASP.net isn’t enabled on the site, as Sebastian referred to. Or that the default.aspx file used by DNN as its default document, isn’t in the default document search order defined for the site in IIS. You can eliminate that by including default.aspx in your URL, i.e., yourdomain.com/default.aspx which will circumvent the usage of the “default document search order” functionality, because you specified what page to load.
Additionally, if you have multiple sites on the server, you may actually be hitting a different site because you don’t have your bindings properly set, leading you to actually be served a DIFFERENT site on your server, and you’re getting that 404 from this other site. The site’s bindings in IIS probably include something like: domain.com at IP address 123.123.123.123 on port 80, and maybe: ‘www’.domain.com at IP address 123.123.123.123 on port 80.
So you need to do one of two things; either setup a blank host header or bind the IP address as a host header.
A blank host header will mean that any request coming in will be routed to that site. However, you may already have a blank host header on another site. If this is the case you will need to bind the IP address as a host header, provided that too is not defined on another site.
So a blank host header would have the name field empty with the IP address 123.123.123.123 defined. If you wanted to bind the 123.123.123.123 as a host header it would look like this: 123.123.123.123 at IP address 123.123.123.123 on port 80.
Whichever way you choose to go, you will also need to ensure that DNN has an alias defined to accept that request.