* Copied, rearranged and modified the contents of the old site directory for Jekyll static site generator, into the website directory * Added some Jekyll-specific things for looks, including: * _config.yaml, Gemfile.* and 404.html files * _data, _layouts and assets directories and their content * Added .github/workflows/github-pages-publish.yml workflow
68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
---
|
|
title: IP Addresses, Routes and Networks
|
|
menu_order: 40
|
|
search_type: Documentation
|
|
---
|
|
|
|
|
|
Weave Net runs containers on a private network, which means that IP addresses are isolated from the rest of the
|
|
Internet, and that you don't have to worry about addresses clashing.
|
|
|
|
You can of course also manually change the IP of any given container or subnet on a Weave network. See, [How to Manually Specify IP Addresses and Subnets]({{ '/tasks/ipam/manual-ip-address' | relative_url }})
|
|
|
|
### Some Definitions
|
|
|
|
- _IP_ is the Internet Protocol, the fundamental basis of network
|
|
communication between billions of connected devices.
|
|
- The _IP address_ is (for most purposes) the four numbers separated
|
|
by dots, like `192.168.48.12`. Each number is one byte in size, so can
|
|
be between 0 and 255.
|
|
- Each IP address lives on a _Network_, which is some set of those
|
|
addresses that all know how talk to each other. The network address
|
|
is some prefix of the IP address, like `192.168.48`. To show
|
|
which part of the address is the network, we append a slash
|
|
and then the number of bits in the network prefix, like
|
|
`/24`.
|
|
- A _route_ is an instruction for how to deal with traffic destined
|
|
for somewhere else - it specifies a Network, and a way to talk to
|
|
that network. Every device using IP has a table of routes, so for
|
|
any destination address it looks up that table, finds the right
|
|
route, and sends it in the direction indicated.
|
|
|
|
### IP Address Notation in Weave
|
|
|
|
In the IP address `10.4.2.6/8`, the network prefix is the first 8 bits
|
|
\- `10`. Written out in full, that network is `10.0.0.0/8`.
|
|
|
|
The most common prefix lengths are 8, 16 and 24, but there is nothing
|
|
stopping you using a /9 network or a /26. For example, `6.250.3.1/9` is on the
|
|
`6.128.0.0/9` network.
|
|
|
|
Several websites offer calculators to decode this kind of address, see, for example: [IP Address Guide](http://www.ipaddressguide.com/cidr).
|
|
|
|
The following is an example route table for a container that is attached to a Weave
|
|
network:
|
|
|
|
# ip route show
|
|
default via 172.17.42.1 dev eth0
|
|
10.2.2.0/24 dev ethwe proto kernel scope link src 10.2.2.1
|
|
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.170
|
|
|
|
It has two interfaces: one that Docker gave it called `eth0`, and one
|
|
that weave gave it called `ethwe`. They are on networks
|
|
`172.17.0.0/16` and `10.2.2.0/24` respectively, and if you want to
|
|
talk to any other address on those networks then the routing table
|
|
tells it to send directly down that interface. If you want to talk to
|
|
anything else not matching those rules, the default rule says to send
|
|
it to `172.17.42.1` down the eth0 interface.
|
|
|
|
So, suppose this container wants to talk to another container at
|
|
address `10.2.2.9`; it will send down the ethwe interface and weave
|
|
Net will take care of routing the traffic. To talk an external server
|
|
at address `74.125.133.128`, it looks in its routing table, doesn't
|
|
find a match, so uses the default rule.
|
|
|
|
**See Also**
|
|
|
|
* [Allocating IPs in a Specific Range]({{ '/tasks/ipam/configuring-weave' | relative_url }})
|