Zusätzliche IPv4-Adresse einrichten schlägt fehl

  • Hallo zusammen,
    ich habe mir heute für meinen KVM Server eine zusätzliche IP bestellt, leider bekomme ich diese unter CentOS 6.7 Minimal nicht eingerichtet.
    Ich habe ein Alias-Interface ala /etc/sysconfig/network-scripts/ifcfg-eth0:1 angelegt und dann wie folgt eingerichtet:

    Code
    1. DEVICE=eth0:1
    2. BOOTPROTO=none
    3. ONBOOT=yes
    4. IPADDR=37.120.183.XXX
    5. NETMASK=255.255.255.255


    wenn ich dann anschließend service network restart ausführe erhalte ich folgenden Fehler: error in ifcfg-eth0:1: invalid alias number.
    Ich habe dann mal mit ipcalc geprüft was die Netzmaske für die zusätzliche IP Adresse sein soll, und siehe da:
    ipcalc --netmask 37.120.183.XXX
    NETMASK=255.0.0.0.


    Hat jemand eine Ahnung wie man das korrigieren kann?


    Danke & Grüße
    Davefinitiv

  • Ich finde Konfig schreiben langweilig unter CentOS, Fedora, RedHat da gibt es ne schöne tool für sowas heißt n(etwork)m(anager)cli (nmcli) ansonsten hier: CentOS 6 - Initial Settings - Network Settings : Server World dir fehlt das Gateway sonst kann das Interface nicht in die große Welt oder sonst wohin! Genauso wenig kann 255.255.255.255 als Netmask stimmen... wie lautetet den die Subnetmaske 0.0.0.0[>/xx<] im VCP, netcup subnetiert ja seine Netze. 255.0.0.0 würde insofern richtig sein da 37.x.x.x/8 ein Klasse A Netz ist jedoch beim Subnetieren wiederum nicht.


    Edit: Netcup vergibt als Zusatz /32 Adresse, Anleitung ist in der Wiki dazu: Zusätzliche IP Adresse konfigurieren – netcup Wiki

  • Hi Skulduggery,
    danke für die Info.
    Du meinst das Alias-Interface benötigt ein Gateway?
    Das wäre mir neu aber ich probiere es mal aus.


    Zum Subnetz, es ist nur eine einzige IP also ein /32, habe noch mal mit ipcalc und dem Prefix /32 gegengeprüft und passt:
    ipcalc --netmask 37.120.183.xxx/32
    NETMASK=255.255.255.255


    Allerdings kann ich in der /etc/sysconfig/network-scripts/ifcfg-eth0:1 irgendwie keinen Prefix angeben, ich habe es mit PREFIX=32 und mit 37.120.183.xxx/32 probiert,
    funktioniert beides nicht.

  • Habe beides probiert,
    das Wiki: "Sämtliche Konfigurationen werden in der Datei '/etc/network/interfaces' vorgenommen. " Das gibt es nicht auf CentOS 6,
    die Anleitung von: Manage IP Alias on CentOS 6 - GeekPeek.Net ist genau das was ich gemacht habe, übrigens auch mal mit Gateway, hat aber auch nichts gebracht.
    Wenn ich den neuen Alias versuche online zu bringen erhalte ich folgende Fehlermeldung:
    ifup eth0:0
    ipcalc: bad netmask: 255.255.255.255


    Aber bei /32 muss die doch so sein...
    Hier noch ein Screenshot aus dem vservercontrolpanel

  • Hi,


    bei der Netzmaske von 255.255.252.0 ist das eine /22 Netz. Lediglich eine einzelne IP-Adresse wird mit /32 beschrieben.


    ipcalc 37.120.175.1/22
    Address: 37.120.175.1 00100101.01111000.101011 11.00000001
    Netmask: 255.255.252.0 = 22 11111111.11111111.111111 00.00000000
    Wildcard: 0.0.3.255 00000000.00000000.000000 11.11111111
    =>
    Network: 37.120.172.0/22 00100101.01111000.101011 00.00000000
    HostMin: 37.120.172.1 00100101.01111000.101011 00.00000001
    HostMax: 37.120.175.254 00100101.01111000.101011 11.11111110
    Broadcast: 37.120.175.255 00100101.01111000.101011 11.11111111
    Hosts/Net: 1022 Class A



    Tausche mal die /32 durch ein /22 aus, das sollte klappen...

  • Hi, spontan heraus würde ich folgende komplette Konfiguration probieren:


    VLAN=yes
    DEVICE=eth0.1
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=37.120.183.XXX
    NETMASK=255.255.252.0


    Nach Erfahrung mache ich auf CentOS/RedHat kein ifup oder ifdown, das klappt warum auch immer nicht immer wie erhofft.
    Ein "service network restart" oder ein "systemctl restart network" (je nach Release) sind bei mir die Befehle der Wahl. Aber man sollte aufpassen, dass man sich so nicht die gesammte Netzwerkkonfiguration zerschiest (ein hoch auf ILO :P )!

  • Hallo Felix,
    danke für die Antwort.


    Ich habe das Routing im VCP eingestellt, leider brachte dies keine Besserung.
    Ich erhalte jetzt folgende Fehlermeldung:
    ipcalc: bad IPv4 address:
    Bei folgender Konfig:
    DEVICE=eth0:1
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=37.120.183.XXX
    NETMASK=255.255.255.255


    Wenn ich im Gegenzug mit ipcalc den Prefix abfrage sagt man mir:
    ipcalc --prefix 37.120.183.XXX/32
    PREFIX=32


    Dann habe ich den Prefix mit in die Konfig aufgenommen:
    DEVICE=eth0:1
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=37.120.183.XXX
    NETMASK=255.255.255.255
    PREFIX=32


    und nochmal mit ifup angestossen:


    ifup eth0:1
    ipcalc: bad IPv4 address: 37.120.183.XXX
    ipcalc: bad IPv4 address: 37.120.183.XXX
    ipcalc: netmask or prefix expected
    Usage: ipcalc [OPTION...]
    -c, --check Validate IP address for specified address family
    -4, --ipv4 IPv4 address family (default)
    -6, --ipv6 IPv6 address family
    -b, --broadcast Display calculated broadcast address
    -h, --hostname Show hostname determined via DNS
    -m, --netmask Display default netmask for IP (class A, B, or C)
    -n, --network Display network address
    -p, --prefix Display network prefix
    -s, --silent Don't ever display error messages


    Help options:
    -?, --help Show this help message
    --usage Display brief usage message
    ipcalc: netmask or prefix expected
    Usage: ipcalc [OPTION...]
    -c, --check Validate IP address for specified address family
    -4, --ipv4 IPv4 address family (default)
    -6, --ipv6 IPv6 address family
    -b, --broadcast Display calculated broadcast address
    -h, --hostname Show hostname determined via DNS
    -m, --netmask Display default netmask for IP (class A, B, or C)
    -n, --network Display network address
    -p, --prefix Display network prefix
    -s, --silent Don't ever display error messages


    Help options:
    -?, --help Show this help message
    --usage Display brief usage message
    is already in use for device eth0...XXX
    /32".: an inet prefix is expected rather than "37.120.183.XXX
    .for eth0:1g address 37.120.183.XXX


    So langsam gehe ich von einem Bug in CentOS aus.


    Bei Service Network Restart bleibt es auch unverändert:
    service network restart
    Schnittstelle eth0 beenden: [ OK ]
    Loopback-Schnittstelle beenden: [ OK ]
    Loopback-Schnittstelle hochfahren: [ OK ]
    Schnittstelle eth0 hochfahren:
    IP-Informationen für eth0 werden bestimmt ... erledigt.
    error in ifcfg-eth0:1: invalid alias number
    [ OK ]
    Der Alias ist aber so defenitiv korrekt, habe die CentOS Doku jetzt fünfmal durch...


    Grüße


    PS: Hätte ich mal noch einen Tag gewartet mit der IP, jetzt ist Sie im Adventskalender... :)

  • Hi Skulduggery,
    /32 weil es nur eine einzige IP ist,
    wenn mann die IP über ipcalc ohne Präfix eingibt dann bekommt man zwangsläufig die falsche Netmask errechnet,
    normalerweise braucht man den Prefix eigentlich gar nicht angeben, dafür ist ja die Netmask, allerdings funktioniert es weder mit der Netmask noch mit dem Prefix oder mit beiden zusammen.
    Die Fehlermeldungen sind dann immer wieder unterschiedlich, mal ist es der Alias der nicht stimmen soll mal fehlt der Prefix oder Netmask, bzw. die letzte Fehlermeldung besagt das die IP schon vergeben wäre...


    Mit 0:0 habe ich es auch schon probiert, klappt genauso wenig, Laut der Doku sollte es aber auch mit 0:1 beginnen:

    Quote

    ifcfg-eth0 (primary adapter, physical)
    ifcfg-eth0:1 (first virtual adapter to the physical primary adapter)
    ifcfg-eth0:2 (second virtual adapter to the physical primary adapter)

  • Oh man ich habe die Lösung,
    ich traue es mir gar nicht zu posten...


    Der Fehler war CR+LF Windows Codierung in der /etc/sysconfig/network-scripts/ifcfg-eth0:1
    dadurch entsteht wohl ein zusätzlicher Prefix hinter der IP.


    Habe die Datei nun nach Unix hin konvertiert also alle Umbrüche nur mit LF und alles ist schick :)


    Unglaublich was das für eine Auswirkung haben kann...


    Jetzt kann Weihnachten kommen :)


    Danke Euch allen trotzdem.

  • @ tuxmaster,
    das hat sich überschnitten, das mit ONPARENT macht Sinn, zumal der Virtuelle Adapter ja das Gateway usw. vom "wirklichen" Adapter bekommt.


    Danke für den Tipp, werde ich gleich mal anpassen.


    Anbei noch die Finale /etc/sysconfig/network-scripts/ifcfg-eth0:1


    DEVICE=eth0:1
    BOOTPROTO=none
    ONPARENT=yes
    IPADDR=123.123.123.123
    PREFIX=32


    Alternativ kann man auch


    DEVICE=eth0:1
    BOOTPROTO=none
    ONPARENT=yes
    IPADDR=123.123.123.123
    NETMASK=255.255.255.255


    Wichtig ist halt nur die Codierung der Datei, diese muss unbedingt Unix sein, dadurch sind Zeilenumbrüche nur in LF, kommt es hingegen bei Windows Codierung zu CR+LF gibt es einen Fehlerhaften Umbruch und damit einen falschen Prefix, zu diesem Prefix wird dann niemals die Netzmaske passen.

  • Ich frage mich gerade, wie es zu dem Problem mit der Windows kodierung kommen konnte.
    Editierst Du die configs mit Windows und lädst die dann via FTP hoch?
    Das ist doch eher umständlich.
    Mein Tip:
    Wenn Dir VI für die Konsole zu kompliziert ist, dann schau Dir mal den Editor "nano" an. In der Konsole editieren macht vieles einfacher, und solche Probleme können nicht auftauchen.


    Für alle die gerne mal lernen wollen, wie mit dem VI umzugehen kann ich nur dieses Tutorial empfehlen:
    Gentoo Linux Dokumentation
    --
    vi lernen -- die "Spickzettel"-Methode

    [table='liebe Grüße - schentuu, ']
    [*]~[*] Tutorial-Empfehlung: vi(m) lernen
    [*]Betreibt 3 netcup Root-Server mit Funtoo-Linux [*] IRC von Kunden für Kunden: #nc-kunden (iz-smart.net)
    [*]darunter Minecraft Gameserver, git server, etherpad u.v.m.[*]Für Server Anfänger: Linux Selbsttest
    [/table]

  • Wenn du deine Konfigs immer so bearbeitest wie schentuu es vermutet, wirst du immer zu dem selben Problem gelangen. Gewöhne dir an die Konfigs in der Shell zubearbeiten da hast du dann ein Problem weniger und sparst dir den ftp-upload Schritt. Vor allem weißt du dann wenn du es in der Shell bearbeitest, das du selbst einen Fehler in die Konfiguration gemacht hast(haha ;)). Nano würde ich gleich sein lassen das ist ein kinder-Editor(My personal Meinung!), vim ist das einzigware. Schau dir das Tut von schentuu am besten an, aller anfang ist schwer jedoch wirst du erkennen wie mächtig vim ist.

  • Tja was soll ich sagen,
    aus Bequemlichkeit ist es passiert.
    Ich war gerade per FTP auf dem Server um die Logfiles einzusehen (per Notepad++) da kam die Mail von Netcup das die neue IP freigeschalten wurde,
    also habe ich einfach per FTP eine Datei angelegt und mit Notepad++ editiert und das wars...


    Scheinbar ist es so wenn man eine Datei per FTP anlegt und dann in Notepad++ öffnet (auf Windows) bekommt sie beim ersten öffnen die Windows Codierung verpasst,
    damit nahm das Unheil seinen Lauf, normalerweise nehme ich nano, ich hatte aber gerade kein SSH offen und wollte urspünglich auch nur die Logfiles einsehen.
    Was eigentlich Blödsinn war weil ich musste mich anschließend eh per SSH anmelden um service network restart durchzuführen, zu dem Zeitpunkt war eh schon alles zu spät, die Datei war da und die Fehlermeldungen waren alles andere wie hilfreich (invalid alias number), erst durch ifup konnte ich den Fehler etwas eingrenzen.


    @ schentuu und Skulduggery, wenn man per FireFTP angemeldet ist braucht man nichts hochladen, man kann Dateien auf dem Server öffnen, editieren und speichern,
    diese werden dann ohne zutun geändert wieder hochgeladen sobald man sie speichert, so als würde man direkt auf dem Server arbeiten. Ich meine es gibt sogar ein FTP Plugin für Notepad++ damit kann man dann tatsächlich auf dem Server arbeiten.


    Für mich ist Notepad++ das non Plus Ultra wenn es um Logfiles geht, es gibt sicherlich andere (vielleicht auch bessere) Möglichkeiten, aber der Mensch ist halt ein Gewohnheitstier :)


    Noch was zur Kodierung, das passiert nur wenn man eine neue Datei per FTP anlegt und diese dann auf Windows öffnet, öffnet man eine bestehende Datei die aus dem Linux stammt (egal ob mit oder ohne Inhalt) dann bleibt die Unix Codierung erhalten, tja wieder was dazu gelernt, sowas blödes passiert mir auch nicht nochmal...


    Wie gesagt, Danke Euch allen für die Tipps und Tuts.
    Davefinitiv