Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Host name resolution without modifying the hosts file

Tags:

c#

hostname

ip

I'm trying to figure out how if there's a way to make a hostname resolve to a certain IP without DNS or host file modification.

Using C#, I'm making a request from client to server, but I have to use the hostname in the request so that the certificates will properly authenticate the request. However, my program is meant to run without admin rights, so I can't modify the host file. I have the correct IP and the host name, is there any other way to make the computer resolve the host name to the IP?

like image 779
Cannoliopsida Avatar asked Jun 11 '12 18:06

Cannoliopsida


2 Answers

It looks like the simplest way to solve this is to create a service with the rights to modify the host file, then invoke that service from the main program. The service runs a single command and exits. Since a service can have elevated status, you can essentially encapsulate admin rights inside a standard user program.

like image 139
Cannoliopsida Avatar answered Nov 15 '22 10:11

Cannoliopsida


If you're making an HTTP request, then you don't need to resolve the hostname; use the IP address in the URL and pass the host header in your HTTP request.

HttpWebRequest.Host Property

Update: sorry didn't see the certificates requirements. I think you should be able to modify the hosts file during installation (because installation usually happens under admin rights). Add the host name you're interested in to point to 127.0.0.1 (local machine). Then, your app can open a listening socket and act as a proxy, channeling the data to the actual Web server. This may or may not work depending on the client having a firewall enabled.

like image 37
Mr. TA Avatar answered Nov 15 '22 11:11

Mr. TA