<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    
    <link href="http://blog.planet-uwe.de/feeds/atom.xml" rel="self" title="Dinge, die die Welt nicht braucht" type="application/atom+xml" />
    <link href="http://blog.planet-uwe.de/"                        rel="alternate"    title="Dinge, die die Welt nicht braucht" type="text/html" />
    <link href="http://blog.planet-uwe.de/rss.php?version=2.0"     rel="alternate"    title="Dinge, die die Welt nicht braucht" type="application/rss+xml" />
    <title type="html">Dinge, die die Welt nicht braucht</title>
    <subtitle type="html">Uninteressantes zusammengewürfelt</subtitle>
    <icon>http://blog.planet-uwe.de/templates/bulletproof/img/s9y_banner_small.png</icon>
    <id>http://blog.planet-uwe.de/</id>
    <updated>2012-02-15T15:24:22Z</updated>
    <generator uri="http://www.s9y.org/" version="1.6">Serendipity 1.6 - http://www.s9y.org/</generator>
    <dc:language>de</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:" />

    <entry>
        <link href="http://blog.planet-uwe.de/archives/99-IPv6-auf-Cisco-WS-C3560.html" rel="alternate" title="IPv6 auf Cisco WS-C3560" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2012-02-15T15:08:46Z</published>
        <updated>2012-02-15T15:24:22Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=99</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/99-guid.html</id>
        <title type="html">IPv6 auf Cisco WS-C3560</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Ciscos Switch WS-C3560 kann, sofern man die entsprechende Lizenz hat und dann das richtige Image verwendet, <a href="http://blog.planet-uwe.de/exit.php?url_id=726&amp;entry_id=99" title="http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps5528/product_data_sheet09186a00801f3d7d.html#wp9000894"  onmouseover="window.status='http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps5528/product_data_sheet09186a00801f3d7d.html#wp9000894';return true;" onmouseout="window.status='';return true;">tatsächlich IPv6 Routing in Hardware</a><br />
<br />
<blockquote><br />
The IP Services license provides a richer set of enterprise-class features, including advanced hardware-based IPv6 unicast and IPv6 Multicast routing as well as policy-based routing (PBR).<br />
</blockquote><br />
<br />
Mein erster Versuch das die Geschichte mit ipv6 unicast-routing zu aktivieren verlief trotz richtigem Image allerdings überraschend:<br />
<blockquote><br />
Switch(config)#ipv6 ?<br />
% Unrecognized command<br />
</blockquote><br />
<br />
Damit IPv6 auf dieser Plattform wirklich funktioniert muss neben dem Image auch das <a href="http://blog.planet-uwe.de/exit.php?url_id=727&amp;entry_id=99" title="http://www.cisco.com/en/US/products/hw/switches/ps646/products_tech_note09186a0080094bc6.shtml"  onmouseover="window.status='http://www.cisco.com/en/US/products/hw/switches/ps646/products_tech_note09186a0080094bc6.shtml';return true;" onmouseout="window.status='';return true;">SDM Profil</a> stimmen. Auf meinem Switch war dies noch auf IPv4 eingestellt:<br />
<br />
<blockquote><br />
Switch#show sdm prefer <br />
 The current template is "desktop default" template.<br />
 The selected template optimizes the resources in<br />
 the switch to support this level of features for<br />
 8 routed interfaces and 1024 VLANs. <br />
<br />
  number of unicast mac addresses:                  6K<br />
  number of IPv4 IGMP groups + multicast routes:    1K<br />
  number of IPv4 unicast routes:                    8K<br />
    number of directly-connected IPv4 hosts:        6K<br />
    number of indirect IPv4 routes:                 2K<br />
  number of IPv4 policy based routing aces:         0<br />
  number of IPv4/MAC qos aces:                      0.5K<br />
  number of IPv4/MAC security aces:                 1K<br />
</blockquote> <br />
<br />
<blockquote><br />
Switch#conf t<br />
Enter configuration commands, one per line.  End with CNTL/Z.<br />
<br />
Switch(config)#sdm prefer dual-ipv4-and-ipv6 routing<br />
Changes to the running SDM preferences have been stored, but cannot take effect <br />
until the next reload.<br />
Use 'show sdm prefer' to see what SDM preference is currently active.<br />
<br />
</blockquote><br />
<br />
Nach dem reboot taucht auch IPv6 auf<br />
<br />
<blockquote><br />
Switch#show sdm prefer<br />
 The current template is "desktop IPv4 and IPv6 routing" template.<br />
 The selected template optimizes the resources in<br />
 the switch to support this level of features for<br />
 8 routed interfaces and 1024 VLANs. <br />
<br />
  number of unicast mac addresses:                  1.5K<br />
  number of IPv4 IGMP groups + multicast routes:    1K<br />
  number of IPv4 unicast routes:                    2.75K<br />
    number of directly-connected IPv4 hosts:        1.5K<br />
    number of indirect IPv4 routes:                 1.25K<br />
  number of IPv6 multicast groups:                  1.125k<br />
  number of directly-connected IPv6 addresses:      1.5K<br />
  number of indirect IPv6 unicast routes:           1.25K<br />
  number of IPv4 policy based routing aces:         0.25K<br />
  number of IPv4/MAC qos aces:                      0.5K<br />
  number of IPv4/MAC security aces:                 0.5K<br />
  number of IPv6 policy based routing aces:         0.25K<br />
  number of IPv6 qos aces:                          0.625k<br />
  number of IPv6 security aces:                     0.5K<br />
</blockquote><br />
<br />
<br />
Und kann konfiguriert werden:<br />
<br />
<blockquote><br />
Switch(config)#ipv6 unicast-routing <br />
Switch(config)#<br />
</blockquote><br />
 
            </div>
        </content>
        <dc:subject>cisco</dc:subject>
<dc:subject>ios</dc:subject>
<dc:subject>ipv6</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/98-Laenge-von-Dateinamen-ermitteln.html" rel="alternate" title="Länge von Dateinamen ermitteln" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2012-01-19T11:29:06Z</published>
        <updated>2012-01-19T11:32:05Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=98</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/98-guid.html</id>
        <title type="html">Länge von Dateinamen ermitteln</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Da ich gerade die Länge von Dateinamen herausfinden musste und mir nicht eingefallen ist wie man das elegant und schnell lösen könnte hab ich mir in der Shell eben was zusammengehackt. Vielleicht weiß jemand eine bessere Lösung:<br />
<br />
<verbatim><br />
for i in `ls -1`; do  echo -n "$i:" ;echo $i |wc -m  ; done | awk -F':' '{print $2 ":" $1}' | sort -n<br />
</verbatim> 
            </div>
        </content>
        <dc:subject>awk</dc:subject>
<dc:subject>bash</dc:subject>
<dc:subject>linux</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/97-SSH-ueber-IPv6.html" rel="alternate" title="SSH über IPv6" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2011-08-14T14:05:16Z</published>
        <updated>2011-08-14T14:27:52Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=97</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/97-guid.html</id>
        <title type="html">SSH über IPv6</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Eine Änderung von IPv6 gegenüber IP4 besteht darin, dass per Voreinstellung jeder Teilnehmer eines Netzes immer eine sogenannte Link-Local Adresse besitzt. Dieser <a href="http://blog.planet-uwe.de/exit.php?url_id=724&amp;entry_id=97" title="http://en.wikipedia.org/wiki/IPv6_stateless_address_autoconfiguration#Stateless_address_autoconfiguration"  onmouseover="window.status='http://en.wikipedia.org/wiki/IPv6_stateless_address_autoconfiguration#Stateless_address_autoconfiguration';return true;" onmouseout="window.status='';return true;">SLAAC (Stateless Address Autoconfiguration)</a> genannte Automatismus ersetzt und erweitert das von IPv4 bekannte <a href="http://blog.planet-uwe.de/exit.php?url_id=725&amp;entry_id=97" title="http://en.wikipedia.org/wiki/Zeroconf"  onmouseover="window.status='http://en.wikipedia.org/wiki/Zeroconf';return true;" onmouseout="window.status='';return true;">Zeroconf</a>. Während Zeroconf immer durch zusätzliche Software implementiert wird, ist SLAAC Bestandteil des IPv6 Stacks. Das heißt: ist auf einem Host IPv6 aktiviert, so hat dieser auch immer ein IP Adresse auf die zugegriffen werden kann.<br />
