how to call a website from cmd using a non registered domain name? - networking

Usually When you ping a website (e.g Google.com) it replies with a specific IP
My question is: Is there anyway where you can call a website and replies with an IP you have set manually like 1.2.3.4
meaning if I ping google.com from my pc it will reply with 1.2.3.4

You can do this by adding the domain and IP to your host file. What OS are you running?
On Windows Server 2012 you will find the host file on %systemroot%\system32\drivers\etc
Add your domain and IP like this
64.49.219.194 www.domain.com
Try ping again.

Related

Host command providing wrong twitter IP address

I'm building a clone of the host command. I've tried finding the host of twitter.com and have received the same IP-Address both on my version and the real host command. The address is: 104.244.42.65.
For some reason, when I input this IP-Address into the browser, it says that there's no webpage with that IP address. Why is this happening?
The host command uses ICMP to detect if the DNS name of the host can be resolved and host is reachable. And you can resolve and reach the IP that resolved for twitter.com.
However, the web server of Twitter is probably configured to answer only if asked by DNS name and when your browser sends a HTTP GET request with the IP, the server does not respond.
Twitter gets tons of requests per minute. The surely use load-balancers that redirect "twitter.com" to multiple IP addresses and they don't want people to use particular IP addresses, which would mess up their load balancers.

How to setup local domain in local network that everyone can see?

