Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
routing [2018/02/18 19:30] 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/ |
- | ===== 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 ===== | + | |
- | Damit ein Router überhaupt als solcher funktionieren kann, muss packet | + | |
- | forwarding eingeschaltet werden: | + | |
+ | ===== ip Befehl ===== | ||
+ | Mit dem '' | ||
+ | ==== IP-Adressen ==== | ||
+ | === IP-Adressen anzeigen === | ||
+ | < | ||
+ | ip a # Abkürzung für ip addr | ||
+ | </ | ||
- | ==== netstat ==== | + | === IP-Adresse hinzufügen |
- | Das Programm '' | + | Bei der Vergabe von IP-Adressen muss die Subnetzmaske in der CIDR-Notation |
- | werden: | + | angegeben werden, sonst wird angenommen, dass ein '' |
+ | einzigen Host verwendet wird. Falls nur eine Netzwerkkarte angeschlossen ist, | ||
+ | muss das Interface nicht angegeben | ||
< | < | ||
- | apt-get install net-tools | + | ip a add 10.0.100.1/ |
</ | </ | ||
- | Damit kann man sich die Routing-Tabelle anzeigen lassen: | + | === IP-Adresse entfernen === |
< | < | ||
- | netstat -r | + | ip a del 10.0.100.1/24 dev enp1s0 |
- | ------------------------------------------------------------------- | + | |
- | Kernel-IP-Routentabelle | + | |
- | Ziel Router | + | |
- | default | + | |
- | 10.0.2.0 | + | |
- | link-local | + | |
</ | </ | ||
- | Einen ähnlichen Output liefert das '' | + | ==== Routen ==== |
+ | === Routen anzeigen === | ||
< | < | ||
- | route | + | ip r # Abkürzung für ip route |
- | ------------------------------------------------------------------- | + | |
- | Kernel-IP-Routentabelle | + | |
- | Ziel Router | + | |
- | default | + | |
- | 10.0.2.0 | + | |
- | link-local | + | |
</ | </ | ||
- | + | === Route hinzufügen === | |
- | ===== Routen | + | So kann man eine Default-Route über das Gateway '' |
- | ==== ip route ==== | + | |
< | < | ||
+ | ip r add default via 10.0.100.1 dev enp1s0 | ||
+ | </ | ||
+ | So fügt man eine Route zu dem '' | ||
+ | '' | ||
+ | < | ||
+ | ip r add 10.0.200.0/ | ||
+ | </ | ||
+ | === Route löschen === | ||
+ | So kann man eine '' | ||
+ | kann, braucht man kein Interface anzugeben. | ||
+ | < | ||
+ | ip r del default | ||
</ | </ | ||
- | ===== Routen | + | So kann man die Route zu dem Netzwerk '' |
- | ===== Routen anzeigen ===== | + | '' |
- | ==== ip route ==== | + | |
< | < | ||
- | ip route | + | ip r del 10.0.200.0/24 via 10.0.200.1 dev enp1s0 |
- | ------------------------------------------------------------------- | + | |
- | default via 10.0.2.2 dev enp0s3 | + | |
- | 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 | + | |
- | 169.254.0.0/ | + | |
</ | </ | ||
- | ==== ip route ==== | + | ===== nft Befehl |
- | ===== NETLAB Test-Setup | + | '' |
- | ==== line-Topologie ==== | + | ist der Nachfolger von '' |
- | Um eine line-Topologie zwischen Routern einzurichten, die nur eine | + | filtering verwendet. |
- | Netzwerkkarte besitzen | + | * [[https:// |
- | man ein paar Dinge: | + | * [[https://wiki.archlinux.org/index.php/ |
- | * /31-Verbindungsnetze zwischen den Routern | + | Wir benötigen diesen Befehl hauptsächlich um |
- | * zwei IP-Adressen pro Interface | + | [[https://de.wikipedia.org/wiki/ |
- | * NAT muss eingerichtet sein | + | Routern zu betreiben. |
- | * nftables | + | ==== NAT einrichten |
- | * einen Gateway nach außen | + | Zunächst wird eine neue Tabelle '' |
- | Dabei | + | <code|user@host: |
- | + | nft add table nat | |
- | ==== NAT mit nftables | + | nft add chain nat prerouting { type nat hook prerouting priority |
- | * [[http://computer-outlines.over-blog.com/article-nftables-6-a-nftables-linux-internet-gateway-123294152.html|Anleitung]] | + | nft add chain nat postrouting { type nat hook postrouting priority |
- | + | ||
- | ==== mehrere IP-Adressen auf einem Interface ==== | + | |
- | * [[https://wiki.debian.org/NetworkConfiguration# | + | |
- | + | ||
- | ==== router | + | |
- | < | + | |
- | ip a | + | |
- | ------------------------------------------------------------------- | + | |
- | default via 134.99.246.1 dev enp0s7 onlink | + | |
- | 10.0.100.0/24 dev enp1s6 proto kernel scope link src 10.0.100.1 | + | |
- | 134.99.246.0/24 dev enp1s6 proto kernel scope link src 134.99.246.151 | + | |
</ | </ | ||
- | < | + | Auf diese Weise soll nun '' |
- | ip r | + | liest: " |
- | ------------------------------------------------------------------- | + | verdauen, wenn man dazu " |
- | default via 134.99.246.1 dev enp0s7 onlink | + | folgende '' |
- | 10.0.100.0/ | + | <code|user@host: |
- | 134.99.246.0/ | + | nft add rule nat postrouting |
+ | |_______________| |________| |_________________| | ||
+ | | | | | ||
+ | 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 |
- | ip a add 10.0.1.0/31 dev enp1s6 | + | man die chain '' |
+ | <code|user@host: | ||
+ | nft flush chain ip nat postrouting | ||
</ | </ | ||
- | + | Dann kann man sich das entstandene '' | |
- | ==== host1 ==== | + | <code|user@host: |
- | < | + | nft list ruleset |
- | ip a | + | |
- | ------------------------------------------------------------------- | + | |
- | 10.0.101.0/ | + | |
</ | </ | ||
- | < | + | Und für die Ewigkeit in Datei schreiben, damit es auch einen Reboot überlebt: |
- | ip r | + | <code|user@host: |
- | ------------------------------------------------------------------- | + | nft list ruleset > /etc/ |
- | 10.0.101.0/24 dev enp1s0 proto kernel scope link src 10.0.101.1 | + | |
</ | </ | ||
- | < | + | Falls man Veränderungen in der Datei ''/ |
- | ip a add 10.0.1.1/31 dev enp1s0 | + | dann wirksam werden, muss der '' |
- | ip a add 10.0.2.0/31 dev enp1s0 | + | <code|user@host: |
+ | systemctl restart nftables | ||
</ | </ | ||
- | < | + | |
- | ip route add default via 10.0.1.1 | + | ===== Welche Netzwerkkarte ist physisch verbunden? ===== |
+ | * [[https:// | ||
+ | Das geht leicht mit diesem befehl: | ||
+ | <code|user@host: | ||
+ | grep "" | ||
</ | </ | ||
- | ==== host2 ==== | + | ===== Packet forwarding einschalten |
- | < | + | Damit ein Router überhaupt als solcher funktionieren kann, muss packet |
- | ip a | + | forwarding eingeschaltet werden. Das kann man indem man die Datei |
- | ------------------------------------------------------------------- | + | ''/ |
- | 10.0.102.0/24 dev enp1s0 proto kernel scope link src 10.0.102.1 | + | auskommentiert oder indem man diesen Einzeiler ausführt: |
+ | <code|user@host: | ||
+ | sed -i '/^.*ip_forward=1/ | ||
</ | </ | ||
- | < | + | So kann man es ausschalten: |
- | ip a add 10.0.2.1/31 dev enp1s0 | + | <code|user@host: |
- | </code> | + | sed -i '/^.*ip_forward=1/s/^/#/' /etc/sysctl.conf |
- | < | + | |
- | ip route add default via 10.0.2.1 dev enp1s0 | + | |
</ | </ | ||
+ | ===== NETLAB Test-Setup line-Topologie ===== | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | ==== router ==== | ||
+ | < | ||
+ | source / | ||
+ | |||
+ | # 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 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | table ip nat { | ||
+ | chain post { | ||
+ | type nat hook postrouting priority 0; policy accept; | ||
+ | ip saddr 10.0.1.1 oif " | ||
+ | } | ||
+ | } | ||
+ | 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 ==== | ||
+ | < | ||
+ | source / | ||
+ | |||
+ | # 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 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | table ip nat { | ||
+ | chain post { | ||
+ | type nat hook postrouting priority 0; policy accept; | ||
+ | ip saddr 10.0.2.1 oif " | ||
+ | } | ||
+ | } | ||
+ | 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 ==== | ||
+ | < | ||
+ | source / | ||
+ | |||
+ | # 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 | ||
+ | </ | ||