<br />
Eine Besonderheit ist dabei, dass der Link-Local Adressraum aus dem die IPs vergeben werden (fe80::/10) auf jedem Interface anliegt und man daher immer das Interface angeben muss auf dem man eine solche IP erreichen will. Dem Kommando ping6 wird das Interface mit -I übergeben:<br />
<code><br />
krusty ~ # ping6 -c1 fe80::20a:e4ff:fe3a:cda9<br />
connect: Invalid argument<br />
krusty ~ # ping6 -I eth0 -c1 fe80::20a:e4ff:fe3a:cda9<br />
PING fe80::20a:e4ff:fe3a:cda9(fe80::20a:e4ff:fe3a:cda9) from fe80::20a:e4ff:fe3a:1dc9 eth0: 56 data bytes<br />
64 bytes from fe80::20a:e4ff:fe3a:cda9: icmp_seq=1 ttl=64 time=0.042 ms<br />
<br />
--- fe80::20a:e4ff:fe3a:cda9 ping statistics ---<br />
1 packets transmitted, 1 received, 0% packet loss, time 0ms<br />
rtt min/avg/max/mdev = 0.042/0.042/0.042/0.000 ms<br />
<br />
</code><br />
<br />
<br />
Der ssh client bietet nun leider keinen solchen (offensichtlichen) Parameter. Hier wird das Interface direkt an die Adresse, getrennt von einem Prozentzeichen angehängt:<br />
<code><br />
uwe@krusty ~ $ ssh fe80::20a:e4ff:fe3a:cda9%eth0<br />
Last login: Sun Aug 14 16:04:38 CEST 2011 from fe80::20a:e4ff:fe3a:cda9%eth0 on pts/5<br />
uwe@krusty ~ $ <br />
</code> 
            </div>
        </content>
        <dc:subject>ipv6</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>ssh</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/94-Logitech-Webcam-C250-eingerichtet.html" rel="alternate" title="Logitech Webcam C250 eingerichtet" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2010-11-22T22:04:13Z</published>
        <updated>2010-11-24T12:21:40Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=94</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=94</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/94-guid.html</id>
        <title type="html">Logitech Webcam C250 eingerichtet</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Nur ein kurzer Eintrag als Gedächtnisstütze wie die Logitech Webcam C250 unter Gentoo zum funktionieren zu bewegen ist. Folgende Kernel-Einstellungen (2.6.34 in diesem Fall, bei anderen Kerneln kann der Pfad unter Umständen ein wenig anders sein) sind vonnöten:<br />
<br />
<pre><br />
Device Drivers  ---><br />
  Multimedia support  ---><br />
    Video capture adapters ---><br />
      V4L USB devices  ---><br />
        USB Video Class (UVC)<br />
Sound card support  ---><br />
  Advanced Linux Sound Architecture  ---><br />
    USB sound devices  ---><br />
      USB Audio/MIDI driver<br />
</pre><br />
<br />
Diese Optionen als Modul konfiguriert und mit <strong>make ; make modules_install</strong> gebaut und udev sollte nach dem Anschluss der Webcam alles automagisch laden. Mit media-video/guvcview sollte dann bereits alles funktionieren. Die C250 bringt zwar ein Mikrofon mit, allerdings hat die schon vorhandene Soundkarte üblicherweise eine niedrigere Device Nummer in ALSA (und damit eine höhere Priorität) und ist damit das Standardgerät.  Somit müsste in jedem Programm in dem man das Mikrofon der C250 benutzen will extra konfigurieren.  Es ist jedoch auch möglich in ALSA verschiedene Standardgeräte für Wiedergabe und Aufnahme zu definieren. Dies kann entweder Global in der /etc/asound.conf oder für den entsprechenden Benutzer in der ~/.asoundrc geschehen. Zunächst muss man herausfinden welches Gerät welche Nummer hat:<br />
<br />
<pre><br />
$ cat /proc/asound/cards<br />
 0 [Intel          ]: HDA-Intel - HDA Intel<br />
                      HDA Intel at 0xf3ff8000 irq 22<br />
 1 [NVidia         ]: HDA-Intel - HDA NVidia<br />
                      HDA NVidia at 0xf7cfc000 irq 17<br />
 2 [U0x46d0x804    ]: USB-Audio - USB Device 0x46d:0x804<br />
                      USB Device 0x46d:0x804 at usb-0000:00:1d.0-1.5.1, high speed<br />
</pre><br />
<br />
Mein Onboard Sound hat demnach Nummer 0 und die Webcam Nummer 2. Mit diesen Infos kann die ALSA Konfigurationsdatei schon korrekt angepasst werden:<br />
<br />
<pre><br />
pcm.!default {<br />
         type asym<br />
         playback.pcm {<br />
                 type plug<br />
                 slave.pcm "hw:0,0"<br />
         }  <br />
         capture.pcm {<br />
                 type plug<br />
                 slave.pcm "hw:2,0"<br />
         }  <br />
 }<br />
</pre><br />
<br />
Sollten die entsprechenden Geräte andere Nummern haben muss die Zahl hinter hw: natürlich angepasst werden. Es geht garantiert einfacher, eleganter und schöner mit ALSA, allerdings bin ich mit der Konfiguration nie wirklich grün geworden und das da oben "works for me" :)<br />
<br />
 
            </div>
        </content>
        <dc:subject>c250</dc:subject>
<dc:subject>gentoo</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>logitech</dc:subject>
<dc:subject>webcam</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/93-Ausgelockt.html" rel="alternate" title="Ausgelockt" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2010-04-21T08:32:32Z</published>
        <updated>2010-04-21T08:32:32Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=93</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/93-guid.html</id>
        <title type="html">Ausgelockt</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Ich kenne bisher niemanden der auf die Frage "Hast du Capslock/die Feststelltaste schonmal gebraucht?" mit ja geantwortet hätte. Bei der Anschlussfrage, ob Capslock schon einmal genervt hat antworteten bisher auch alle überinstimmend mit "Ja".<br />
<br />
Grund genug dieses Ungetüm aus der grauen Schreibmaschienenvorzeit auf den digitalen Friedhof zu verbannen. Das Projekt <a href="http://blog.planet-uwe.de/exit.php?url_id=723&amp;entry_id=93" title="http://capsoff.org/"  onmouseover="window.status='http://capsoff.org/';return true;" onmouseout="window.status='';return true;">CAPSoff</a> hat sich der endgültigen Lösung des Problems verschrieben, ich möchte jedoch die "softe" Variante und Linux vorstellen. Die meisten Beschreibungen zu dieser Taste im Netz schalten sie komplett ab. Dabei wird jedoch übersehen, dass man meistens durchaus einen Tastendruck beabsichtigt hatte und eine der Tasten in umittelbarer Umgebung (Tab, A und Shift) erwischen wollte. Bindet man nun auf Capslock A oder Tab, so muss man das zusätzliche Zeichen bei einem Vertipper wieder löschen/die Aktion rückgängig machen. Bindet man jedoch Shift passiert bei einem Vertipper gar nichts. Aus diesem diesem Grund habe ich mich dazu entschlossen Capslock mit Shift zu belegen. Lange Vorrede, kurze Lösung:<br />
<br />
Zunächst muss eine Datei (bei mir $HOME/.Xmodmap) mit folgendem Inhalt erzeugt werden:<br />
<blockquote><br />
clear Lock<br />
add shift = Caps_Lock<br />
</blockquote><br />
<br />
Diese kann dann einfach mit einem <strong>xmodmap $HOME/.xmodmap</strong> geladen werden. Um dies Automatisch bei der KDE Ameldung auzuführen habe ich die Datei $HOME/.kde/Autostart/xmodmap erstellt:<br />
<blockquote><br />
#!/bin/bash<br />
xmodmap $HOME/.Xmodmap<br />
</blockquote><br />
<br />
Noch mit <strong>chmod 755 $HOME/.kde/Autostart/xmodmap</strong> ausführbar machen und Capslock sollte nie wieder Probleme verursachen.<br />
<br />
 
            </div>
        </content>
        <dc:subject>capslock</dc:subject>