I have a few web-based local applications for home-automation purposes, those are accessible through IP addresses with port numbers something like http://192.168.1.100:8080.
What I am trying to achieve is to link each individual IP and port number combination to an internal domain name, so that anyone can use domain and subdomain names rather than IP addresses.
For example a person can specify a URL of http://kitchen.home rather than an IP address with port number URL such as http://192.168.1.100:8080.
At the same time http://192.168.1.100:8081 could be mapped to a domain name such as hall.home so that a URL of http://hall.home could be used instead of that IP address and port number.
The access to a server should not require having to modify the hosts file of individual PCs but should be some kind of a domain name server that maps domain names to IP address and port number for any PC on the local network.
I have set up a DNS server on a PC running bind9 as a DNS server under Ubuntu 20.04 on my home network in order to have my own special domain names.
A few details about DNS and proxy server with HTTP
To map several different subdomain names within a domain to specific ports on the same PC, you will need a proxy server installed on the the PC as well as a DNS server for the local network. Domain names are mapped to a specific IP address with the DNS protocol and are not mapped to a specific port at the IP address.
In my case I have the same PC hardware with Ubuntu 20.04 that has (1) Bind9 for my DNS server and (2) Apache for my proxy server. I could use two different PCs, one as a DNS server to resolve domain names to IP addresses and the other offering various services accessed either through a single IP port using a proxy server listening on the port to dispatch connections to the services or directly to the service by specifying the correct port number of the desired service.
For example http://kitchen.home/ in a browser would instruct the browser to open a TCP connection to the IP address represented by the domain name kitchen.home using port 80, the default HTTP protocol port. A DNS server is used to resolve the domain name kitchen.home to an IP address. With a URL of http://kitchen.home:8081/, the browser will ask the DNS server to resolve the domain name kitchen.home to an IP address and then open a TCP connection to that IP address but using port 8081 rather than the standard HTTP port 80.
So for http://kitchen.home/ to map to port 8080 at that IP address and for http://hall.home/ to map to port 8081 at that IP address you need to combine a DNS server, which resolves the domain name, with a proxy server residing at port 80, the standard HTTP port. The proxy server will then redirect the request to a different port on the PC selected based on the subdomain name, hall or kitchen, of the entire domain specifier, kitchen.home or hall.home.
See https://stackoverflow.com/a/58122704/1466970 which describes setting up Nginx as a proxy server.
The Apache web server can also serve as a proxy server which is what I'm looking into. See this tutorial from DigitalOcean, How To Use Apache HTTP Server As Reverse-Proxy Using mod_proxy Extension as well as Setting up a basic web proxy in apache.
My environment
I have a Windows 10 PC downstairs with a Ubuntu 20.04 PC upstairs communicating through an Arris router to my cable internet provider. Both PCs are connected to my local home network with WiFi.
The Ubuntu 20.04 PC is my Subversion server using Apache web server. I spend most of my time with the Windows 10 PC downstairs, using PuTTY to connect to the Ubuntu PC with one or more terminal windows when needed. I plan to work with Visual Studio on the Windows 10 PC accessing Subversion through the Apache web server as well as using the Ubuntu PC as a database server (MySQL) and web server (Apache with Php) and microservices (golang and node.js).
I wanted to setup a DNS server on the Ubuntu PC and then point my Windows 10 PC to use the local DNS server for a special domain name while using standard DNS servers such as Google at 8.8.8.8 and 8.8.4.4.
What I did
The procedure I followed was (see How to Configure BIND9 DNS Server on Ubuntu 20.04 and see as well Domain Name Service (DNS) and Everything You Need To Know About Ubuntu DNS Servers):
install bind9 using sudo apt install bind9
create a firewall rule sudo ufw allow Bind9
modify the file /etc/bind/named.conf.options
modify the file /etc/bind/named.conf.local
create a copy of /etc/bind/db.local for my new domain name, home.x
modify the new file, /etc/bind/db.home.x, with the correct rules
The domain name I wanted to use locally was home.x with the idea that if I entered a web site URL of http://www.home.x/ the resulting page would be the Apache web server on my Ubuntu PC. Or if I entered http://home.x/svn the result would be the Subversion repository on my Ubuntu server.
Note: in order for Subversion access through Apache, I had to set that up. See enabling Subversion access via Apache web server and DAV on Ubuntu if you are interested in that.
Details on changes and modified files
The Ubuntu PC has an IP address of 192.168.0.4 on my local network. In the descriptions below, this IP address is used where ever the Ubuntu PC is referenced.
I added a forwarders section to the file /etc/bind/named.conf.options in order to forward any DNS requests that were unknown to my Ubuntu server to some other DNS server. The IP addresses I copied from the list of DNS servers returned by the Window 10 command ipconfig /all which I ran on my Windows 10 PC. The changed file is as follows:
rick#rick-MS-7B98:~/Documents$ cat /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
// following forwards are to Google DNS servers at 8.8.8.8 and 8.8.4.4
forwarders {
8.8.8.8;
8.8.4.4;
209.55.27.13;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
listen-on-v6 { any; };
};
After changing the file /etc/bind/named.conf.options, I then ran the check utility, which found no errors, and then restarted the bind service.
sudo named-checkconf
sudo systemctl restart bind9
Next I added a new zone directive to the file /etc/bind/named.conf.local to create a DNS entry for my new, local domain name home.x. The modified file looks like:
rick#rick-MS-7B98:~/Documents$ cat /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "home.x" {
type master;
file "/etc/bind/db.home.x";
};
Finally I needed to create the file /etc/bind/db.home.x specified in the file directive of the zone directive. I did this by starting with a copy of the existing file /etc/bind/db.local by using the command
sudo cp /etc/bind/db.local /etc/bind/db.home.x
I then modified the file /etc/bind/db.home.x in order to specify the rules I needed to resolve the domain name of home.x as well as the subdomain of www.home.x to the IP address of my Ubuntu PC. The modified file looks like:
rick#rick-MS-7B98:~/Documents$ cat /etc/bind/db.home.x
;
; BIND data file for local loopback interface
;
$TTL 604800
# IN SOA home.x. root.home.x. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
# IN NS ns.home.x.
# IN A 192.168.0.4
# IN AAAA ::1
ns IN A 192.168.0.4
www IN A 192.168.0.4
At this point I could test that things worked from my Windows 10 PC by using the nslookup command from a command window. I tried it first without specifying the Ubuntu PC IP address and then with the Ubuntu PC IP address
C:\Users\rickc>nslookup home.x
Server: dns.google
Address: 8.8.8.8
*** dns.google can't find home.x: Non-existent domain
C:\Users\rickc>nslookup home.x 192.168.0.4
Server: UnKnown
Address: 192.168.0.4
Name: home.x
Addresses: ::1
192.168.0.4
I then used the Windows 10 Control Panel (Control Panel > Network and Internet > Network Connections) to see a list of my network adapters in order to modify the DNS server addresses my WiFi adapter was using. This setting is found by doing a right mouse click on the adapter to pop up a floating menu, select Properties to bring up the Properties dialog then select Internet Protocol Version 4 then click the Properties button on the dialog and modify the DNS server address. Below is a screen shot of the dialogs.
After modifying the DNS server address, I retried the nslookup without specifying a DNS server address and the command finds home.x:
C:\Users\rickc>nslookup home.x
Server: UnKnown
Address: 192.168.0.4
Name: home.x
Addresses: ::1
192.168.0.4
When I tested a URL of http://www.home.x/ the test page of my Apache web server is displayed. When I tested a URL of http://home.x/svn the web browser showed the directory tree of my Subversion repository. When I access my Subversion repository with http://home.x/svn/trunk/ within the Ankh Subversion plug-in with Visual Studio 2017 it works.
Other thoughts
One issue with this setup is that if my Ubuntu PC is not up and running then the Windows 10 PC will not have a functioning DNS server until either the Ubuntu PC is brought up or the DNS server address is set back to the original setting on the WiFi adapter. Previously, it was set to discover a DNS server. It may be that I can change this back and from a specified DNS server address, the IP address of my Ubuntu PC, and my Windows 10 PC will discover my Ubuntu PC as a DNS server anyway.
DNS names are independent of port numbers. A dns record correlates a name to an IP address. If you want to omit the port number from urls, you either need to host on the default ports (80/443), or use a proxy.
With a home network, the dns can be tricky, and usually depends greatly on the specific router you have. Your options are basically:
Maybe your router has an interface for defining host overrides. OpenWRT has such a thing, and some routers have a similar dns server on them that you can add host entries to.
Get a public domain name. You can have an A record for example.com that points at a local network address. The server itself may only be accessible inside your network, but the dns will be available anywhere.
Run your own dns server and tell your router to use it as the default resolver for your network.
Maybe mDNS could suit your needs for .local domains.

