Benutzer-Werkzeuge

Webseiten-Werkzeuge


routing

Routing

ip Befehl

Mit dem ip-Befehl lassen sich viele Netzwerkeinstellungen manipulieren.

IP-Adressen

IP-Adressen anzeigen

user@host:~#

ip a			# Abkürzung für ip addr

IP-Adresse hinzufügen

Bei der Vergabe von IP-Adressen muss die Subnetzmaske in der CIDR-Notation mit angegeben werden, sonst wird angenommen, dass ein /32-Netz mit nur einem einzigen Host verwendet wird. Falls nur eine Netzwerkkarte angeschlossen ist, muss das Interface nicht angegeben werden.

user@host:~#

ip a add 10.0.100.1/24 dev enp1s0

IP-Adresse entfernen

user@host:~#

ip a del 10.0.100.1/24 dev enp1s0

Routen

Routen anzeigen

user@host:~#

ip r			# Abkürzung für ip route

Route hinzufügen

So kann man eine Default-Route über das Gateway 10.0.100.1 hinzufügen:

user@host:~#

ip r add default via 10.0.100.1 dev enp1s0
So fügt man eine Route zu dem 10.0.200.0/24-Netzwerk über das Gateway 10.0.200.1 hinzu:

user@host:~#

ip r add 10.0.200.0/24 via 10.0.200.1 dev enp1s0

Route löschen

So kann man eine default-Route löschen. Da es nur eine default-Route geben kann, braucht man kein Interface anzugeben.

user@host:~#

ip r del default
So kann man die Route zu dem Netzwerk 10.0.200.0/24 über das Gateway 10.0.200.1 löschen:

user@host:~#

ip r del 10.0.200.0/24 via 10.0.200.1 dev enp1s0

nft Befehl

nft steht für nftables, das wiederum für netfilter tables, und das ist der Nachfolger von iptables. Dieses Programm wird für Firewall, bzw. Packet filtering verwendet.

Wir benötigen diesen Befehl hauptsächlich um NAT auf unseren Routern zu betreiben.

NAT einrichten

Zunächst wird eine neue Tabelle nat mit den pre- und postrouting Chains eingerichtet:

user@host:~#

nft add table nat
nft add chain nat prerouting { type nat hook prerouting priority 0 \; }
nft add chain nat postrouting { type nat hook postrouting priority 0 \; }
Auf diese Weise soll nun source NAT eingerichtet werden, welches sich liest: „source network address translation“. Dies ist vielleicht leichter zu verdauen, wenn man dazu „Quelladressenübersetzung“ sagt, was die folgende rule, die hinzugefügt werden soll besser erklären kann:

user@host:~#

nft add rule nat postrouting ip saddr 10.0.1.0/24 oif enp0s7 snat 134.99.246.151
                                |_______________| |________| |_________________|
                                        |              |             |
  nimm diesen Source-Addressbereich-----+              |             |     
                                                       |             |  
  und übersetze ihn am ausgehenden interface-----------+             |
                                                                     |  
  zu dieser Adresse, die dann als Source-Adresse stehen soll---------+
Falls man nun doch die Adressen und Netzwerke durcheinander gebracht hat, kann man die chain postrouting so wieder zurücksetzen:

user@host:~#

nft flush chain ip nat postrouting
Dann kann man sich das entstandene ruleset ansehen:

user@host:~#

nft list ruleset
Und für die Ewigkeit in Datei schreiben, damit es auch einen Reboot überlebt:

user@host:~#

nft list ruleset > /etc/nftables.conf
Falls man Veränderungen in der Datei /etc/nftables vornehmen möchte und diese dann wirksam werden, muss der nftables-Dienst neu gestartet werden:

user@host:~#

systemctl restart nftables

Welche Netzwerkkarte ist physisch verbunden?

Das geht leicht mit diesem befehl:

user@host:~#

grep "" /sys/class/net/*/* 2>/dev/null | grep operstate

Packet forwarding einschalten

Damit ein Router überhaupt als solcher funktionieren kann, muss packet forwarding eingeschaltet werden. Das kann man indem man die Datei /etc/sysctl.conf bearbeitet und die Zeile net.ipv4.ip_forward=1 auskommentiert oder indem man diesen Einzeiler ausführt:

user@host:~#

sed -i '/^.*ip_forward=1/s/^#//' /etc/sysctl.conf
So kann man es ausschalten:

user@host:~#

sed -i '/^.*ip_forward=1/s/^/#/' /etc/sysctl.conf

NETLAB Test-Setup line-Topologie

router

/etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s7
iface enp0s7 inet static
	address 134.99.246.151
	netmask 255.255.255.0
	gateway 134.99.246.1

# The secondary network interface
allow-hotplug enp1s6
iface enp1s6 inet static
	address 10.0.1.0
	netmask 255.255.255.254
	up	ip route add 10.0.0.0/16 via 10.0.1.1 dev enp1s6
	down	ip route del 10.0.0.0/16 via 10.0.1.1 dev enp1s6

/etc/nftables.conf

table ip nat {
	chain post {
		type nat hook postrouting priority 0; policy accept;
		ip saddr 10.0.1.1 oif "enp0s7" snat to 134.99.246.151
	}
}
table inet filter {
	chain input {
		type filter hook input priority 0; policy accept;
	}
	chain forward {
		type filter hook forward priority 0; policy accept;
	}
	chain output {
		type filter hook output priority 0; policy accept;
	}
}

host1

/etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp1s0
iface enp1s0 inet static
	address 10.0.1.1
	netmask 255.255.255.254
	gateway 10.0.1.0

allow-hotplug enp1s0
iface enp1s0 inet static
	address 10.0.2.0
	netmask 255.255.255.254

/etc/nftables.conf

table ip nat {
	chain post {
		type nat hook postrouting priority 0; policy accept;
		ip saddr 10.0.2.1 oif "enp1s0" snat to 10.0.1.1
	}
}
table inet filter {
	chain input {
		type filter hook input priority 0; policy accept;
	}
	chain forward {
		type filter hook forward priority 0; policy accept;
	}
	chain output {
		type filter hook output priority 0; policy accept;
	}
}

host2

/etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp1s0
iface enp1s0 inet static
	address 10.0.2.1
	netmask 255.255.255.254
	gateway 10.0.2.0

routing.txt · Zuletzt geändert: 2018/02/19 22:19 von admin