<dc:subject>kde</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>xmodmap</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/82-Gleichtakt.html" rel="alternate" title="Gleichtakt" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2009-12-24T11:24:00Z</published>
        <updated>2009-12-27T10:00:06Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=82</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=82</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/82-guid.html</id>
        <title type="html">Gleichtakt</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Um die Uhrzeit unter Linux mit der <a href="http://blog.planet-uwe.de/exit.php?url_id=719&amp;entry_id=82" title="http://de.wikipedia.org/wiki/Koordinierte_Weltzeit"  onmouseover="window.status='http://de.wikipedia.org/wiki/Koordinierte_Weltzeit';return true;" onmouseout="window.status='';return true;">Koordinierten Weltzeit</a> (UTC) synchron zu halten sollte <a href="http://blog.planet-uwe.de/exit.php?url_id=720&amp;entry_id=82" title="http://de.wikipedia.org/wiki/Network_Time_Protocol"  onmouseover="window.status='http://de.wikipedia.org/wiki/Network_Time_Protocol';return true;" onmouseout="window.status='';return true;">NTP</a> als standardisierte und offenes Protokoll benutzt wurden. Hierbei stehen einige Programme zur Auswahl, welche unterschiedliche Strategien zum Abgleich verfolgen. Das einfachste in dieser Katagorie ist sicher ntpdate, welches einen Server nach der aktuellen Uhrzeit befragt und diese hart im System setzt. Dieses Vorgehensweise übergeht jedoch Daemons wie z.B. cron und so können geplante Backups schlicht "vergessen" werden. Auch wenn man gerade am Rechner arbeitet kann eine plötzliche Veränderung der Zeit den Bildschirmschoner anspringen lassen.<br />
<br />
Auch aus diesen Gründen sollte dem ntpd als Standardimplementation der Vorzug gegeben werden. Dieser gleicht Gangdifferenzen zur korrekten Uhrzeit durch Beschleunigung bzw. Verlangsamung der lokalen Systemuhr aus. Stimmt die Zeit wieder, stellt der Daemon die richtige Geschwindigkeit her. Die oben angeführten Nachteile von ntpdate sind damit schon einmal umschifft. Natürlich bringt das eine etwas aufwendigere Konfiguration mit sich, allerdings sollte dies mit den zahlreichen Tutorials im Netz kein Problem sein.<br />
<br />
Vereinfacht wird die "richtige" Geschwindigkeit der Systemuhr normalerweise durch einen Baustein auf dem Motherboard bestimmt, wobei ein Quarzkristall x-mal pro Sekunde schwingt. Da es bei solchen Bauteilen allerdings immer auch Fertigungstoleranzen gibt, ist die Sekunde sogar auf auf zwei Motherboards des gleichen Modells unterschiedlich lang. Diese Sekunden unterscheiden sich dann auch noch einmal von der einer (extrem genauen) <a href="http://blog.planet-uwe.de/exit.php?url_id=721&amp;entry_id=82" title="http://de.wikipedia.org/wiki/Atomuhr"  onmouseover="window.status='http://de.wikipedia.org/wiki/Atomuhr';return true;" onmouseout="window.status='';return true;">Atomuhr</a>. Dieser Unterschied wird auch Drift genannt, der bei jedem Computer unterschiedlich ist. Diesen Drift speichert der ntpd standardmässig unter /var/lib/ntp/ntp.drift und kann die Uhrzeit so auch ohne Verbindung in Netz sehr genau halten.<br />
<br />
Mit dem Kommandozeilenprogramm ntpq kann man dem ntpd bei der Arbeit zusehen und Problemen auf den Grund gehen. Die verbundenen ntp Server werden mit dem Kommando "peers" angezeigt:<br />
<code><br />
uwe@krusty ~ $ ntpq -n -c peers<br />
     remote           refid      st t when poll reach   delay   offset  jitter<br />
==============================================================================<br />
*129.70.132.33   129.70.130.70    2 u   45   64  377   65.492    4.168   0.805<br />
+85.214.29.92    131.188.3.222    2 u    3   64  377   72.744   -0.136   0.702<br />
+78.47.136.197   143.93.99.252    2 u   55   64  377   59.573    1.509   1.118<br />
-92.51.130.224   85.214.71.202    3 u   60   64  377   69.906   -5.627   0.654<br />
</code><br />
<br />
Hier sollte mindestens ein Server mit einem &#042;  markiert sein. Dieser ist für den ntpd am "stabilsten" zu erreichen und der eigene Referenzserver. Die mit + markierten Hosts wären die nächsten Kandidaten falls der Referenzserver nicht mehr verfügbarsein sollte. Mit "associations" kann man sich diese Beziehungen auch ansehen<br />
<br />
<code><br />
uwe@krusty ~ $ ntpq -n -c associations<br />
<br />
ind assID status  conf reach auth condition  last_event cnt<br />
===========================================================<br />
  1 54760  9624   yes   yes  none  sys.peer   reachable  2<br />
  2 54761  9424   yes   yes  none  candidat   reachable  2<br />
  3 54762  9424   yes   yes  none  candidat   reachable  2<br />
  4 54763  9324   yes   yes  none   outlyer   reachable  2<br />
</code><br />
<br />
Es gibt auch einen Kommandozeilenmodus von ntpq in dem man sich austoben kann:<br />
<br />
<code><br />
uwe@krusty ~ $ ntpq<br />
ntpq&gt; ?<br />
ntpq commands:<br />
addvars        debug          lopeers        passociations  rl<br />
associations   delay          lpassociations passwd         rmvars<br />
authenticate   exit           lpeers         peers          rv<br />
cl             help           mreadlist      poll           showvars<br />
clearvars      host           mreadvar       pstatus        timeout<br />
clocklist      hostnames      mrl            quit           version<br />
clockvar       keyid          mrv            raw            writelist<br />
cooked         keytype        ntpversion     readlist       writevar<br />
cv             lassociations  opeers         readvar<br />
ntpq&gt;<br />
</code><br />
<br />
 
            </div>
        </content>
        <dc:subject>Linux</dc:subject>
<dc:subject>NTP</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/91-IPv6-mit-Hurricane-Electric-und-OpenWRT.html" rel="alternate" title="IPv6 mit Hurricane Electric und OpenWRT" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2009-11-21T14:49:54Z</published>
        <updated>2010-01-10T19:36:37Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=91</wfw:comment>
    
        <slash:comments>10</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/91-guid.html</id>
        <title type="html">IPv6 mit Hurricane Electric und OpenWRT</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Will man mit einem DSL Anschluss in Deutschland per IPv6 ins Internet und nicht extra dafür zu einem der <a href="http://blog.planet-uwe.de/exit.php?url_id=712&amp;entry_id=91" title="http://www.sixxs.net/faq/connectivity/?faq=native&amp;country=de"  onmouseover="window.status='http://www.sixxs.net/faq/connectivity/?faq=native&amp;country=de';return true;" onmouseout="window.status='';return true;">wenigen Provider die IPv6 nativ anbieten</a> wechseln, so bleibt als einzig praktikable Möglichkeit derzeit nur ein <a hre="http://en.wikipedia.org/wiki/6in4">6in4 Tunnel</a>. Der amerikanische Konzern Hurricane Electric (oder der einfacheit halber: HE) bietet unter <a href="http://blog.planet-uwe.de/exit.php?url_id=713&amp;entry_id=91" title="http://tunnelbroker.net/"  onmouseover="window.status='http://tunnelbroker.net/';return true;" onmouseout="window.status='';return true;">http://tunnelbroker.net/</a> einen kostenlosen IPv6 <a href="http://blog.planet-uwe.de/exit.php?url_id=714&amp;entry_id=91" title="http://en.wikipedia.org/wiki/Tunnel_broker"  onmouseover="window.status='http://en.wikipedia.org/wiki/Tunnel_broker';return true;" onmouseout="window.status='';return true;">Tunnelbroker</a> an, zu welchem man von jedem beliebigen DSL aus einen Tunnel betreiben kann. Nach der Registrierung kann unter "Create Regular Tunnel" ein neuer Tunnel beantragt werden. Dabei muss die eigene DSL IP (herauszufinden z.B. bei <a href="http://blog.planet-uwe.de/exit.php?url_id=715&amp;entry_id=91" title="http://www.whatismyip.org"  onmouseover="window.status='http://www.whatismyip.org';return true;" onmouseout="window.status='';return true;">www.whatismyip.org</a>) allerdings pingbar sein, sonst scheitert der Antrag. Ausserdem sollte man gleich ein "Routed /48" beantragen, damit man die Clients hinter dem eigenen Router gleich mit IPv6 versorgen kann.<br />
