Networking 101 : Namespaces, routing, NAT and Port Forwarding
To be able to talk to these namespaces the host interface eth0 goes through the Linux bridge.
Since the Linux bridge is an interface, we can assign an IP address to it so that eth0 can communicate with the namespaces connected to the bridge.
Now our local host has two interfaces, eth0 : 192.168.1.2 and the bridge interface, bridge_1 : 192.168.0.5.
We can ping the namespaces in the host from the eth0 interface, eth0 is also reachable from within the namespaces.
Network address translation (NAT) :
Since the address of the bridge is internal to the host, all packets going outside of the host can't use it, these packets need to use the eth0 interface, that's where NAT comes in.
NAT replaces all the packets coming from the network 192.168.0.0/24 with the address of the eth0 interface. We enable NAT using:
To be able to communicate with the namespaces inside our host, we need to add a default route to our namespaces, so all packets going outside use the bridge_1 interface:
To achieve that we would need to enable port forwarding on our host interface, so it can forward traffic coming on the eth0 interface port: 80 to the namespace running the Web server (192.168.0.1, port:80).
Creating a Linux bridge and assigning an IP address to it:
We enable the bridge interface:
Now our local host has two interfaces, eth0 : 192.168.1.2 and the bridge interface, bridge_1 : 192.168.0.5.
We can ping the namespaces in the host from the eth0 interface, eth0 is also reachable from within the namespaces.
Network address translation (NAT) :
Since the address of the bridge is internal to the host, all packets going outside of the host can't use it, these packets need to use the eth0 interface, that's where NAT comes in.
NAT replaces all the packets coming from the network 192.168.0.0/24 with the address of the eth0 interface. We enable NAT using:
To be able to communicate with the namespaces inside our host, we need to add a default route to our namespaces, so all packets going outside use the bridge_1 interface:
Accessing a web server running inside one of our namespace:
To achieve that we would need to enable port forwarding on our host interface, so it can forward traffic coming on the eth0 interface port: 80 to the namespace running the Web server (192.168.0.1, port:80).
Comments