Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Can anyone clarify gateway assignment for me?

What is the difference between adding gateway as 0.0.0.0 and assigning a specific ip address as a gateway?

share|improve this question
    
Are you talking about 0.0.0.0 as the destination gateway? Or 0.0.0.0 as the network for the default gateway? I've never seen 0.0.0.0 as the actual destination before, but have seen it as the network listed in the routing table. –  kurtm Oct 8 '13 at 4:03
    
@kurtm : I am asking about the assigning 0.0.0.0 as a gateway and assigning a specific ip address as a gateway. –  user2720323 Oct 8 '13 at 4:08
    
Yeah. I got that with slm's answer. My systems don't print the 0.0.0.0, they substitute in something more meaningful. The answers below should explain it. –  kurtm Oct 8 '13 at 4:14

3 Answers 3

0.0.0.0 has the specific meaning "unspecified". This roughly translates to "there is none" in the context of a gateway. Of course, this means that the network is locally connected, as there is no next hop.

As a destination, 0.0.0.0/0 is special: if there are no network bits, there can't be anything in the network number either. So, it's naturally unspecified.

However, sticking to your question, yes, it does have a special meaning. It means that the network is locally connected on that interface and no more hops are needed to get to it.

share|improve this answer

From the wikipedia page, 0.0.0.0

excerpt

In the Internet Protocol version 4 the address 0.0.0.0 is a non-routable meta-address used to designate an invalid, unknown or non applicable target. To give a special meaning to an otherwise invalid piece of data is an application of in-band signaling.

From the wikipedia page, Default Route.

excerpt

The default route in Internet Protocol Version 4 (IPv4) is designated as the zero-address 0.0.0.0/0 in CIDR notation,1 often called the quad-zero route. The subnet mask is given as /0, which effectively specifies all networks, and is the shortest match possible. A route lookup that does not match any other route, falls back to this route. Similarly, in IPv6, the default route is specified by ::/0.

In the highest-level segment of a network, administrators generally point the default route for a given host towards the router that has a connection to a network service provider. Therefore, packets with destinations outside the organization's local area network, typically destinations on the Internet or a wide area network, are forwarded to the router with the connection to that provider.

The device to which the default route points is often called the default gateway, and it often carries out other functions such as packet filtering, firewalling, or proxy server operations.

Example

In your questioning I'm going to assume that you have something like this:

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0

This is saying that for each of the network destinations (192.168.1.0 or 169.254.0.0) that the default gateway is the 0.0.0.0 destination, if a packet is NOT destined for any address within that particular network. For the 0.0.0.0 destination, use the IP address 192.168.1.254.

These rules act to funnel all the traffic that doesn't match any of the routes that we know about, to the default route.

Couple samples

So say we have a packet with IP 192.168.1.110. The first rule is checked and this IP matches that network, so it get's delivered.

If we had packet 150.12.13.1, the 3rd rule would be in effect and the packet would be routed to 192.168.1.254.

share|improve this answer
1  
You might point out that those lines for which the gateway is 0.0.0.0 are ones where the destination is reachable right on that interface. No actual gateway will be used. –  kurtm Oct 8 '13 at 4:09
    
I was trying to say that, did it not make sense? –  slm Oct 8 '13 at 4:10
1  
Didn't seem like you specifically mentioned that. It might be implied in the netstat, but someone asking the question would probably not pick it up. –  kurtm Oct 8 '13 at 4:13

Look, 0.0.0.0 is only used in routing tables--NOT for assigning to a host.

Hosts (computers with an IP address) maintain a routing table to resolve how to send their messages to the correct place.

Scenario 1: PC-A wants to send a message to PC-B on the SAME NETWORK:

1) PC-A checks its routing table to see if there is a match for the destination IP address. 2) The routing table shows that the destination is within the same network, finds the interface that is connected to that network, then forwards the message out that interface directly to the destination.

Scenario 2: PC-A wants to send a message to Server-Z on a REMOTE NETORK (NOT the same network):

1) PC-A checks its routing table and can't find a match (of course, because hosts don't keep track of hosts on remote networks--that's the routers' jobs).

2) However, the PC is configured with a quad-zero IP address and subnet mask mapped to your router (default gateway to OTHER, REMOTE, DIFFERENT networks) like this:

(0.0.0.0 0.0.0.0 192.168.0.1 interface)

What does zero mean? It means none. So, if your computer doesn't keep track of where remote hosts are, and it checks its routing table every time it wants to send a message to see if it needs to either send it to the SAME (local) network or if it needs to send it to a REMOTE network, then how does it get the message to the remote network?

It sends it to the router and lets the router do its job of routing the packet along the best path. So, the host/PC/computer needs to know that if it can't find an entry in its routing table for where to send the message (aka 0.0.0.0) then it knows to send it to the router, which is the IP address associated with the (0.0.0.0 0.0.0.0 192.168.0.1 interface) entry and uses the associated interface/NIC/Network Adapter that is connected to that.

Therefore, 0.0.0.0 is used by routing tables on hosts and routers to know where to send something when it finds zero matches for how to reach a destination and must be mapped to a router's IP address and an interface to reach that router.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.