<br />
Ich benutze auf meinem <a hre="http://de.wikipedia.org/wiki/WRT54G">DSL Router WRT54GL</a> derzeit die Linuxdistribution <a href="http://blog.planet-uwe.de/exit.php?url_id=716&amp;entry_id=91" title="http://openwrt.org/"  onmouseover="window.status='http://openwrt.org/';return true;" onmouseout="window.status='';return true;">OpenWRT</a>. Es exitiert zwar eine <a href="http://blog.planet-uwe.de/exit.php?url_id=717&amp;entry_id=91" title="http://nuwiki.openwrt.org/oldwiki/IPv6_howto"  onmouseover="window.status='http://nuwiki.openwrt.org/oldwiki/IPv6_howto';return true;" onmouseout="window.status='';return true;">Anleitung</a> für IPv6 auf dieser Distribution, allerdings ist diese nicht mehr wirklich aktuell. Diese Anleitung wurde erfolgreich mit der OpenWRT Version 8.09.1 (Kamikaze) entwickelt. Um IPv6 mit HE zum fliegen zu bringen sind folgende Schritte notwendig:<br />
<br />
Zunächst müssen mit opkg install folgende Pakete installiert werden <br />
<br />
<code><br />
ip6tables<br />
kmod-ip6tables<br />
kmod-ipv6<br />
radvd<br />
</code><br />
<br />
Der Tunnelbroker geht von einer statischen IP aus, bei DSL ändert sich diese jedoch üblicherweise mit jeder Neueinwahl. Um den Tunnelendpunkt bei jeder Änderung wieder aufzusetzen habe ich ein Shellskript erstellt. Es wird immer aufgerufen wenn sich ein Interfacestatus ändert. Zunächst wird die Benutzernummer gebraucht, welche auf der Hurricane Electric Tunelbroker Homepage direkt neben "UserID" steht.  Ebenfalls auf der HE Seite unter "Tunnel Details" ist die "Global Tunnel ID" zu finden. Der letzte notwendige Wert ist das mit MD5 gehashte Passwort. Dies lässt sich am einfachsten an der Shell erstellen:<br />
<br />
<code><br />
$ echo -n 'XXX' | md5sum<br />
bc9189406be84ec297464a514221406d  -<br />
</code><br />
<br />
Die MD5 Summe das Passworts XXX ist in diesem Beispiel also bc9189406be84ec297464a514221406d. Der letzte Wert der benötigt wird ist die "Client IPv6 address", welche sich ebenfalls bei den "Tunnel Details" befindet.<br />
<br />
Diese Werte müssen in das Skript unten eingetragen und in der Datei /etc/hotplug.d/iface/10-ipv6 gespeichert werden:<br />
<br />
<code><br />
#!/bin/sh<br />
<br />
USER="XXX"<br />
PASS="XXX"<br />
ID="XXX"<br />
CLIENT="XXX/64"<br />
REMOTEV4="216.66.80.30"<br />
ROUTEDNET="XXX::/48"<br />
<br />
EXT="wan"<br />
INT="lan"<br />
TUNNEL="he-ipv6"<br />
<br />
. /etc/functions.sh      # common functions<br />
include /lib/network     # include /lib/network/*.sh<br />
scan_interfaces          # read and parse the network config<br />
<br />
<br />
if [ "$ACTION" = "ifup" -a "$INTERFACE" = "$EXT" ]<br />
then<br />
        config_get IPV4 "$EXT" ipaddr<br />
        logger "updating ipv4 tunnel endpoint to $IPV4"<br />
        wget -O - "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$IPV4&amp;pass=$PASS&amp;user_id=$USER&amp;tunnel_id=$ID" > /dev/null 2>&amp;1<br />
        ip tunnel add $TUNNEL mode sit remote $REMOTEV4 local $IPV4 ttl 255<br />
        ip link set $TUNNEL up<br />
        ip addr add $CLIENT dev $TUNNEL<br />
        ip route add ::/0 dev $TUNNEL<br />
        config_get LANIF "$INT" ifname<br />
        ip route add $ROUTEDNET dev $LANIF<br />
fi<br />
<br />
if [ "$ACTION" = "ifdown" -a "$INTERFACE" = "wan" ]<br />
then<br />
        ip tunnel del $TUNNEL<br />
        config_get LANIF "$INT" ifname<br />
        ip route del $ROUTEDNET dev $LANIF<br />
fi<br />
<br />
</code><br />
<br />
Um die Kommunikation mit dem Tunnelbroker zu erlauben muss dieser in der OpenWRT IPv4 Firewall (/etc/config/firewall) freigeschaltet werden:<br />
<br />
<code><br />
config rule<br />
        option src_ip   216.66.80.30<br />
        option proto    41<br />
        option target   ACCEPT<br />
</code><br />
<br />
Um den Router auch gegenüber dem Internet zu schützen sollten in die Datei /etc/firewall.user folgende Zeilen hinzugefügt werden:<br />
<br />
<code><br />
### ipv6 stuff<br />
ip6tables -F INPUT<br />
ip6tables -P INPUT DROP<br />
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
ip6tables -A INPUT -p icmpv6 -j ACCEPT<br />
ip6tables -F FORWARD<br />
ip6tables -A FORWARD -j ACCEPT<br />
</code><br />
<br />
Diese Firewall schützt <b>nur</b> den Router und nicht die Clients im Netz dahinter. Entweder man erweitert die Regeln oben entsprechend oder man spendiert jedem Client eine IPv6 Firewall. Die oben gemachten Änderungen werden nach einem "/etc/init.d/firewall restart" aktiv.<br />
<br />
Die Einstellungen sind gemacht und nach einem "ifdown wan; ifup wan" sollte der Tunnel stehen. Dies kann gleich mit ping6 geprüft werden:<br />
<br />
<code><br />
root@OpenWrt:~# ping6 -c3 www.kame.net<br />
PING www.kame.net (2001:200:0:8002:203:47ff:fea5:3085): 56 data bytes<br />
64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: seq=0 ttl=51 time=294.092 ms<br />
64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: seq=1 ttl=51 time=292.718 ms<br />
64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: seq=2 ttl=51 time=293.255 ms<br />
<br />
--- www.kame.net ping statistics ---<br />
3 packets transmitted, 3 packets received, 0% packet loss<br />
round-trip min/avg/max = 292.718/293.355/294.092 ms<br />
root@OpenWrt:~# ping6 -c3 ipv6.google.com<br />
PING ipv6.google.com (2001:4860:a003::68): 56 data bytes<br />
64 bytes from 2001:4860:a003::68: seq=0 ttl=59 time=19.912 ms<br />
64 bytes from 2001:4860:a003::68: seq=1 ttl=59 time=15.248 ms<br />
64 bytes from 2001:4860:a003::68: seq=2 ttl=59 time=15.082 ms<br />
<br />
--- ipv6.google.com ping statistics ---<br />
3 packets transmitted, 3 packets received, 0% packet loss<br />
round-trip min/avg/max = 15.082/16.747/19.912 ms<br />
</code><br />
<br />
Um nun die Clients im eigenen Heimnetz <a href="http://blog.planet-uwe.de/exit.php?url_id=718&amp;entry_id=91" title="http://www.ietf.org/rfc/rfc2462.txt"  onmouseover="window.status='http://www.ietf.org/rfc/rfc2462.txt';return true;" onmouseout="window.status='';return true;">per Autokonfiguration</a> mit IPv6 zu versorgen muss der Linux Router Advertisement Daemon konfiguriert werden.  Dazu wird das oben beantragte Routed /48 benötigt. Die Konfiguration sieht bei mir folgendermassen aus:<br />
<br />
/etc/config/radvd<br />
<pre><br />
config interface<br />
        option interface        'lan'<br />
        option AdvSendAdvert    1<br />
        option AdvManagedFlag   0<br />
        option AdvOtherConfigFlag 0<br />
        option ignore           0<br />
