Routing

From Klaus' wiki
Revision as of 10:26, 23 August 2018 by Klaus (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Basically routing is about telling your network part of the kernel where to send a packet to.

If you perform this command:

]$ ip route

you'll get the settings for your local computer.

From my home laptop it looks like this:

default via 192.168.10.1 dev enp0s25 proto static metric 100 
default via 192.168.10.1 dev wlp3s0 proto static metric 600 
192.168.10.0/24 dev enp0s25 proto kernel scope link src 192.168.10.183 metric 100 
192.168.10.0/24 dev wlp3s0 proto kernel scope link src 192.168.10.184 metric 600 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 

The list tells us the if a IP-packet is destined for something else than this scmputer send it to the 192.168.10.1 computer/router.

On another computer this result will appear:

default via 192.168.20.1 dev enp6s0 proto static metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
172.18.0.0/16 dev br-0186fd2cabd8 proto kernel scope link src 172.18.0.1 
192.168.20.0/24 dev enp6s0 proto kernel scope link src 192.168.20.5 metric 100

From this we can see that the default gateway to send packages to is 192.168.20.1, but for packages to 172.17.0.0/16 and 172.18.0.0/16 should go through the bridges created by the docker container handler.

Add a new route

Some times we need to telle a computer to make a new route. For instance if we would like to reach the 172.18.0.3 computer residing in a container on 192.168.20.5 from 192.168.10.183 we need to tell the router at 192.168.10.1 where to send the packages. Perform this command:

]$ ip route add 172.18.0.0/16 via 192.168.20.5

This tells the router at 192.168.10.1 the send packages destined for the 172.18.0.0 network to the gateway 192.168.20.5 - and from which we have learned from the above knows how to reach the 172.18.0.0 network.