How to access a website on VPS with port create?

I try to host my website for learning, on a CentOS free VPS (no support).
I’m allowed to access Apache service via IPv4 by adding a custom port.
Using the format below, I can access the server with my browser.
e.g. 12345 is my custom port that I created for default port 80:
http://xxx.xxx.xxx.xxx:12345
But I cannot access my hosted website http://mywebsite.com (‘the webpage is not available’).
I’ve created the proper DNS record on my DNS provider, and pointed the domain name to the free VPS server IPv6 address (through CloudFlare).
Note: My ISP doesn't provide IPv6 connection and the IP is not ICMP pingable (I can’t create IPv6 tunnel).
Here is my telnet test communication result (not my real IPv6 address):
[root#myserver ~]# telnet mywebsite.com 80
Trying 1a12:1234:1:1::1:1a23...
Connected to mywebsite.com.
Escape character is '^]'.
Connection closed by foreign host.
[root#myserver ~]#
Why I can’t access my website: http://mywebsite.com ?
Okay.., what fixed it was adding on Cloudflare a 'CNAME' record in addition to the existing 'AAAA' record.
Hope this help someone.

how do i make my website accessible from the internet without a static ip and from a virtual machine?

I have windows 8 host and i have installed ubuntu 14.10 server as a virtual machine in vmware. i have installed LAMP server and i am trying to host a website from it. i have created a virtual host. my website is accessible in the host machine when i go to the address 192.168.0.106.
my router info:
LAN
IP Address :192.168.0.1
INTERNET
IP Address :10.30.XXX.XXX
"what is my ip" in google: 113.XXX.XXX.XXX
how do i make my website accessible from the internet ? I know it is a dumb question, but i tried searching everywhere and could not get the solution.
Since you say that you can connect to the site from the host machine, it does not matter that it is in a VM.
You say that you can connect to your site via: 192.168.0.106 on the LAN. You need to forward connections to your WAN address (113.193.56.198) to your LAN address (192.168.0.106). You can do this in most router settings in a section called Port forwarding. Use port 80 if you're hitting the LAN IP from a browser and you don't have to add a port after the address like http:\\192.168.0.106:1234. Otherwise, use whatever port you like.
Once you get that working, it is a good idea to use a dynamic DNS service, which will connect your IP to a domain name and update the connection whenever your WAN IP changes. This way, instead of using the WAN IP in a browser, you can use your domain name and it should always work. But that's not your first problem. First get it working with the WAN IP by itself. Once you've got that working, get some DynDNS.
EDIT
If you think it should be working but can't figure out why it isn't, use a tool like nmap/zenmap to scan your WAN and LAN IPs. That will help you diagnose the problem.
A DynDNS should do the job!
It will automatically renew your dynamic ip address. All you need is; a tool that runs on your server with website.
Search for it on google, and you'll find a solution. Btw: there are, Free and paid solutions.
EDIT: by the way, your router requires additionally some port forwarding to make your website accessible from outside. Even with the DynDNS stuff installed.
Just to give you some indications.

How to know the IIS server ip for my website access

I have deployed a website in my server, how i know which what my server IP is ?
if i know my server ip , i could access my website from outside
If you know your hostname you can use nslookup to get the ip adress. Alternatively you can find all the ip adresses on the network cards using ipconfig. So either:
nslookup hostname
Or
ipconfig /all
You could also use netstat -n to find the ip adress listening on port 80 (which is the default for http)
First, check with the IIS Console. Right click web site + properties. The tab named "Web Site" shows the "IP Address". This btw could be "All unassigned", so you'd have to do an ipconfig on the server, and deduct IPs explicitly used by other web sites.
Second, beware that this address could be mapped to some other [public] address at the level of a firewall / gateway / WSD device on between the server and the client.
Third (or first), using "ping" or "nslookup" as indicated in other replies, ensure that the name that will be used as part of the url matches the IP discovered above.
Simple way is to ping your hostname. E.g.,
ping microsoft.com
Note you'll need to do this from outside your server's netork, as you may get an internal private IP otherwise.
The IP of the server is the same IP as the host (machine) where it is located, if the server is in your LAN.
You will be able to access your website from outside if your proxys allows it.
I don't really understand what you are talking about saying "my server".
try ping servername and/or ping url
Do it in the code..
Request.ServerVariables("LOCAL_ADDR")
OR
String name = "";
name = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostByName(name);
foreach (IPAddress ipaddress in ipEntry.AddressList)
{
Response.Write("IP : " + ipaddress.ToString());
}

Resources