<br />
config prefix<br />
        option interface        'lan'<br />
        # If not specified, a non-link-local prefix of the interface is used<br />
        option prefix           '2001:470:9888::/64'<br />
        option AdvOnLink        1<br />
        option AdvAutonomous    1<br />
        option AdvRouterAddr    0<br />
        option AdvPreferredLifetime     600<br />
        option AdvValidLifetime 1200<br />
        option ignore           0<br />
<br />
config rdnss<br />
        option interface        'br-lan'<br />
        # If not specified, the link-local address of the interface is used<br />
        option addr             ''<br />
        option ignore           1<br />
</pre><br />
<br />
Für die option "prefix" muss das eigene bei HE beantragte /48 eingetragen werden. Achtung: als Netzmaske für radvd ist /64 zwingend notwendig, denn nur so können sich die Clients mit Hilfe von EUI-64 selbst eine Adresse würfeln. Trägt man hier /48 bleiben 16 Bits übrig, von denen der Client nicht weiss, wie er sie füllen soll. Nachdem man den Daemon aktiviert und gestartet ist sollten alle Clients im dahinterliegenden Netz automatisch mit IPv6 versorgt werden, sofern das Betriebssystem dies unterstützt.<br />
<br />
<code><br />
root@OpenWrt:~# /etc/init.d/radvd enable<br />
root@OpenWrt:~# /etc/init.d/radvd start<br />
</code><br />
 
            </div>
        </content>
        <dc:subject>he</dc:subject>
<dc:subject>hurricaneelectric</dc:subject>
<dc:subject>ipv6</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>openwrt</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/90-Bitmagic.html" rel="alternate" title="Bitmagic" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2009-11-12T22:52:29Z</published>
        <updated>2009-12-27T10:06:43Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=90</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/90-guid.html</id>
        <title type="html">Bitmagic</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Da ich eben doch eine Weile gebastelt möchte ich folgendes für die Nachwelt aufbewahren. Die Konvertierung einer Subnetmaske (übliches Format) in die (von Cisco benutzte) Wildcard Notation in python:<br />
<br />
<code><br />
uwe@barney ~ $ python<br />
Python 2.6.2 (r262:71600, Sep  3 2009, 02:12:03)<br />
[GCC 4.3.2] on linux2<br />
Type "help", "copyright", "credits" or "license" for more information.<br />
>>> import socket, struct<br />
>>> a=struct.unpack('!L',socket.inet_aton("255.255.255.0"))[0]<br />
>>> socket.inet_ntoa(struct.pack('!L',~a &amp; 0xFFFFFFFF))<br />
'0.0.0.255'<br />
</code><br />
<br />
Ein paar Anmerkungen zum besseren Verständnis<br />
<ul><br />
<li>!L wird gebraucht da  Network byte order Big Endian(!L) ist, die normalen PC Architekturen aber Litte Endian(L) verwenden.</li><br />
<li>Das bitweise AND mit 0xFFFFFFFF ist notwendig, da das NOT vor a einen negativen Wert erzeugt, welcher nicht mehr in den Long passt. Das wiederrum erzeugt eine unschöne Warnung. Dieses Vorzeichenbit wird mit der Verknüpfung positiv womit das ganze wieder passt.</li><br />
</ul><br />
<br />
Nachtrag:<br />
<br />
Um CIDR nach Netzmaske zu Konvertieren nimmt man das hier:<br />
<br />
<code><br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',8589934591L&lt;&lt;(32-24)))<br />
'255.255.255.0'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',8589934591L&lt;&lt;(32-25)))<br />
'255.255.255.128'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',8589934591L&lt;&lt;(32-26)))<br />
'255.255.255.192'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',8589934591L&lt;&lt;(32-27)))<br />
'255.255.255.224'<br />
</code><br />
<br />
2. Nachtrag<br />
<br />
Oder einfacher zu lesen (und zu verstehen):<br />
<br />
<code><br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',0xFFFFFFFF&lt;&lt;(32-24)))<br />
'255.255.255.0'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',0xFFFFFFFF&lt;&lt;(32-25)))<br />
'255.255.255.128'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',0xFFFFFFFF&lt;&lt;(32-26)))<br />
'255.255.255.192'<br />
&gt;&gt;&gt; socket.inet_ntoa(struct.pack('!L',0xFFFFFFFF&lt;&lt;(32-27)))<br />
'255.255.255.224'<br />
</code><br />
 
            </div>
        </content>
        <dc:subject>python netmask wildcard cisco cidr</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/87-Abgelegt.html" rel="alternate" title="Abgelegt" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2009-06-01T15:22:16Z</published>
        <updated>2009-12-13T08:57:26Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=87</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/87-guid.html</id>
        <title type="html">Abgelegt</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Konfigurationsdateien unter *nix Systemen  werden üblicherweise in /etc abgelegt. Da es sich dabei meist um reine Textdateien handelt bietet sich eine Versionierung mit einem der bekannten Systeme an. Ich habe mich aus reiner Faulheit (meine Diplomarbeit enstand bereits damit) für <a href="http://blog.planet-uwe.de/exit.php?url_id=708&amp;entry_id=87" title="http://de.wikipedia.org/wiki/Subversion_(Software)"  onmouseover="window.status='http://de.wikipedia.org/wiki/Subversion_(Software)';return true;" onmouseout="window.status='';return true;">Subversion</a> entschieden. Die Einführung in SVN, so die Abkürzung für Subversion, und in <a href="http://blog.planet-uwe.de/exit.php?url_id=709&amp;entry_id=87" title="http://de.wikipedia.org/wiki/Versionsverwaltung"  onmouseover="window.status='http://de.wikipedia.org/wiki/Versionsverwaltung';return true;" onmouseout="window.status='';return true;">Versionsverwaltung</a> allgemein spare ich mir an dieser Stelle da es dazu schon viele hervorragende Quellen im Web gibt.<br />
