Ubuntu Bionic - IP Adresse ändern


  • administrators

    Ich habe mich gestern Abend ziemlich darüber aufgeregt, wie man unter Ubuntu 18.04 die Interfaces einstellen muss. Mal von dem Zeitverlust abgesehen. Ich spiele zwar gerne an Headless Servern rum, aber so was sinnloses hatte ich schon lange nicht mehr. 😞

    Hardware

    ROCKPro64

    Software

     rock64@rockpro64:/$ uname -a
     Linux rockpro64 4.17.0-rc6-1019-ayufan-gfafc3e1c913f #1 SMP PREEMPT Tue Jun 12 19:06:59 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Wie man die IP-Adresse unter Linux einstellt werden die meisten von Euch sicherlich sehr gut kennen, da das zum täglichen Geschäft gehört wenn man mit den kleinen Platinen arbeitet.

    Warum man nicht dauerhaft das einfach auf DHCP lässt, denke ich brauche ich hier in dieser Runde nicht erklären.

    Unter Ubuntu 18.04 hat man jetzt was Neues eingeführt. Das Ganze nennt sich Netplan. Netplan findet man unter /etc/netplan Dort liegt ein File eth0.yaml zu der Dateiendung .yaml komme ich später noch zu sprechen.

     rock64@rockpro64:/$ ls -la /etc/netplan
     total 16
     drwxr-xr-x  2 root root 4096 Jun 17 05:39 .
     drwxr-xr-x 86 root root 4096 Jun 16 12:22 ..
     -rw-r--r--  1 root root  333 Jun 16 20:39 eth0.yaml
     -rw-r--r--  1 root root  329 Jun 16 20:38 eth0.yaml_bak
    

    Macht Euch vorher eine Kopie, man weiß ja nie 😉 Der Inhalt der Datei sieht ungefähr so aus, ich hatte vergessen vorher eine Kopie zu machen 🙂

     network: 
     	version: 2 
     	renderer: networkd
     	ethernets:
     		eth0: #object name
     			dhcp4: yes # dhcp v4 enable
     			dhcp6: yes # dhcp v6 enable (if you want)
    

    Die Schnittstelle eth0 zieht sich mittels DHCP die Daten vom DHCP-Server. Alle meine Server haben hier feste IP-Adressen, da der Mainline aktuell sehr stabil läuft, bekommt der jetzt ne feste IP. So weit mein Plan.

    YAML

    Nachdem ich eine Stunde rumgedockert hatte und nichts klappte, habe ich mal vorne angefangen. Was ist YAML? Dazu der WIKI-Link. Gut, eigentlich nicht zu schwer zu verstehen. Aber trotzdem bekam ich andauernd nur Fehlermeldungen. So was in der Art hier.

    Invalid YAML at //etc/netplan/01-netcfg.yaml line 9 column 5: did not find expected key
    

    Wieder suchen, suchen usw. Dann bekommt man raus, das es entscheidend wichtig ist, wie die Einrückung aufgebaut ist. WTF? Der dumme Parser erkennt das als einen Fehler an ob ich jetzt 2 Leerstellen vor dem Eintrag habe, er aber gerne 3 Leerstellen dort hätte!? Geht es noch komplizierter? Das ist in meinen Augen völlig benutzerunfreundlich! Macht Debian das auch? Später nachschauen...

    Also hatte ich vieles ausprobiert, aber nur dieses Beispiel habe ich dann zum Laufen bekommen.

    Beispiel Datei

    # This file describes the network interfaces available on your system
    # For more information, see netplan(5).
     network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
          dhcp6: no
          addresses: [192.168.3.206/24]
          gateway4: 192.168.3.1
          nameservers:
            addresses: [192.168.3.1,1.1.1.1]
    

    Diese Datei kann man also ganz gewöhnlich mit einem Texteditor deiner Wahl bearbeiten, danach abspeichern. Dann kommt der YAML Parser zum Einsatz. Dieser checkt das File auf Fehler, was ja auch eigentlich eine gute Sache ist. Der Befehl dafür.

    sudo netplan apply
    

    Dabei sollte man folgendes beachten, das File wird geprüft, wenn erfolgreich werden die Netzwerkeinstellungen sofort aktiviert. Man verliert also eine evt. bestehende SSH-Verbindung sofort. Also Vorsicht, vorher kurz nachdenken 😉

    Ganz ehrlich, braucht man das so? Ich muss mich wohl dran gewöhnen....

    Noch ein Tipp, die Netzwerkmaske ändert man über /24

    Das sieht dann jetzt so aus

     rock64@rockpro64:/$ ip a
     1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
         link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
         inet 127.0.0.1/8 scope host lo
            valid_lft forever preferred_lft forever
         inet6 ::1/128 scope host 
            valid_lft forever preferred_lft forever
     2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
         link/ether e2:15:d9:4c:26:11 brd ff:ff:ff:ff:ff:ff
     3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
         link/ether aa:41:29:23:dc:d1 brd ff:ff:ff:ff:ff:ff
         inet 192.168.3.206/24 brd 192.168.3.255 scope global eth0
            valid_lft forever preferred_lft forever
         inet6 fe80::a841:29ff:fe23:dcd1/64 scope link 
            valid_lft forever preferred_lft forever
     4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
         link/sit 0.0.0.0 brd 0.0.0.0
    

    Was das mit dem dummy0 und sit@NONE auf sich hat muss ich mir mal in einer ruhigen Stunde ansehen.

    Das dummy0 und sit@NONE sind Interfaces die von Kernel-modulen erzeugt werden. Man kann beide Module aber nicht entladen, weil beide Module in den Kernel eingebaut sind!

    rock64@rockpro64v_2_1:~$ sudo modprobe -r sit
    [sudo] password for rock64: 
    modprobe: FATAL: Module sit is builtin.
    rock64@rockpro64v_2_1:~$ sudo modprobe -r dummy
    modprobe: FATAL: Module dummy is builtin.
    

    Das ist nur im Mainline so!

    rock64@rockpro64v_2_1:~$ uname -a
    Linux rockpro64v_2_1 4.18.0-rc8-1060-ayufan-g45828c4db727 #1 SMP PREEMPT Thu Aug 9 19:41:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Im 4.4x

    rock64@rockpro64v2_0:~$ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
        link/ether aa:41:29:23:dc:d1 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.206/24 brd 192.168.3.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::a841:29ff:fe23:dcd1/64 scope link 
           valid_lft forever preferred_lft forever