87 lines
3.1 KiB
Markdown
87 lines
3.1 KiB
Markdown
# Essential Networking on Debian
|
|
|
|
VirtualBox has multiple options when it comes to it's networking settings.
|
|
We've already used two different ones, *NAT* and *bridged*, but we'll now try to create our own *internal* network.
|
|
For this we'll need a few minimal Debian installations.
|
|
I invite you to install at the least two basic installations.
|
|
|
|
* One will become our router
|
|
* The other one our first client
|
|
|
|
## Static routing
|
|
|
|
The most basic way of setting your network settings in Debian can be found in the `/etc/network/interfaces` file.
|
|
When you open it you'll notice it mentions it sources a folder called `interfaces.d`.
|
|
The choice is up to you whether you set your networking settings in this file or create a new file in the folder but I advise you to go for the second way.
|
|
Don't just *copy/paste* the code below, check whether the interface names and ranges make sense!
|
|
|
|
```bash
|
|
auto eth0
|
|
iface eth0 inet static
|
|
address 10.0.0.1
|
|
netmask 255.255.255.0
|
|
gateway 10.0.0.1
|
|
```
|
|
|
|
![overview](./network_basic.png)
|
|
|
|
If you set both machines with addresses in the same range, you should be able to ping each other.
|
|
Have a go at this until you can make it work.
|
|
Which service do you have to restart of reload to apply your changes?
|
|
|
|
## Forwarding traffic
|
|
|
|
One of our machines is supposed to be a router and the other a client.
|
|
Right now we can just ping between both machines but the outside world is completely invisible to us.
|
|
How can we tackle this?
|
|
Do we need more equipment?
|
|
|
|
An overview of what we would like to accomplish can be seen below.
|
|
|
|
![overview](./network_large.png)
|
|
|
|
In VirtualBox we can add more than one network adapter.
|
|
On the router machine I would like you to add a second network interface and set it to *bridged mode*.
|
|
When you reboot you should notice you have two network cards.
|
|
Can you ping outside of your network now?
|
|
|
|
You could try and add a dhcp configuration to your `/etc/network/interfaces` file for this second interface.
|
|
Once this is done, how do you ask for an IP address from the dhcp server?
|
|
Have a look at the `dhclient` program to see how it works.
|
|
|
|
Now, if everything went OK your router should have two IP addresses, one in the 10.0.0.0/24 range and one in the 192.168.0.0/24 range.
|
|
Who gave you this second address?
|
|
Can the client ping both IP addresses?
|
|
Can the client now ping outside of the network?
|
|
|
|
There are **two** main things you need to do in order for the router to actually route.
|
|
|
|
1. IP forwarding needs to be setup on the router
|
|
2. NAT needs to be enabled
|
|
|
|
```bash
|
|
sysctl net.ipv4.ip_forward=1
|
|
iptables -t nat -A POSTROUTING -j MASQUERADE
|
|
```
|
|
|
|
These settings won't save themselves so next time you reboot they'll be missing.
|
|
There are multiple ways of setting this up.
|
|
Have a look around and find me a good solution!
|
|
|
|
### Extra Challenge
|
|
|
|
Your client machines are now behind a NAT.
|
|
Can you think of a way to ssh into them?
|
|
|
|
## DHCP
|
|
|
|
We'll start from scratch again now.
|
|
I would like you to create a new mini network of machines.
|
|
You can install a few new Debian machines, each with a different `hostname`
|
|
|
|
![big network](./network_big.png)
|
|
|
|
## Solo labo
|
|
|
|
![solo labo layout](./network_solo.png)
|