{"id":978,"date":"2011-01-22T06:24:22","date_gmt":"2011-01-22T05:24:22","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=978"},"modified":"2011-09-28T22:44:59","modified_gmt":"2011-09-28T20:44:59","slug":"primar-und-sekundar-ips-unter-linux-setzen","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=978","title":{"rendered":"Prim\u00e4r- und Sekund\u00e4r-IPs unter Linux setzen"},"content":{"rendered":"<p>Wenn man unter Linux einen Server mit mehren IP-Adressen hat, ist es wichtig, dass man f\u00fcr bestimmte Anwendungen, wie etwa den Mailserver die korrekte, prim\u00e4re IP einstellt, um sicherzustellen, dass Mechanismen wie SPF korrekt funktionieren und der Server nicht aus Versehen als Spamschleuder gebrandmarkt wird.<!--more--><\/p>\n<p>Nun gibt es hierf\u00fcr <a href=\"http:\/\/cr.yp.to\/djbdns\/ifconfig.html\">mehrere M\u00f6glichkeiten<\/a>, die ich im Nachfolgenden kurz beschreiben m\u00f6chte. Die erste Variante ist dabei die Eintragung in die \/etc\/network\/interfaces, mit der die \u00c4nderungen auch nach einem Reboot wieder wirksam werden. Hierbei wird eth0 statisch (oder via DHCP, wenn man das will) konfiguriert und ein weiteres Interface f\u00fcr jede zus\u00e4tzliche IP konfiguriert. Diese zus\u00e4tzlichen Interfaces bekommen durch einen Doppelpunkt getrennt einen bei 0 beginnenden Index. M\u00f6chte man auch diese via DHCP konfigurieren, muss man spezielle ID-Strings angeben, da diese Alias-Interfaces rein virtuell sind und der DHCP-Server ansonsten zwei gleiche Anfragen von der selben MAC-Adresse sehen w\u00fcrde. Der einfachste Fall hier ist aber, dass beide Adressen statisch zugewiesen sind, was dann wie folgt in derKonfiguration ausschaut:<\/p>\n<pre lang=\"text\">auto eth0\r\niface eth0 inet static\r\n        address 192.168.0.23\r\n        gateway 192.168.0.1\r\n        netmask 255.255.255.0\r\n\r\nauto eth0:0\r\niface eth0:0 inet static\r\n        address 192.168.0.42\r\n        netmask 255.255.255.0<\/pre>\n<p>Die Angabe auto setzt hierbei, welche Interfaces beim Booten automatisch gestartet werden sollen. Zus\u00e4tzlich ist zu beachten, dass f\u00fcr die zus\u00e4tzlichen IPs i.d.R. keine zus\u00e4tzliche Angabe zum Gateway notwendig ist, solange diese sich im gleichen Subnetz befindet. Unterscheiden sich die Netze zwischen prim\u00e4rer und sekund\u00e4rer IP, muss auch f\u00fcr den Alias eine Angabe zum Gateway erg\u00e4nzt werden.<\/p>\n<p>Eine weitere M\u00f6glichkeit, eine sekund\u00e4re IP zu setzen, ist durch Verwendung des ifconfig-Befehls. Hierzu ruft man einfach<\/p>\n<pre lang=\"bash\">ifconfig eth0:0 192.168.0.42 netmask 255.255.255.0<\/pre>\n<p>auf und hat die zus\u00e4tzliche IP gesetzt. Wenn dieses Interface bereits existiert, wird dessen IP-Adresse auf die \u00fcbergebene IP ge\u00e4ndert. M\u00f6chte man eine auf diese Art gesetzte IP wieder entfernen, geht dies am Einfachsten mit <\/p>\n<pre lang=\"bash\">ip addr del 192.168.0.42\/24 dev eth0:0<\/pre>\n<p>Danach ist die zus\u00e4tzliche IP entfernt. Die Angabe \/24 ist in diesem Fall die CIDR-Notation der IP und sollte vollst\u00e4ndig angegeben werden, da ansonsten das Utility ip meckert, da das Entfernen via Wildcard deprecated ist.<\/p>\n<p>Nun aber zu dem Fall, den ich gerade habe und weshalb ich diesen Post schreibe: Angenommen, wir haben unsere beiden Adressen hinzugef\u00fcgt, stellen aber fest, dass wir die falsche IP-Adresse als prim\u00e4re Adresse gesetzt haben. In diesem Fall kann man mit etwas Gl\u00fcck sogar ohne neu via SSH verbinden zu m\u00fcssen oder zu rebooten, die beiden IPs tauschen. Da es hierzu aber keinen direkten Befehl gibt, muss man etwas mogeln, eine der beiden IPs entfernen und dann nach erfolgter Neuzuweisung wieder hinzuf\u00fcgen. Dies geht nat\u00fcrlich nur dann ohne Neuverbinden, wenn dies schnell genug ausgef\u00fchrt wird. Aber wozu kann man sich sowas scripten?<\/p>\n<pre lang=\"bash\" escaped=\"true\">#!\/bin\/bash\r\nPRIMARY=\"192.168.0.23\"\r\nSECUNDARY=\"192.168.0.42\"\r\nNETMASK=\"255.255.255.0\"\r\n\r\nINTF=\"eth0\"\r\n\r\n# Ausgabe vorher\r\nifconfig $INTF\r\nifconfig $INTF:0\r\n\r\n# Pr\u00fcfen, ob die Konfiguration bereits vorhanden ist\r\nifconfig $INTF | grep inet | grep $PRIMARY &gt; \/dev\/null && echo \"already set\" &amp;&amp; exit 0\r\nifconfig $INTF:0 | grep inet | grep $SECUNDARY &gt; \/dev\/null && echo \"already set\" &amp;&amp; exit 0\r\n\r\n# Wenn die Prim\u00e4re Adresse auf dem Sekund\u00e4r-Interface gesetzt ist, muss sie kurz abgemeldet werden\r\nip addr del $PRIMARY\/32 dev $INTF:0\r\n\r\n# Prim\u00e4re IP-Adresse wieder anmelden; dabei die Sekund\u00e4re freigeben, danach sekund\u00e4re setzen\r\nifconfig $INTF $PRIMARY netmask $NETMASK\r\nifconfig $INTF:0 $SECUNDARY netmask $NETMASK\r\n\r\n# Ausgabe nachher\r\nifconfig $INTF\r\nifconfig $INTF:0<\/pre>\n<p>Nach Ausf\u00fchrung dieses Scripts ist die unter $PRIMARY eingetragene IP die, mit der sich das System nach au\u00dfen meldet, w\u00e4hrend $SECUNDARY die sekund\u00e4re IP angibt, auf der das System auch auf Verbindungen lauscht. Selbstverst\u00e4ndlich sollte man aus Sicherheitsgr\u00fcnden die neue Konfiguration aber schon in der \/etc\/network\/interfaces eingetragen haben, sollte der Weg zum Server nicht binnen 5 Minuten zu bew\u00e4ltigen sein.<\/p>\n<p>Zudem sei eine Erweiterung dessen auf das Akzeptieren der zu setzenden Konfiguration via Parameter an dieser Stelle dem Leser \u00fcberlassen.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=978&amp;md5=8360655a643b0f1b017eec1d371abad2\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Wenn man unter Linux einen Server mit mehren IP-Adressen hat, ist es wichtig, dass man f\u00fcr bestimmte Anwendungen, wie etwa den Mailserver die korrekte, prim\u00e4re IP einstellt, um sicherzustellen, dass Mechanismen wie SPF korrekt funktionieren und der Server nicht aus Versehen als Spamschleuder gebrandmarkt wird.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[324,10,69,346,80],"class_list":["post-978","post","type-post","status-publish","format-standard","hentry","category-server","tag-bash","tag-debian","tag-internet","tag-server","tag-umzug"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=978"}],"version-history":[{"count":2,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/978\/revisions"}],"predecessor-version":[{"id":1123,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/978\/revisions\/1123"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}