<br />
Ich habe diverse Rechner, deren /etc ich auf diese Weise sichern und will und einen Rootserver welchen ich als zentrales <a href="http://blog.planet-uwe.de/exit.php?url_id=710&amp;entry_id=87" title="http://de.wikipedia.org/wiki/Repository"  onmouseover="window.status='http://de.wikipedia.org/wiki/Repository';return true;" onmouseout="window.status='';return true;">Repository</a> zur Speicherung benutzen möchte.<br />
<br />
Als erstes wird das dazu das SVN Repository angelegt:<br />
<blockquote><br />
uwe@maninthemiddle ~ $ svnadmin create /home/uwe/repos<br />
</blockquote><br />
<br />
Mehr muss auf dem Server auch nicht mehr gemacht werden. Der Rest wird vom Clientrechner (in meinem Fall mit dem Namen &quot;Krusty&quot; über SSH erledigt. Dazu bietet es sich an <a href="http://blog.planet-uwe.de/exit.php?url_id=711&amp;entry_id=87" title="http://de.wikipedia.org/wiki/Public-Key-Authentifizierung"  onmouseover="window.status='http://de.wikipedia.org/wiki/Public-Key-Authentifizierung';return true;" onmouseout="window.status='';return true;">Key-basierende Authentifizierung</a>  für SSH zu benutzen. Auch hier sei auf die vielen guten Tutorials im Web verwiesen. Da ich SSH normalerweise als unprivilegierter Anwender benutze /etc aber nur als root vollständig gelesen werden kann, sollte das SSH profil von root dementsprechend angepasst werden. Dies beinhaltet den richtigen Benutzernamen, sowie eine identity Datei welche den private key enthält. Die entsprechende Konfigurationsdatei /root/.ssh/config sieht bei mir dementsprechend so aus:<br />
<br />
<blockquote><br />
Host maninthemiddle.de<br />
User uwe<br />
IdentityFile /home/uwe/.ssh/id_rsa<br />
</blockquote><br />
<br />
Nun muss im Repository ein Verzeichnis angelegt werden in dem die Dateien später landen sollen:<br />
<br />
<blockquote><br />
krusty etc # svn mkdir svn+ssh://maninthemiddle.de/home/uwe/repos/etc-krusty<br />
</blockquote><br />
<br />
Dieses wird im Verzeichnis /etc auf dem lokalen Rechner ausgecheckt und ist damit mit diesem verbunden:<br />
<br />
<blockquote><br />
krusty etc # svn co svn+ssh://maninthemiddle.de/home/uwe/repos/etc-krusty /etc<br />
</blockquote><br />
<br />
Mit svn add können nun Dateien hinzugefügt und mit svn commit ins Repository hochgeladen werden. Unschön ist dabei allerdings, dass nicht hinzugefügte Dateien bei svn status mit einem Fragezeichen auftauchen und die Übersichtlichkeit stark leidet:<br />
<br />
<blockquote><br />
krusty etc # svn status<br />
 M     .<br />
?      xinetd.conf<br />
?      opera6rc.fixed<br />
?      nanorc<br />
?      racoon<br />
?      java-config-2<br />
...<br />
</blockquote><br />
<br />
Bei der Softwareentwicklung sorgt dieser Mechanismus dafür, dass keine Datei vergessen wird. Hier tauchen in diesem Fall jedoch in der Mehrzahl Dateien auf die gar nicht ins Repository kommen sollen. Um den Überblick zu behalten habe ich deshalb SVN angewiesen alle Dateien zu ignorieren, die nicht eingecheckt sind.<br />
<br />
<blockquote><br />
krusty etc # svn propset svn:ignore '*' /etc<br />
</blockquote><br />
<br />
<br />
Für alle anderen Rechner einfach die gleichen Schritte durchführen, womit  Probleme mit gelöschten/verschlimmbesserten Konfigurationsdateien der Vergangenheit angehören sollten.<br />
<br />
<b>Nachtrag:</b><br />
Gerade unter gentoo sollte auch die aktuelle Kernelkonfiguration gesichert werden. Ich setze dazu einfach einen Symlink nach /etc und füge diese Datei zum Repository hinzu.<br />
<br />
<blockquote><br />
barney etc # ln -s /usr/src/linux/.config kernelconfig<br />
barney etc # svn add kernelconfig<br />
A         kernelconfig<br />
</blockquote><br />
<br />
<b>Nachtrag 2:</b><br />
Die alten Versionen einzelner Dateien kann man mittels svn export -r REVISION holen:<br />
<br />
<blockquote><br />
uwe@barney ~/tmp $ svn log svn+ssh://maninthemiddle.de/home/uwe/repos/etc-barney/lilo.conf<br />
------------------------------------------------------------------------<br />
r18 | uwe | 2009-11-26 21:49:23 +0100 (Do, 26. Nov 2009) | 1 Zeile<br />
<br />
<br />
------------------------------------------------------------------------<br />
r17 | uwe | 2009-11-26 21:43:01 +0100 (Do, 26. Nov 2009) | 1 Zeile<br />
<br />
<br />
------------------------------------------------------------------------<br />
uwe@barney ~/tmp $ svn export -r 17 svn+ssh://maninthemiddle.de/home/uwe/repos/etc-barney/lilo.conf<br />
A    lilo.conf<br />
Export abgeschlossen.<br />
</blockquote><br />
<b>Nachtrag 3:</b><br />
Um z.B. die /etc/X11/xorg.conf ins Repository hinzufügen zu können muss auch das Verzeichnis /etc/X11/ im Repository vorhanden sein. Subversion fügt mit svn add /etx/X11 allerdings auch alle Dateien unterhalb dieses Verzeichnisses ein. Stattdessen möchste man die Option  --non-recursive benutzen:<br />
<br />
<blockquote><br />
barney etc # svn add --non-recursive X11/<br />
A         X11<br />
</blockquote><br />
<br />
Versehentlich ins Repository aufgenomme Dateien kann man mit svn delete wieder aus diesem entfernen, allerdings löscht svn dann auch die lokale Kopie. Hier sollte man --keep-local als Option mitgeben:<br />
<br />
<blockquote><br />
barney portage # svn delete --keep-local savedconfig/                   <br />
D         savedconfig/sys-apps/busybox-1.13.2                           <br />
D         savedconfig/sys-apps                                          <br />
D         savedconfig                                                   <br />
</blockquote><br />
 
            </div>
        </content>
        <dc:subject>linux</dc:subject>
<dc:subject>subversion</dc:subject>
<dc:subject>svn</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/85-Gedreht.html" rel="alternate" title="Gedreht" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2008-01-13T12:57:16Z</published>
        <updated>2010-06-15T21:40:02Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=85</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/85-guid.html</id>
        <title type="html">Gedreht</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Wer kennt das nicht. Nach dem Urlaub werden Fotos am Bildschirm bestaunt und es dauert nicht lange bis das kollektive Kopfkippen nach rechts oder links beginnt. Glücklicherweise haben inzwischen sogar Handykameras Neigungssensoren eingebaut, womit die Elektronik die Ausrichtung in den <a href="http://blog.planet-uwe.de/exit.php?url_id=704&amp;entry_id=85" title="http://de.wikipedia.org/wiki/EXIF"  onmouseover="window.status='http://de.wikipedia.org/wiki/EXIF';return true;" onmouseout="window.status='';return true;">EXIF</a> Daten eines Bildes speichern kann. Somit ist es für ein Ausgabegerät möglich das Foto anhand dieser Daten wieder richtig herum auf den Bildschirm zu bringen. Der Bildbetrachter beispielsweise <a href="http://blog.planet-uwe.de/exit.php?url_id=705&amp;entry_id=85" title="http://gqview.sourceforge.net/"  onmouseover="window.status='http://gqview.sourceforge.net/';return true;" onmouseout="window.status='';return true;">gqview</a> kann die Fotos so schon vor der Anzeige drehen. Allerdings wirkt sich dies nur auf die Darstellung aus und die gespeicherten Fotos behalten ihre Ausrichtung. Da nicht alle Bildbetrachter so eine Funktion enthalten will man natürlich das gespeicherte Material zurecht rücken. Dabei ist zu bedenken, dass <a href="http://blog.planet-uwe.de/exit.php?url_id=706&amp;entry_id=85" title="http://de.wikipedia.org/wiki/JPEG"  onmouseover="window.status='http://de.wikipedia.org/wiki/JPEG';return true;" onmouseout="window.status='';return true;">JPEG</a> ein verlustbehaftetes Format ist und das Laden, Drehen und erneute Speichern zur Qualitätsminderung führen würde. Glücklicherweise wurden solche Fälle von der <a href="http://blog.planet-uwe.de/exit.php?url_id=707&amp;entry_id=85" title="http://de.wikipedia.org/wiki/Joint_Photographic_Experts_Group"  onmouseover="window.status='http://de.wikipedia.org/wiki/Joint_Photographic_Experts_Group';return true;" onmouseout="window.status='';return true;">Joint Photographic Experts Group</a> bei der Entwicklung des Formats bedacht. Aus diesem Grund wurden einige spezielle verlustfreie JPEG Operationen definiert wie z.B. drehen um vielfache von 90° und das Beschneiden eines Bildes um vielfache von 16 Pixeln. Das Verarbeitende Programm muss diese JPEG Operationen allerdings explizit unterstützen, sonst werden in der Regel verlustbehaftete Operationen durchgeführt. Genug der Theorie, hier die Linux Praxis:<br />
<br />
Unter Gentoo befinden sich alle hier genannten Tools im Paket <tt>media-libs/jpeg</tt>. Das Programm <tt>jpegtran</tt> unterstützt besagte JPEG Operationen und kann die Bilder wie gewünscht drehen. Es empfiehlt sich außerdem immer den Parameter <tt>-copy all</tt> zu verwenden, damit die EXIF Daten erhalten bleiben. Allerdings stimmt nun die in den EXIF Daten gespeicherte Ausrichtung nicht mehr. Diese kann man dann mit dem Tool <tt>jpegexiforient</tt> und dem Parameter <tt>-1</tt> auf Normalausrichtung setzen. Das ganze ist natürlich automatisierbar und mit dem Skript <tt>exifautotran</tt> umgesetzt. Zunächst wird die Ausrichtung gelesen, dann richtig gedreht und zum Schluss wird im EXIF Teil wieder die Normalausrichtung gesetzt. Ein <tt>exifautotran *.jpg</tt> entlastet also die Nackenmuskulatur während des Fotoabends.<br />
<br />
<b>Update:</b> unter Ubuntu heißt das entsprechende Paket libjpeg-progs 
            </div>
        </content>
        <dc:subject>EOS</dc:subject>
<dc:subject>EXIF</dc:subject>
<dc:subject>Foto</dc:subject>
<dc:subject>JPEG</dc:subject>
<dc:subject>Linux</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/84-Verschluesselt.html" rel="alternate" title="Verschlüsselt" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2007-08-25T15:43:35Z</published>
        <updated>2007-08-25T15:43:35Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=84</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/84-guid.html</id>
        <title type="html">Verschlüsselt</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Cisco bietet auf einer Menge Devices IPSec zur verschlüsselten Remote Anbindung  entfernter Standorte. Ich habe das ganze letzte Woche anhand einiger Laboraufbauten getestet. Mit von der Partie waren ein Router der Serie 2600er mit IOS, ein VPN Concentrator (3000er Serie) und eine PIX. Das ganze sah in etwa folgendermassen aus:<br />
<br />
PC1 --(192.168.55.0/24)-- Cisco Device 1 --(192.168.66.0/24)-- Cisco Device 2 --(192.168.77.0/24)-- PC2<br />
<br />
Zwischen beiden Cisco Devices sollte ein IPSec Tunnel aufgebaut werden und die Netze 192.168.55.0/24 und 192.168.77.0/24 über diesen verschlüsselt übertragen werden. Ziel war es also, dass PC1 PC2 pingen kann.<br />
<br />
Die Konfiguration ist zwar recht einfach, wenn man die Tutorials auf der Cisco-Homepage befolgt, wenn es danach allerdings nicht so tut wie es soll, wird es mühsam. Deshalb hier meine gesammelten Erkenntnisse:<br />
<br />
<ul><br />
<li>Beide Cisco Devices sollten sich nicht im selben Subnet befinden (der Aufbau von oben bringt also Probleme). Es kommt zu sehr seltsamen Effekten, wenn es kein Default Gateway bzw. keine Default Route gibt. Das Default Gateway sollte dabei natürlich auf dem äußeren Interface liegen.</li><br />
<li>Die PIX nimmt beim Hashing der Identity standardmäßig den <a href="http://blog.planet-uwe.de/exit.php?url_id=699&amp;entry_id=84" title="http://en.wikipedia.org/wiki/FQDN"  onmouseover="window.status='http://en.wikipedia.org/wiki/FQDN';return true;" onmouseout="window.status='';return true;">FQDN</a>, was ohne DNS-Namen im Laboraufbau natürlich sinnfrei ist. Mit folgendem Kommando kann man auf IP Adressen umschalten: <tt>isakmp identity address</tt></li><br />
</ul><br />
<br />
Ich schreib das jetzt so einfach runter, aber besonders der erste Punkt hat doch einiges an Zeit verschlungen. Ich hoffe ich erspare jemand anderem damit die Sucherei nach dem Fehler.<br />
 
            </div>
        </content>
        <dc:subject>Cisco</dc:subject>
<dc:subject>Concentrator</dc:subject>
<dc:subject>IOS</dc:subject>
<dc:subject>IPSec</dc:subject>
<dc:subject>PIX</dc:subject>
<dc:subject>VPN</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/80-Manipuliert.html" rel="alternate" title="Manipuliert" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2007-03-05T20:35:30Z</published>
        <updated>2009-11-27T09:35:41Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=80</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=80</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/80-guid.html</id>
        <title type="html">Manipuliert</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <a href="http://blog.planet-uwe.de/exit.php?url_id=698&amp;entry_id=80" title="http://www.secdev.org/projects/scapy/"  onmouseover="window.status='http://www.secdev.org/projects/scapy/';return true;" onmouseout="window.status='';return true;">Scapy</a> ist ein ziemlich cooler Packetgenerator/Analyzer/vielesmehr. Die Projektseite gibt mit der "Quick Demo" schon eine kleine Einführung in die Fähigkeiten dieses Tools.<br />
<br />
Leider ist die Dokumentation im im Gegensatz zum Programm noch weitgehend unbrauchbar und deshalb will ich versuchen hier immer mal wieder nützliche Scapy Skripte/Einzeiler vorzustellen.<br />
<br />
<h2>Wilde DHCP Server finden</h2><br />
Problem: irgendwo im Netz schwirrt ein nicht genemigter DHCP Server herum und vergibt IP Adressen. Die umständliche Methode wäre das eigene Interface umzukonfigurieren und einen DHCP Request zu machen. Scapy schafft das ohne diesen lästigen Mehraufwand.<br />
<br />
<blockquote><br />
>>> dhcp_request(iface="eth1")<br />
WARNING: conf.checkIPaddr is not 0, I may not be able to match the answer<br />
Begin emission:<br />
Finished to send 1 packets.<br />
.......................................<br />
Received 39 packets, got 0 answers, remaining 1 packets<br />
</blockquote><br />
<br />
Ein gleichzeitiger tcpdump offenbart ide MAC-Adresse des Übeltäters:<br />
<br />
<blockquote><br />
# tcpdump -e -i eth1 port 67 or port 68<br />
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode<br />
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes<br />
<br />
21:43:17.938745 00:11:11:11:11:11 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 286: 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:11:11:11:11:11 (oui Unknown), length 244<br />
<br />
21:43:17.952684 00:22:22:22:22:22 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 342: ..bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 300<br />
</blockquote><br />
<br />
Mit einem managbaren Switch lässt sich die Adresse 00:22:22:22:22:22 nun schnell einem Port zuordnen. Unter IOS z.B. mit show mac-address-table oder unter CatOS mit show cam dynamic. Dann muss man nur noch das Kabel verfolgen und dem User auf die Finger klopfen ;).<br />
 
            </div>
        </content>
        <dc:subject>debugging</dc:subject>
