{"id":1016,"date":"2011-03-24T13:49:37","date_gmt":"2011-03-24T12:49:37","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=1016"},"modified":"2011-03-24T13:49:37","modified_gmt":"2011-03-24T12:49:37","slug":"spielen-mit-ipv6","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=1016","title":{"rendered":"Spielen mit IPv6"},"content":{"rendered":"<p>M\u00f6chte man gerne wissen, welche Rechner es in seinem lokalen Netz gibt, musste man hierf\u00fcr fr\u00fcher noch einen Portscanner einsetzen und aufw\u00e4ndig danach suchen lassen. Dank IPv6 geht das aber inzwischen sehr einfach, indem man die Rechner einfach fragt:<\/p>\n<pre lang=\"bash\">ping6 -c 2 -I eth0 ff02::1 | grep 64 | cut '-d ' -f 4 | sort -g | uniq | sed -e 's\/:$\/\/g'<\/pre>\n<p>Der erste Teil ist hierbei der wichtigste, da er die ganze Arbeit macht. Alles andere ist lediglich, damit&#8217;s sch\u00f6n aussieht. Also schauen wir einmal im Detail auf den Befehl:<\/p>\n<p>Wie zu vermuten, sendet ping6 genau zwei Pings in das Netzwerk. Da wir &#8211; und hier liegt der Trick &#8211; aber auf einer Multicast-Adresse pingen, m\u00fcssen wir explizit angeben, auf welchem Interface wir diesen senden m\u00f6chten. Soweit noch recht einfach. Nun k\u00f6nnte man aber meinen, warum steht da -c 2, wenn doch ein Ping auch ausreicht? Nunja: ping6 w\u00fcrde dann nach dem ersten empfangenen Host bereits aufh\u00f6ren und uns die weiteren nicht mehr liefern. Also einfach noch nen zweiten senden und die Duplikate mit einsammeln; die geh\u00f6ren n\u00e4mlich auch zur Antwort &#8230;<\/p>\n<p>Ung\u00fcnstigerweise enth\u00e4lt die Ausgabe des Ping-Befehls an verschiedenen Stellen die IP-Adresse, u.a. auch da, wo wir sie nicht brauchen. Also mit grep uns alle unn\u00f6tigen Fundstellen wegschneiden. Enth\u00e4lt die IPv6-Link-Local-Adresse zuf\u00e4llig auch die Zeichenfolge &#8222;64&#8220; kann man im grep auch einfach nach ttl= suchen.<\/p>\n<p>Nun ein wenig Magie: Wir wollen in unserer Liste nur die eigentlichen IPs stehen haben. Da diese Doppelpunkte auch selber enthalten, w\u00e4re es zu aufw\u00e4ndig nach diesen zu teilen; stattdessen teilen wir nach Leerzeichen, da deren Anzahl konstant ist. Dies hat jedoch den Nachteil, dass wir den abschlie\u00dfenden Doppelpunkt hinter der IP noch filtern m\u00fcssen. Dazu aber gleich mehr.<\/p>\n<p>Denn erstmal sortieren wir unsere so erhaltene Liste alphabetisch und numerisch,, was mit sort recht einfach gemacht ist. Anschlie\u00dfend filtern wir jegliche Duplikate und erhalten schon eine recht ansehnliche Liste, die wir im letzten Schritt nur noch von den Doppelpunkten befreien m\u00fcssen.<\/p>\n<p>Und hier kommt uns der Stream-Editor sed ganz gelegen, da dies mit Hilfe eines kurzen regul\u00e4ren Ausdrucks erledigt werden kann. Hierzu brauch man einfach nur nach Doppelpunkten am Zeilenende suchen und diese entfernen. Global angewendet und unsere Liste von Computern im Netzwerk ist fertig.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=1016&amp;md5=172a30359c928ac19c0a40e8a8746d41\" 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>M\u00f6chte man gerne wissen, welche Rechner es in seinem lokalen Netz gibt, musste man hierf\u00fcr fr\u00fcher noch einen Portscanner einsetzen und aufw\u00e4ndig danach suchen lassen. Dank IPv6 geht das aber inzwischen sehr einfach, indem man die Rechner einfach fragt: ping6 -c 2 -I eth0 ff02::1 | grep 64 | cut &#8218;-d &#8218; -f 4 | [&hellip;]<\/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":[347,69,162],"class_list":["post-1016","post","type-post","status-publish","format-standard","hentry","category-server","tag-fun","tag-internet","tag-ipv6"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1016","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=1016"}],"version-history":[{"count":1,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1016\/revisions"}],"predecessor-version":[{"id":1017,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1016\/revisions\/1017"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}