Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux_netzwerkkonfiguration

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux_netzwerkkonfiguration [2023-12-25 22:18:05] davidlinux_netzwerkkonfiguration [2024-07-07 02:32:03] (aktuell) – [Wechseln von dhcpcd/networking zu networkd] manfred
Zeile 1: Zeile 1:
 +====== Linux Netzwerkkonfiguration ======
 +
 +  > ip link set dev enp6s0 down
 +  > ip link set dev enp6s0 up
 +  > ip a
 +
 +  * [[Netzwerkkarten bündeln - Bonding]]
 +
 +  > ls -l /sys/class/net/
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 em1 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/net/em1
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 em2 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.1/net/em2
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 em3 -> ../../devices/pci0000:00/0000:00:03.0/0000:02:00.0/net/em3
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 em4 -> ../../devices/pci0000:00/0000:00:03.0/0000:02:00.1/net/em4
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 lo -> ../../devices/virtual/net/lo
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p1p1 -> ../../devices/pci0000:00/0000:00:06.0/0000:05:00.0/net/p1p1
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p1p2 -> ../../devices/pci0000:00/0000:00:06.0/0000:05:00.1/net/p1p2
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p2p1 -> ../../devices/pci0000:00/0000:00:05.0/0000:04:00.0/net/p2p1
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p2p2 -> ../../devices/pci0000:00/0000:00:05.0/0000:04:00.1/net/p2p2
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p3p1 -> ../../devices/pci0000:00/0000:00:09.0/0000:07:00.0/net/p3p1
 +  lrwxrwxrwx 1 root root 0 Oct 17 13:00 p3p2 -> ../../devices/pci0000:00/0000:00:09.0/0000:07:00.1/net/p3p2
 +
 +
 +===== zusätzliche IP's auf eine Netzwerkkarte konfigurieren (Alias-IP) ===== 
 +
 +
 +==== mit ifconfig ====
 +
 +setzen:
 +  > ifconfig eth0:0 192.168.1.40/32 up
 +
 +entfernen:
 +  > ifconfig eth0:0 down
 +
 +
 +==== mit ip ====
 +
 +setzen:
 +  > ip addr add 192.168.1.40/32 dev eth0
 +
 +oder Linux-2.0-kompatibel (mit Label):
 +  > ip addr add 192.168.1.40/32 dev eth0 label eth0:0
 +
 +entfernen:
 +  > ip addr add 192.168.1.40/32 dev eth0
 +  oder
 +  > ip addr add 192.168.1.40/32 dev eth0 label eth0:0
 +
 +
 +===== Wechsel zu systemd-networkd und systemd-resolved oder unbound =====
 +
 +
 +==== mit unbound ====
 +
 +  * unbound config: ''/etc/unbound/unbound.conf.d/default.conf'' (siehe [[::dns:dns_mit_unbound]])
 +  * resolv.conf config: ''/etc/resolv.conf''
 +
 +  apt install unbound
 +  systemctl disable systemd-resolved
 +  systemctl enable unbound
 +
 +  unlink /etc/resolv.conf; vim /etc/resolv.conf
 +<code ini /etc/resolv.conf>
 +nameserver ::1
 +nameserver 127.0.0.1
 +options edns0 trust-ad
 +search fritz.box
 +</code>
 +
 +
 +==== mit systemd-resolved ====
 +
 +  * systemd-resolved config: ''/etc/systemd/resolved.conf'' (siehe [[::systemd#systemd-resolved]])
 +  * resolv.conf config: ''/etc/resolv.conf''
 +
 +  apt install systemd-resolved
 +  systemctl disable unbound
 +  systemctl enable systemd-resolved
 +
 +  ln -fs /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
 +
 +==== networkd config ====
 +
 +//anpassen je nachdem, welcher dns, siehe oben//
 +
 +  * systemd-networkd config: ''/etc/systemd/network/default.network'' (siehe [[::systemd#systemd-networkd]])
 +
 +  systemctl disable network-manager
 +  systemctl disable networking
 +  systemctl enable systemd-networkd
 +  apt purge dhcpcd5 openresolv isc-dhcp-client isc-dhcp-common ifupdown
 +  reboot now && exit
 +
 +
 +===== Netplan (ab Ubuntu 18.04) =====
 +
 +  * [[https://wiki.ubuntuusers.de/Netplan/]]
 +    * [[https://wiki.ubuntuusers.de/Netplan/Deaktivieren/|Netplan deaktivieren]]
 +  * [[https://www.linux.com/learn/intro-to-linux/2018/9/how-use-netplan-network-configuration-tool-linux]]
 +  * **[[https://netplan.io/faq]]**
 +  * [[https://bugs.launchpad.net/ubuntu/+source/nplan/+bug/1743200|No support for interface labels]]
 +
 +alle Netplan-Konfigurationen aufrufen:
 +  > vi /etc/netplan/*.yaml
 +  > vi /lib/netplan/*.yaml
 +  > vi /run/netplan/*.yaml
 +
 +die Netplan-Konfigurationen starten/anwenden
 +  > netplan generate
 +  > netplan apply
 +
 +  > netplan try
 +
 +ein NIC hoch- bzw. runterfahren:
 +  > ip link set enp0s3 up
 +  > ip link set enp0s3 down
 +
 +NameServer anzeigen:
 +  > systemd-resolve --status
 +
 +eine IP von einem NIC entfernen:
 +  > ip address del 123.123.123.123/24 dev enp0s3
 +
 +Die IP wird zwar beim Bootvorgang nicht mehr geladen, wenn die Konfiguration fehlt aber will man eine IP von einem laufenden System entfernen, dann geht das nicht, wenn man einfach nur die Konfigurationsdatei entfernt und ''netplan apply'' aufruft.
 +
 +
 +==== statische Netzwerkkonfiguration ====
 +
 +<file yaml /etc/netplan/01-netcfg.yaml>
 +network:
 +  version: 2
 +  renderer: networkd
 +  ethernets:
 +    enp59s0f0:
 +      addresses: [192.168.24.21/24]
 +      #gateway4: 192.168.24.1       # alt, statt dessen jetzt "default routes"
 +      routes:
 +        - to: default
 +          via: 192.168.24.1
 +      nameservers:
 +        search: [domain.net]
 +        addresses: [192.168.110.170,192.168.110.171]
 +</file>
 +
 +  > mv /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.SiK
 +  > vi /etc/netplan/eth0.yaml
 +<file yaml /etc/netplan/eth0.yaml>
 +network:
 +  version: 2
 +  renderer: networkd
 +  ethernets:
 +    eth0:
 +      dhcp4: no
 +      dhcp-identifier: mac
 +      addresses:
 +        - 10.10.10.2/24
 +      gateway4: 10.10.10.1
 +      nameservers:
 +        addresses:
 +          - 10.10.10.1
 +          - 1.1.1.1
 +</file>
 +
 +  > netplan generate
 +  > netplan apply
 +
 +Hier wird der Ethernetschnittstelle ''eth0'' die IP-Adresse ''10.10.10.2'' zugewiesen, ''DHCP'' deaktiviert, als Gateway ''10.10.10.1'' und als DNS-Server ''10.10.10.1'' und ''1.1.1.1'' festgelegt. Für die Netzwerkschnitte ist dann ''systemd-networkd'' zuständig.
 +
 +
 +==== DHCP Netzwerkkonfiguration ====
 +
 +  > mv /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.SiK
 +  > vi /etc/netplan/eth0.yaml
 +  network:
 +    version: 2
 +    renderer: networkd
 +    ethernets:
 +      eth0:
 +        addresses: []
 +        dhcp4: true
 +        optional: true
 +
 +  > netplan generate
 +  > netplan apply
 +  
 +  > netplan ip leases eth0
 +  # This is private data. Do not parse.
 +  ADDRESS=192.168.1.90
 +  NETMASK=255.255.255.0
 +  ROUTER=192.168.1.254
 +  SERVER_ADDRESS=192.168.1.4
 +  NEXT_SERVER=192.168.1.4
 +  BROADCAST=192.168.1.255
 +  T1=43200
 +  T2=75600
 +  LIFETIME=86400
 +  DNS=192.168.1.4
 +  DOMAINNAME=lan
 +  HOSTNAME=rechnervonfritz
 +  CLIENTID=ffb6820feb00020000ab1263b9c5e8a84783fe
 +
 +
 +==== Netzwerkkonfiguration mit DHCP (IPv4) und SLAAC (IPv6) ====
 +
 +<file yaml /etc/netplan/00-installer-config.yaml>
 +network:
 +    version: 2
 +    renderer: networkd
 +    ethernets:
 +        eth0:
 +            optional: true
 +            dhcp-identifier: mac
 +            dhcp4: true
 +            dhcp6: true
 +            ipv6-privacy: true
 +            accept-ra: true
 +            nameservers:
 +                addresses:
 +                    - 2606:4700:4700::1111
 +                    - 1.1.1.1
 +                    - 2606:4700:4700::1001
 +                    - 1.0.0.1
 +
 +</file>
 +
 +  > netplan generate
 +  > netplan apply
 +
 +
 +==== Netzwerkkonfiguration mit statischer IPv4 und SLAAC (IPv6) ====
 +
 +<file yaml /etc/netplan/00-installer-config.yaml>
 +network:
 +    version: 2
 +    renderer: networkd
 +    ethernets:
 +        eth0:
 +            optional: true
 +            dhcp-identifier: mac
 +            dhcp4: false
 +            dhcp6: true
 +            ipv6-privacy: true
 +            accept-ra: true
 +            addresses:
 +                - 10.0.0.64/24
 +            gateway4: 10.0.0.1
 +            nameservers:
 +                addresses:
 +                    - 2606:4700:4700::1111
 +                    - 1.1.1.1
 +                    - 2606:4700:4700::1001
 +                    - 1.0.0.1
 +
 +</file>
 +
 +  > netplan generate
 +  > netplan apply
 +
 +
 +==== Bond ====
 +
 +<file yaml /etc/netplan/01-netcfg.yaml>
 +network:
 +  version: 2
 +  renderer: networkd
 +  ethernets:
 +    enp59s0f0:
 +      dhcp4: no
 +      dhcp6: no
 +    enp59s0f1:
 +      dhcp4: no
 +      dhcp6: no
 +  bonds:
 +    bond0:
 +      interfaces:
 +        - enp59s0f0
 +        - enp59s0f1
 +      addresses: [192.168.24.21/24]
 +      gateway4: 192.168.24.1
 +      nameservers:
 +        search: [domain.net]
 +        addresses:
 +          - 192.168.110.170
 +          - 192.168.110.171
 +</file>
 +
 +  > netplan generate
 +  > netplan apply
 +
 +
 +==== Bond + LACP ====
 +
 +LACP wird mit der Option ''mode: 802.3ad'' aktiviert.
 +
 +<file yaml /etc/netplan/01-netcfg.yaml>
 +network:
 +  version: 2
 +  renderer: networkd
 +  ethernets:
 +    enp59s0f0:
 +      dhcp4: no
 +      dhcp6: no
 +    enp59s0f1:
 +      dhcp4: no
 +      dhcp6: no
 +  bonds:
 +    bond0:
 +      interfaces:
 +        - enp59s0f0
 +        - enp59s0f1
 +      parameters:
 +        mode: 802.3ad
 +        lacp-rate: fast
 +        mii-monitor-interval: 100
 +      addresses: [192.168.24.21/24]
 +      gateway4: 192.168.24.1
 +      nameservers:
 +        search: [domain.net]
 +        addresses:
 +          - 192.168.110.170
 +          - 192.168.110.171
 +</file>
 +
 +  > netplan generate
 +  > netplan apply
 +  > cat /sys/class/net/bond0/bonding/mode
 +  802.3ad 4
 +
 +
 +===== Performance der Netzverbindung Testen =====
 +
 +
 +==== Allgemeines ====
 +
 +Zum Test des physikalischen Durchsatzes der Netzwerkleitung kann das Tool iperf genutzt werden. Dieses beinhaltet eine Server und eine Client Komponente und kann den Durchsatz des Netzwerkes unabhängig von der Leistungsfähigkeit des lokalen Dateisystems testen.
 +
 +  > aptitude update && aptitude install iperf
 +
 +
 +==== Verwendung von iperf ====
 +
 +
 +=== Auf dem Server auszuführen ===
 +
 +  > iperf -s -w 65536 -p 12345
 +
 +  * -s           als Server starten
 +  * -w <size>    TCP window size
 +  * -p <port>    Port
 +
 +
 +=== Auf dem Client auszuführen ===
 +
 +  > iperf -c 10.10.5.100 -w 65536 -p 12345 -t 60
 +
 +oder
 +  > iperf -c 10.10.5.100 -w 65536 -p 12345 -t 60 -P 4
 +
 +  * -c <IP>      verbinden zu IP
 +  * -w <size>    TCP window size
 +  * -p <port>    Port
 +  * -t <time>    Testdauer
 +  * [-P <n>    Anzahl paralleler Prozesse
 +
 +
 +===== Predictable Network Interface Naming - Consistent Network Device Naming =====
 +
 +  * [[http://blog.learningtree.com/new-names-linux-network-interfaces/]]
 +  * [[https://en.wikipedia.org/wiki/Consistent_Network_Device_Naming]]
 +
 +//Kernel/__Predictable Network Interface Naming__// ([[http://www.pro-linux.de/news/1/22443/systemd-220-bringt-persistente-netzwerk-interface-namen-bei-debian-und-ubun.html|seit v197 systemd/udev von Canonical entwickelt]], __für virtuelle Maschinen__ -> ''net.ifnames'') -> **''eth0''**\\
 +//BIOS/__Consistent Network Device Naming__// (ab 2009 für DELL entwickelt, __für Hardware__ -> ''biosdevname'') -> **''p1p1''**
 +
 +Standard bis Ubuntu 12.04 (//Predictable Network Interface Naming//):
 +  > lshw -businfo -C network
 +  Bus info          Device         Class      Description
 +  =======================================================
 +  pci@0000:01:00.0  eth0           network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:01:00.1  eth1           network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:02:00.0  eth2           network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:02:00.1  eth3           network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:04:00.0  eth4           network    82576 Gigabit Network Connection
 +  pci@0000:04:00.1  eth6           network    82576 Gigabit Network Connection
 +  pci@0000:05:00.0  eth8           network    82576 Gigabit Network Connection
 +  pci@0000:05:00.1  eth9           network    82576 Gigabit Network Connection
 +  pci@0000:07:00.0  eth5           network    NetXtreme II BCM57711 10-Gigabit PCIe
 +  pci@0000:07:00.1  eth7           network    NetXtreme II BCM57711 10-Gigabit PCIe
 +
 +Standard ab Ubuntu 14.04 (//Consistent Network Device Naming//):
 +  > lshw -businfo -C network
 +  Bus info          Device         Class      Description
 +  =======================================================
 +  pci@0000:01:00.0  em1            network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:01:00.1  em2            network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:02:00.0  em3            network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:02:00.1  em4            network    NetXtreme II BCM5709 Gigabit Ethernet
 +  pci@0000:04:00.0  p2p1           network    82576 Gigabit Network Connection
 +  pci@0000:04:00.1  p2p2           network    82576 Gigabit Network Connection
 +  pci@0000:05:00.0  p1p1           network    82576 Gigabit Network Connection
 +  pci@0000:05:00.1  p1p2           network    82576 Gigabit Network Connection
 +  pci@0000:07:00.0  p3p1           network    NetXtreme II BCM57711 10-Gigabit PCIe
 +  pci@0000:07:00.1  p3p2           network    NetXtreme II BCM57711 10-Gigabit PCIe
 +
 +  * [[https://www.thomas-krenn.com/de/wiki/Ubuntu_Netzwerkinterface_Namen_von_biosdevname]]
 +  * [[https://www.thomas-krenn.com/de/wiki/Predictable_Network_Interface_Names]]
 +
 +
 +==== Alte Netzwerkinterface Namen wiederherstellen (Predictable Network Interface Naming) ====
 +
 +Quelle: [[https://www.thomas-krenn.com/de/wiki/Ubuntu_Netzwerkinterface_Namen_von_biosdevname|Ubuntu Netzwerkinterface Namen von biosdevname]]
 +
 +<file bash /etc/default/grub>
 +...
 +GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
 +...
 +</file>
 +
 +  > apt-get purge biosdevname
 +  > update-initramfs -u
 +  > update-grub
 +  > reboot
 +
 +
 +==== Kernel/Predictable Network Interface Naming (eth0) ====
 +
 +
 +=== ab Ubuntu 14.04 ===
 +
 +das Paket ''biosdevname'' entfernen:
 +  > apt purge biosdevname
 +  > update-initramfs -u
 +  update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
 +
 +im Bootloader deaktivieren:
 +<file bash /etc/default/grub>
 +...
 +GRUB_CMDLINE_LINUX="net.ifnames=1 biosdevname=0"
 +...
 +</file>
 +
 +  > mv /etc/udev/rules.d/70-persistent-net.rules .
 +  > update-grub2
 +
 +**Netzwerkkonfiguration anpassen:**
 +Vor dem Neustart sollte noch in der Konfigurationsdatei ''/etc/network/interfaces'' geprüft werden, ob ein Eintrag für ein ''ethX''-Interface existiert. Ansonsten kann dem Server beim Neustart keine IP-Adresse zugewiesen werden.
 +
 +...zum Beispiel so:
 +<file bash /etc/network/interfaces>
 +...
 +auto eth0
 +iface eth0 inet dhcp
 +...
 +</file>
 +
 +  > reboot
 +
 +
 +==== BIOS/Consistent Network Device Naming (p1p1) ====
 +
 +[[https://en.wikipedia.org/wiki/Consistent_Network_Device_Naming#Scheme_.28Biosdevname.29|The new naming scheme is]]:
 +  - __Onboard-NIC__: **em[1–N]** - //zum Beispiel:// **em1**
 +  - __PCI-NIC__: **p<pci_slot_number>p<port_number>** - //zum Beispiel:// **p1p1**
 +
 +
 +=== ab Ubuntu 14.04 ===
 +
 +das Paket ''biosdevname'' installieren:
 +  > apt update
 +  > apt upgrade
 +  > apt install biosdevname
 +  > update-initramfs -u
 +  update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
 +
 +im Bootloader deaktivieren:
 +<file bash /etc/default/grub>
 +...
 +GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=1"
 +...
 +</file>
 +
 +  > mv /etc/udev/rules.d/70-persistent-net.rules .
 +  > update-grub2
 +
 +**Netzwerkkonfiguration anpassen:**
 +Vor dem Neustart sollte noch in der Konfigurationsdatei ''/etc/network/interfaces'' geprüft werden, ob ein Eintrag für ein ''pXpX''-Interface existiert. Ansonsten kann dem Server beim Neustart keine IP-Adresse zugewiesen werden.
 +
 +...zum Beispiel so:
 +<file bash /etc/network/interfaces>
 +...
 +auto em1
 +iface em1 inet dhcp
 +
 +auto p1p1
 +iface p1p1 inet dhcp
 +...
 +</file>
 +
 +  > reboot
 +
 +
 +===== virtuelles NIC mit eigener MAC-Adresse =====
 +
 +das virtuelle NIC hat hier den Namen ''mac0'':
 +  > ip link add link eth0 address 00:11:11:11:11:11 mac0 type macvlan
 +  > ifconfig mac0 up
 +
 +  > vi /etc/network/interfaces
 +  ...
 +  
 +  auto mac0
 +  iface mac0 inet manual
 +          pre-up ip link add mac0 link eth0 type macvlan mode bridge
 +          post-down ip link del mac0 link eth0 type macvlan mode bridge
 +
 +  > ip a
 +  ...
 +  
 +  31: mac0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1
 +      link/ether 32:fa:b4:f6:6c:af brd ff:ff:ff:ff:ff:ff
 +      inet 192.168.1.185/32 scope global mac0
 +         valid_lft forever preferred_lft forever
 +
 +
 +===== Bridge =====
 +
 +''eth0'' steht hier für das NIC im Host-System und die IP-Adresse ''192.168.1.1/24'' war bisher auf dem Host-NIC:
 +  > brctl addbr br0
 +  > ifconfig eth0 0.0.0.0 promisc
 +  > brctl addif br0 eth0
 +  > ip a add 192.168.1.1/24 dev br0
 +  > ifconfig br0 up
 +
 +siehe: [[http://www.naturalborncoder.com/virtualization/2014/10/17/understanding-tun-tap-interfaces/|Understanding TUN TAP Interfaces]]
 +
 +Nur TAP (OSI/ISO-Layer 2) kann in einer Bridge verwendet werden, nicht TUN (OSI/ISO-Layer 3)!
 +
 +
 +==== Linux Ubuntu 16.04.6 LTS ====
 +
 +Eine Bridge ohne IP-Adresse konfigurieren
 +
 +  > brctl addbr br0
 +  > brctl addif br0 tap0
 +  > ifup br0
 +  > ifconfig br0 up
 +  > brctl show
 +
 +  > vi /etc/network/interfaces
 +  ...
 +  
 +  auto tap0
 +  iface tap0 inet static
 +          pre-up ip tuntap add mode tap name tap0
 +          address 10.10.1.201
 +          netmask 255.255.255.0
 +  #
 +  auto br0
 +  iface br0 inet manual
 +      bridge_ports tap0
 +      bridge_stp on
 +
 +  > ip link show
 +