<dc:subject>DHCP</dc:subject>
<dc:subject>Linux</dc:subject>
<dc:subject>Netzwerk</dc:subject>
<dc:subject>Security</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/79-Genug.html" rel="alternate" title="Genug" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2007-02-13T13:53:04Z</published>
        <updated>2007-02-13T13:53:04Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=79</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=79</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/79-guid.html</id>
        <title type="html">Genug</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Ich hab die Schnauze gestrichen voll. Trotz der Tatsache, dass Trackbacks auf moderieren stehen, erhalten ich ständig Müll von irgendwelchen asozialen Spammern. Aus diesem Grund sind sie jetzt global deaktiviert. Wer einen Trackback setzen will, möge mich per Mail kontaktieren.<br />
 
            </div>
        </content>
        <dc:subject>spam</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/78-IE-reloaded.html" rel="alternate" title="IE reloaded" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2006-12-08T18:43:44Z</published>
        <updated>2006-12-09T12:56:56Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=78</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=78</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/78-guid.html</id>
        <title type="html">IE reloaded</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <a href="http://blog.planet-uwe.de/exit.php?url_id=697&amp;entry_id=78" title="http://blog.planet-uwe.de/archives/64-Emuliert.html"  onmouseover="window.status='http://blog.planet-uwe.de/archives/64-Emuliert.html';return true;" onmouseout="window.status='';return true;">Einen Artikel</a> habe ich dem Internet Explorer ja bereits gewidmet. Auch wenn ich dieses Stück Software niemals freiwillig benutzen würde und es so viel Aufmerksamkeit eigentlich nicht verdient, so muss ich doch ab und an damit arbeiten. Und heute hat mir der IE wieder zehn Minuten meiner kostbaren Zeit gestohlen. Ein Webserver, den ich testen wollte lief nicht auf dem Standardport. Also text.example.com:20000 in die Adressleiste des IE. Der Browser meint dazu "Die Seite kann nicht angezeigt werden - Fehler: Server oder DNS kann nicht gefunden werden". Um die Geschichte abzukürzen: im Netz stimmte natürlich alles, der Internet Explorer will jedoch ein Protokoll sobald ein Port angegeben wird. http://test.example.com:20000 funktionierte dann auch. Einen technischen Grund für dieses Verhalten gibt es nicht, denn ein Domainname kann sowieso keinen Doppelpunkt enthalten. Folgerichtig frisst der Firefox text.example.com:20000 auch problemlos. Vielleicht hat sich das inzwischen im IE7 gebessert, aber ich muss Microsoft trotzdem ein Kompliment für dieses tolle Verhalten des IE6 aussprechen. 
            </div>
        </content>
        <dc:subject>Internet Explorer</dc:subject>
