Howto configure Debian 10 for basic routing operations

Unter NAT versteht man Network Address Traslation. Der Sinn dahinter ist es Netzwerkadressen umzuschreiben. Es kann zwischen Source NAT (SNAT), umschreiben der Quell Adresse und Destination NAT, umschreiben der Ziel Adresse unterschieden werden. Bei SNAT und DNAT wird standardmäßig immer eine Adresse auf genaue eine andere Adresse abgebildet. Für einen Zugang zum Internet muss jedoch eine öffentliche IP Adresse auf mehrere interne IP Adressen abgebildet werden. - Hierfür gibt es eine Sonderform von SNAT mit der Bezeichnung Masquerading.

Folgendes virtuelles Netzwerk dient zum Testen der Konfiguration:

PC1 und PC2 befinden sich in einem eigenen LAN Segment bzw. einem internen Netzwerk. PC3 fungiert als Firewall und benötigt 3 Schnittstellen. Die Namen der Schnittstellen können mit dem dmesg Befehl herausgefunden werden. Damit PC1 und PC2 sich mit dem Internet verbinden können muss ein Gateway in der IP Konfiguration eingetragen werden. Das erfolgt in der /etc/network/interfaces Datei.

Folgendes Beispiel zeigt die Konfigruation von PC1:

auto lo
iface lo inet loopback

auto ens33
iface ens33 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.250

Zuerst muss Fowarding in der Firewall aktiviert werden. Um Forwarding auf einer Firewall zu aktivieren folgendes Kommando auf der Konsole ausführen.

echo 1 > /proc/sys/net/ipv4/ip_forward

Der Status des IP Forwardings kann mit folgeden Kommand angezeigt werden. - Ist der Status auf 1 so ist das Forwarding aktiviert.

cat /proc/sys/net/ipv4/ip_forward

Nun sollte das Pingen zwischen den beiden äußeren Pc's möglich sein. Damit PC1 und PC2 ins Internet können muß Masquerading auf dem Routing PC aktiviert werden. Das erfolgt in Debian ab der Version 10 mittels NFT. (Net Filter Tables).

Falls das Paket nftables nicht installiert ist muss es mittels des Kommandos apt install nftables nachinstalliert werden. Folgendes Kommando dient zum aktivieren von Masquerading für das IP Netz 192.168.1.0/24. Als Output Interface wird eth0 festgelegt.

nft add table nat
nft add chain nat postrouting { type nat hook postrouting priority 100 \;}
nft add rule nat postrouting ip saddr 192.168.1.0/24 oif ens33 masquerade