Benutzer-Werkzeuge

Webseiten-Werkzeuge


routing

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
routing [2018/02/18 20:37]
admin
routing [2018/02/19 22:19]
admin [Welche Netzwerkkarte ist physisch verbunden?]
Zeile 1: Zeile 1:
 ====== Routing ====== ====== Routing ======
-  * [[https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing|CIDR]] +  * [[http://blog.noviantech.com/2010/12/22/debian-router-gateway-in-15-minutes/]]
-===== Nützliche Programme ===== +
-Man kann sich zahlreicher Tools bedienen, die teilweise die gleichen Funktionen +
-erfüllen können. Hier werden einige vorgestellt.\\ +
  
-===== Packet forwarding einschalten ===== +===== ip Befehl ===== 
-Damit ein Router überhaupt als solcher funktionieren kann, muss packet +Mit dem ''ip''-Befehl lassen sich viele Netzwerkeinstellungen manipulieren. 
-forwarding eingeschaltet werden:+==== IP-Adressen ==== 
 +=== IP-Adressen anzeigen === 
 +<code|user@host:~#> 
 +ip a # Abkürzung für ip addr 
 +</code>
  
- +=== IP-Adresse hinzufügen === 
-==== netstat ==== +Bei der Vergabe von IP-Adressen muss die Subnetzmaske in der CIDR-Notation mit 
-Das Programm ''netstat'' kann mit dem Paket ''net-tools'' nachinstalliert +angegeben werden, sonst wird angenommen, dass ein ''/32''-Netz mit nur einem 
-werden:+einzigen Host verwendet wird. Falls nur eine Netzwerkkarte angeschlossen ist, 
 +muss das Interface nicht angegeben werden.
 <code|user@host:~#> <code|user@host:~#>
-apt-get install net-tools+ip a add 10.0.100.1/24 dev enp1s0
 </code> </code>
-Damit kann man sich die Routing-Tabelle anzeigen lassen:+=== IP-Adresse entfernen ===
 <code|user@host:~#> <code|user@host:~#>
-netstat -r +ip a del 10.0.100.1/24 dev enp1s0
-------------------------------------------------------------------- +
-Kernel-IP-Routentabelle +
-Ziel            Router          Genmask         Flags   MSS Fenster irtt Iface +
-default         10.0.2.2        0.0.0.0         UG        0 0          0 enp0s3 +
-10.0.2.0        0.0.0.0         255.255.255.0           0 0          0 enp0s3 +
-link-local      0.0.0.0         255.255.0.0             0 0          0 enp0s3+
 </code> </code>
  
-Einen ähnlichen Output liefert das ''route''-Kommando, welches bereits vorinstalliert sein sollte:+==== Routen ==== 
 +=== Routen anzeigen ===
 <code|user@host:~#> <code|user@host:~#>
-route +ip r # Abkürzung für ip route
-------------------------------------------------------------------- +
-Kernel-IP-Routentabelle +
-Ziel            Router          Genmask         Flags Metric Ref    Use Iface +
-default         10.0.2.2        0.0.0.0         UG    0      0        0 enp0s3 +
-10.0.2.0        0.0.0.0         255.255.255.0            0        0 enp0s3 +
-link-local      0.0.0.0         255.255.0.0         1000          0 enp0s3+
 </code> </code>
  
- +=== Route hinzufügen === 
-===== Routen hinzufügen ===== +So kann man eine Default-Route über das Gateway ''10.0.100.1'' hinzufügen:
-==== ip route ====+
 <code|user@host:~#> <code|user@host:~#>
 +ip r add default via 10.0.100.1 dev enp1s0
 +</code>
 +So fügt man eine Route zu dem ''10.0.200.0/24''-Netzwerk über das Gateway
 +''10.0.200.1'' hinzu:
 +<code|user@host:~#>
 +ip r add 10.0.200.0/24 via 10.0.200.1 dev enp1s0
 +</code>
 +=== Route löschen ===
 +So kann man eine ''default''-Route löschen. Da es nur eine default-Route geben
 +kann, braucht man kein Interface anzugeben.
 +<code|user@host:~#>
 +ip r del default
 +</code>
 +So kann man die Route zu dem Netzwerk ''10.0.200.0/24'' über das Gateway
 +''10.0.200.1'' löschen:
 +<code|user@host:~#>
 +ip r del 10.0.200.0/24 via 10.0.200.1 dev enp1s0
 +</code>
  
 +===== 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 [[https://en.wikipedia.org/wiki/Firewall_computing|Firewall]], bzw. Packet
 +filtering verwendet.
 +  * [[https://wiki.debian.org/nftables|Debian Wiki nftables]]
 +  * [[https://wiki.archlinux.org/index.php/Nftables|Arch Wiki nftables]]
 +Wir benötigen diesen Befehl hauptsächlich um
 +[[https://de.wikipedia.org/wiki/Netzwerkadressübersetzung|NAT]] auf unseren
 +Routern zu betreiben.
 +==== NAT einrichten ====
 +Zunächst wird eine neue Tabelle ''nat'' mit den ''pre''- und ''postrouting'' Chains eingerichtet:
 +<code|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 \; }
 </code> </code>
-===== Routen löschen ===== +Auf diese Weise soll nun ''source NAT'' eingerichtet werden, welches sich 
-===== Routen anzeigen ===== +liest: "source network address translation". Dies ist vielleicht leichter zu 
-==== ip route ====+verdauen, wenn man dazu "Quelladressenübersetzung" sagt, was die 
 +folgende ''rule'', die hinzugefügt werden soll besser erklären kann:
 <code|user@host:~#> <code|user@host:~#>
-ip route +nft add rule nat postrouting ip saddr 10.0.1.0/24 oif enp0s7 snat 134.99.246.151 
-------------------------------------------------------------------- +                                |_______________| |________| |_________________| 
-default via 10.0.2.2 dev enp0s3 +                                        |              |             | 
-10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 +  nimm diesen Source-Addressbereich-----+              |                  
-169.254.0.0/16 dev enp0s3 scope link metric 1000+                                                                     
 +  und übersetze ihn am ausgehenden interface-----------+             | 
 +                                                                       
 +  zu dieser Adresse, die dann als Source-Adresse stehen soll---------+ 
 +</code> 
 +Falls man nun doch die Adressen und Netzwerke durcheinander gebracht hat, kann 
 +man die chain ''postrouting'' so wieder zurücksetzen: 
 +<code|user@host:~#> 
 +nft flush chain ip nat postrouting 
 +</code> 
 +Dann kann man sich das entstandene ''ruleset'' ansehen: 
 +<code|user@host:~#> 
 +nft list ruleset 
 +</code> 
 +Und für die Ewigkeit in Datei schreiben, damit es auch einen Reboot überlebt: 
 +<code|user@host:~#> 
 +nft list ruleset > /etc/nftables.conf 
 +</code> 
 +Falls man Veränderungen in der Datei ''/etc/nftables'' vornehmen möchte und diese 
 +dann wirksam werden, muss der ''nftables''-Dienst neu gestartet werden: 
 +<code|user@host:~#> 
 +systemctl restart nftables
 </code> </code>
  
-==== ip route ==== +===== Welche Netzwerkkarte ist physisch verbunden? ===== 
-===== NETLAB Test-Setup ===== +  * [[https://stackoverflow.com/questions/808560/how-to-detect-the-physical-connected-state-of-a-network-cable-connector]] 
-==== line-Topologie ==== +Das geht leicht mit diesem befehl: 
-Um eine line-Topologie zwischen Routern einzurichten, die nur eine +<code|user@host:~#> 
-Netzwerkkarte besitzen und alle an einem switch angeschlossen sind, benötigt +grep "" /sys/class/net/*/* 2>/dev/null | grep operstate 
-man ein paar Dinge+</code>
-  * /31-Verbindungsnetze zwischen den Routern +
-    zwei IP-Adressen pro Interface +
-  * NAT muss eingerichtet sein +
-    * nftables +
-  * einen Gateway nach außen+
  
-==== NAT mit nftables ==== +===== Packet forwarding einschalten ===== 
-  * [[http://computer-outlines.over-blog.com/article-nftables-6-a-nftables-linux-internet-gateway-123294152.html|Anleitung]]+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: 
 +<code|user@host:~#> 
 +sed -i '/^.*ip_forward=1/s/^#//' /etc/sysctl.conf 
 +</code> 
 +So kann man es ausschalten: 
 +<code|user@host:~#> 
 +sed -i '/^.*ip_forward=1/s/^/#/' /etc/sysctl.conf 
 +</code>
  
-==== mehrere IP-Adressen auf einem Interface ==== +===== NETLAB Test-Setup line-Topologie ===== 
-  * [[https://wiki.debian.org/NetworkConfiguration#Legacy_method|Debian-Wiki]]+  * [[http://computer-outlines.over-blog.com/article-nftables-6-a-nftables-linux-internet-gateway-123294152.html|NAT mit nftables]] 
 +  * [[https://wiki.debian.org/NetworkConfiguration#Legacy_method|Mehrere IP-Adressen auf einem Interface]]
  
 ==== router ==== ==== router ====
Zeile 87: Zeile 138:
  netmask 255.255.255.0  netmask 255.255.255.0
  gateway 134.99.246.1  gateway 134.99.246.1
- dns-nameserver 134.99.24.129 134.99.58.129 
- dns-search phil-fak.uni-duesseldorf.de 
  
 # The secondary network interface # The secondary network interface
Zeile 95: Zeile 144:
  address 10.0.1.0  address 10.0.1.0
  netmask 255.255.255.254  netmask 255.255.255.254
- up ip route add 10.0.0.0/16 via 10.0.1.1 dev enp1s6+ 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  down ip route del 10.0.0.0/16 via 10.0.1.1 dev enp1s6
 </file> </file>
routing.txt · Zuletzt geändert: 2018/02/19 22:19 von admin