<dc:subject>Rant</dc:subject>
<dc:subject>Windows</dc:subject>

    </entry>
    <entry>
        <link href="http://blog.planet-uwe.de/archives/77-SSL-Debugging.html" rel="alternate" title="SSL Debugging" />
        <author>
            <name>Uwe Weissenbacher</name>
            <email>uwe</email>        </author>
    
        <published>2006-12-06T22:09:14Z</published>
        <updated>2006-12-07T08:20:19Z</updated>
        <wfw:comment>http://blog.planet-uwe.de/wfwcomment.php?cid=77</wfw:comment>
    
        <slash:comments>4294967295</slash:comments>
        <wfw:commentRss>http://blog.planet-uwe.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    
    
        <id>http://blog.planet-uwe.de/archives/77-guid.html</id>
        <title type="html">SSL Debugging</title>
        <content type="xhtml" xml:base="http://blog.planet-uwe.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Heutzutage ist es sinnvoll und nur vernüftig TCP Verbindungen abzusichern. Dies geschieht bei HTTP (aber auch einigen anderen Protokollen) über <a href="http://blog.planet-uwe.de/exit.php?url_id=696&amp;entry_id=77" title="http://de.wikipedia.org/wiki/Secure_Sockets_Layer"  onmouseover="window.status='http://de.wikipedia.org/wiki/Secure_Sockets_Layer';return true;" onmouseout="window.status='';return true;">TLS/SSL</a>. Falls allerdings Probleme auftreten ist die Möglichkeit durch Mitsniffen Hinweise auf Fehler zu erhalten verbaut. Auch die beliebte Methode eine Serveranwendung mit telnet oder netcat zu testen ist nicht mehr ohne weiteres durchführbar. Die bekannteste SSL Implementation OpenSSL bietet allerdings ein Dienstprogramm, welches dies wieder ermöglicht. Zur besseren Übersicht sind die getippten Kommandos grün hinterlegt:<br />
<br />
<blockquote><br />
$ <span style="background-color:#7cb37c;">openssl s_client -host  www.gmx.de -port 443</span><br />
CONNECTED(00000003)<br />
depth=0 /C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=www.gmx.net<br />
verify error:num=20:unable to get local issuer certificate<br />
verify return:1<br />
depth=0 /C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=www.gmx.net<br />
verify error:num=27:certificate not trusted<br />
verify return:1<br />
depth=0 /C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=www.gmx.net<br />
verify error:num=21:unable to verify the first certificate<br />
verify return:1<br />
---<br />
Certificate chain<br />
 0 s:/C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=www.gmx.net<br />
   i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com<br />
---<br />
Server certificate<br />
-----BEGIN CERTIFICATE-----<br />
MIIDUzCCArygAwIBAgIQSrsfqH7F4QWACHs9HWpPkzANBgkqhkiG9w0BAQQFADCB<br />
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ<br />
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE<br />
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh<br />
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl<br />
cnZlckB0aGF3dGUuY29tMB4XDTA2MDIxMDA5NTUxNloXDTA3MDIxNzA4NTcwMVow<br />
WDELMAkGA1UEBhMCREUxDzANBgNVBAgTBkJheWVybjEPMA0GA1UEBxMGTXVuaWNo<br />
MREwDwYDVQQKEwhHTVggR21iSDEUMBIGA1UEAxMLd3d3LmdteC5uZXQwgZ8wDQYJ<br />
KoZIhvcNAQEBBQADgY0AMIGJAoGBALv4J7mPoIhpMzqWmGEJKIxLlkD/Y4bKhXGP<br />
EN11bdPPL1xcaCB95+r1lW4yvrC+NOQRre/Zt1vvXUtw+CKjzWL17xk5ORxejx5d<br />
WCaZ+AtjKL3j7PrZkErx7X7ZqNcRgmPn2bfPfYnYR3gjp7AJitslmb+5Cp2a7dfo<br />
pjYGOEnbAgMBAAGjgaYwgaMwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC<br />
MEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQ<br />
cmVtaXVtU2VydmVyQ0EuY3JsMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYW<br />
aHR0cDovL29jc3AudGhhd3RlLmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEB<br />
BAUAA4GBABrINqdDTKfUd7BTpZLl4i0zHzWCff851588VxUL8+3OUqIHgTzdvWmx<br />
9JeM8RoiCXfX84dt5y3pdeYi9FWJM5rBRxbijzw3f5zSyJloz7xSpV08F/Ii+svs<br />
MKUhTkNSbMwa9vnWIogK4prbUj0yHfCrdsZLmHI4zAliK0e8lHfF<br />
-----END CERTIFICATE-----<br />
subject=/C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=www.gmx.net<br />
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com<br />
---<br />
No client certificate CA names sent<br />
---<br />
SSL handshake has read 1419 bytes and written 322 bytes<br />
---<br />
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA<br />
Server public key is 1024 bit<br />
Compression: NONE<br />
Expansion: NONE<br />
SSL-Session:<br />
    Protocol  : TLSv1<br />
    Cipher    : DHE-RSA-AES256-SHA<br />
    Session-ID: 67DE63728E1EF1E860BFE2B8E54A65EA52DA8AFA8F5D3A202746A36D2BCC5558<br />
    Session-ID-ctx:<br />
    Master-Key: E6C37C6E7C56A8C95366C26102A41BE8233E079A4371AA20996EFF7DC539BDCE424F326A3F494F81C3CA03712D91F08E<br />
    Key-Arg   : None<br />
    Start Time: 1165442910<br />
    Timeout   : 300 (sec)<br />
    Verify return code: 21 (unable to verify the first certificate)<br />
---<br />
<span style="background-color:#7cb37c;">GET / HTTP/1.0<br />
HOST: www.gmx.de</span><br />
<br />
HTTP/1.1 302 Found<br />
Date: Wed, 06 Dec 2006 22:08:42 GMT<br />
Server: Apache<br />
Location: https://www.gmx.net/de/<br />
Vary: Accept-Encoding<br />
Content-Length: 207<br />
Connection: close<br />
Content-Type: text/html; charset=iso-8859-1<br />
<br />
&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;<br />
&lt;html&gt;&lt;head&gt;<br />
&lt;title&gt;302 Found&lt;/title&gt;<br />
&lt;/head&gt;&lt;body&gt;<br />
&lt;h1&gt;Found&lt;/h1&gt;<br />
&lt;p&gt;The document has moved &lt;a href="https://www.gmx.net/de/"&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
&lt;/body&gt;&lt;/html&gt;<br />
closed<br />
<br />
</blockquote> 
            </div>
        </content>
        <dc:subject>debugging</dc:subject>
<dc:subject>Linux</dc:subject>
<dc:subject>Security</dc:subject>
<dc:subject>Shell</dc:subject>

    </entry>

</feed>
