<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Raptors Blog</title>
	<atom:link href="http://blog.raptor2101.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.raptor2101.de</link>
	<description>Alles rund ums Programmieren, Administrieren und sonstigen Blödsinn ...</description>
	<lastBuildDate>Fri, 17 Feb 2012 21:35:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Squeezebox und Radius</title>
		<link>http://blog.raptor2101.de/2011/12/27/squeezebox-und-radius/</link>
		<comments>http://blog.raptor2101.de/2011/12/27/squeezebox-und-radius/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 23:04:24 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Clients]]></category>
		<category><![CDATA[802.1X]]></category>
		<category><![CDATA[EAP]]></category>
		<category><![CDATA[Radius]]></category>
		<category><![CDATA[Squeezebox]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1465</guid>
		<description><![CDATA[Betreibt man privat einen Radius-Server und will seine Squeezebox mittels EAP-TLS ins Netzwerk einbinden, wird man vom der geführten Konfiguration darauf hingewiesen, dass dieser Modus nicht unterstützt wird. Das ist gelinde gesagt Bullshit. Die Entwickler waren sich nur zu fein ein entsprechenden Konfigurationstool anzubieten. Bevor es losgeht, braucht man erst mal die entsprechenden Client-Certs. Leider [...]]]></description>
			<content:encoded><![CDATA[<p>Betreibt man privat einen Radius-Server und will seine Squeezebox mittels EAP-TLS ins Netzwerk einbinden, wird man vom der geführten Konfiguration darauf hingewiesen, dass dieser Modus nicht unterstützt wird. Das ist gelinde gesagt Bullshit. Die Entwickler waren sich nur zu fein ein entsprechenden Konfigurationstool anzubieten.</p>
<p>Bevor es losgeht, braucht man erst mal die entsprechenden Client-Certs. Leider unterstützt der wpa_supplicant nicht alle Formattypen, explizit müssen die Client-Certs im DER-Format sein. Beim Root-CA-Cert ist es egal.</p>
<p>Wer zb aus dem PEM Format ein DER machen will, kann das wie folgt machen</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl x509 <span style="color: #660033;">-in</span> newcert.pem <span style="color: #660033;">-inform</span> PEM <span style="color: #660033;">-out</span> newcert.der <span style="color: #660033;">-outform</span> DER<span style="color: #666666; font-style: italic;">#Konvertiert das Signierte ClientCert</span>
openssl rsa <span style="color: #660033;">-in</span> newkey.pem <span style="color: #660033;">-inform</span> PEM <span style="color: #660033;">-out</span> newkey.der <span style="color: #660033;">-outform</span> DER <span style="color: #666666; font-style: italic;">#Konvertiert den Client-Key</span></pre></div></div>

<p>Ist das erledigt muss man die Squeezebox erst mal mittels Kabel anschließen und per SSH auf die Box zugreifen. Am besten unter /etc/certs die erzeugten certs (inklusive root-ca) per scp ablegen.</p>
<p>Anschließend nimmt man sich die /etc/wpa_supplicant.conf vor und legt wie folgt ein Netzwerk an (oder modifiziert es):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">network</span>=<span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #007800;">ssid</span>=<span style="color: #ff0000;">&quot;SSID&quot;</span>
    <span style="color: #007800;">scan_ssid</span>=<span style="color: #000000;">1</span>
    <span style="color: #666666; font-style: italic;">#proto=RSN  #WPA2</span>
    <span style="color: #007800;">key_mgmt</span>=WPA-EAP
    <span style="color: #007800;">pairwise</span>=CCMP
    <span style="color: #007800;">group</span>=CCMP
    <span style="color: #007800;">eap</span>=TLS
    <span style="color: #007800;">identity</span>=<span style="color: #ff0000;">&quot;frei zu wählen&quot;</span>
    <span style="color: #007800;">ca_cert</span>=<span style="color: #ff0000;">&quot;/etc/cert/root.ca.pem&quot;</span>
    <span style="color: #007800;">client_cert</span>=<span style="color: #ff0000;">&quot;/etc/cert/client-cert.der&quot;</span>
    <span style="color: #007800;">private_key</span>=<span style="color: #ff0000;">&quot;/etc/cert/client-key.der&quot;</span>
    <span style="color: #007800;">private_key_passwd</span>=<span style="color: #ff0000;">&quot;password&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Das ist aber nur die halbe Miete, leider muss man die Netzwerkfähig auch noch manuell vornehmen. Die GUI ist nicht nicht der Lage von einem Halb-Vorkonfigurierten WLAN eine DHCP Request zu machen.</p>
<p>Also noch schnell in die /etc/network/interfaces und das Netzwerk hinterlegt/angepasst</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">auto lo
iface lo inet loopback
&nbsp;
mapping eth1
        script <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>if_mapping
&nbsp;
iface eth0 inet dhcp
        script <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>udhcpc_action
auto <span style="color: #007800;">eth1</span>=SSID
iface SSID inet dhcp
        script <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>udhcpc_action</pre></div></div>

<p>Nach einem Neustart der Box sollte sich das Gerät ordnungsgemäß am Radius-Server anmelden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/12/27/squeezebox-und-radius/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDMI Output und Ruckler in HD</title>
		<link>http://blog.raptor2101.de/2011/12/16/hdmi-output-und-ruckler-in-hd/</link>
		<comments>http://blog.raptor2101.de/2011/12/16/hdmi-output-und-ruckler-in-hd/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 08:13:24 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[XBMC]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[HDMI]]></category>
		<category><![CDATA[ION]]></category>
		<category><![CDATA[Microstutter]]></category>
		<category><![CDATA[Mikroruckler]]></category>
		<category><![CDATA[Ruckler]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1462</guid>
		<description><![CDATA[So nun hoffentlich der finale Artikel zum Thema Ruckler während des HD Playbacks. Nachdem ich mir sogar ein neues Board (AMD FUsion zum Test) geholt hatte , musste ich leider feststellen, dass das Thema alles andere als einfach zu Debuggen ist. Nach nunmehr mehreren Monaten des Suchens hab ich den letzten Verursacher von Bildrucklern gefunden. [...]]]></description>
			<content:encoded><![CDATA[<p>So nun hoffentlich der finale Artikel zum Thema Ruckler während des HD Playbacks. Nachdem ich mir sogar ein neues Board (AMD FUsion zum Test) geholt hatte , musste ich leider feststellen, dass das Thema alles andere als einfach zu Debuggen ist.</p>
<p>Nach nunmehr mehreren Monaten des Suchens hab ich den letzten Verursacher von Bildrucklern gefunden. Am ende liefen nicht mal H264 Videos im Baseline-Profile ordentlich Ruckelfrei. Da hab ich in meiner Verzweifelung (und Hoffnung) mal das HDMI Kabel getauscht. Zum Glück hatte ich kein Ersatz und fand den Input-Converter DVI-HDMI meines TVs nicht. Folglich musste ich auf das &#8220;gute alte&#8221; VGA-Kabel ausweichen. Sowohl Board als auch TV hatten den Anschluss noch. Und siehe da, ruckelfreies H264 in allen Lebenslagen! Kein störendes Bildstottern oder Fragmente. Alles so wie es sein soll.</p>
<p>Da ich nicht glauben wollte, dass das Kabel defekt war oder gar ein genereles Problem mit HDMI vorliegt, hab ich mich mal auf die Suche nach &#8220;Bildverbesserern&#8221; auf Seitens des TVs gemacht. Ich wurde fündig. Ein bisschen vergraben wendet mein TV allerhand Algorithmen auf das Eingangssignal an. Allerdings nur auf das HDMI Signal. Standardmäßig waren die Einstellung wohl zu viel für die kleine CPU des TVs. So dass es statt zu Verbesserungen zu Fragmenten und Stottern kam. Sehr brauchbar.</p>
<p>Fazit: Wer ein modernes Display mit HDMI Input betreibt, kann nicht davon ausgehen, dass sein Eingangssignal auch ohne Veränderung ausgegeben wird. Kommt es zu Rucklern, Fragmenten oder anderen sporadischen Bildfehlern, einfach mal nachschauen ob nicht irgendwo ein Bilderverbesserer wie &#8220;Rauschunterdrückung&#8221;,&#8221;Bewegungsglättung&#8221; oder gar &#8220;Upscaler&#8221; sein Unwesen treibt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/12/16/hdmi-output-und-ruckler-in-hd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NVidia &#8211; HD-Video &#8211; MicroRuckler</title>
		<link>http://blog.raptor2101.de/2011/12/07/nvidia-hd-video-microruckler/</link>
		<comments>http://blog.raptor2101.de/2011/12/07/nvidia-hd-video-microruckler/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 21:20:41 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[XBMC]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[720p]]></category>
		<category><![CDATA[FullHd]]></category>
		<category><![CDATA[ION]]></category>
		<category><![CDATA[Microstutter]]></category>
		<category><![CDATA[Mikroruckler]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[ruckeln]]></category>
		<category><![CDATA[stuttering]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1452</guid>
		<description><![CDATA[Nach meinen ersten Maßnahmen gegen MicroRuckler hat es ein wenig gedauert bis ich den letzten Verursacher gefunden hatte. Das Problem war, dass die Ruckler nur sporadisch ab und zu auftraten. Mal 30 Minuten lang gar nicht, dann wieder im 5 Minuten Takt. Als Verursacher hat sich das PerformanceManagement der NVidia-Karte herausgestellt. Die Taktet die Karte [...]]]></description>
			<content:encoded><![CDATA[<p>Nach meinen ersten <a title="XBMC - FullHD - Micro-Ruckler" href="http://blog.raptor2101.de/2011/11/18/xbmc-fullhd-micro-ruckler/" target="_blank">Maßnahmen gegen MicroRuckler</a> hat es ein wenig gedauert bis ich den letzten Verursacher gefunden hatte. Das Problem war, dass die Ruckler nur sporadisch ab und zu auftraten. Mal 30 Minuten lang gar nicht, dann wieder im 5 Minuten Takt.</p>
<p>Als Verursacher hat sich das PerformanceManagement der NVidia-Karte herausgestellt. Die Taktet die Karte runter, sobald wenig Leistung gebraucht wird. Scheinbar dauert das Justieren zu lange, so dass es zu FrameDrops kommen kann.</p>
<p>Zur Behebung hab ich folgendes in die &#8216;/etc/X11/xorg.conf&#8217; eingepflegt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Section <span style="color: #ff0000;">&quot;Device&quot;</span>
    Identifier     <span style="color: #ff0000;">&quot;Device0&quot;</span>
    Driver         <span style="color: #ff0000;">&quot;nvidia&quot;</span>
    VendorName     <span style="color: #ff0000;">&quot;NVIDIA Corporation&quot;</span>
    Option              <span style="color: #ff0000;">&quot;NoLogo&quot;</span>        <span style="color: #ff0000;">&quot;True&quot;</span>
    Option         <span style="color: #ff0000;">&quot;NvAGP&quot;</span> <span style="color: #ff0000;">&quot;1&quot;</span>
    Option      <span style="color: #ff0000;">&quot;RenderAccel&quot;</span>  <span style="color: #ff0000;">&quot;true&quot;</span>
    Option         <span style="color: #ff0000;">&quot;TripleBuffer&quot;</span> <span style="color: #ff0000;">&quot;True&quot;</span>
    Option         <span style="color: #ff0000;">&quot;RegistryDwords&quot;</span> <span style="color: #ff0000;">&quot;PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x1; PowerMizerDefaultAC=0x1&quot;</span>
EndSection</pre></div></div>

<p>Die Vorletzte Zeile aktiviert den TripleBuffer, so werden 3 statt zwei Bilder vorgehalten. In 2D Anwendungen (Videodarstellung) ist der Performanceverlust und Speicherverbrauch verkraftbar gegenüber der ruckelfreiem Abspielen.</p>
<p>Der letzte Befehl erzwingt vom NVidia-Treiber, dass die Grafikkarte immer mit maximaler Leistung arbeitet.</p>
<p>Sollte es immer noch zu leichten Ruckler kommen, kann man den Treiber nochmals mittels nvidia-settings dazu zwingen, endlich in den PerformanceMode zu gehen&#8230;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nvidia-settings <span style="color: #660033;">-a</span> <span style="color: #ff0000;">'[gpu:0]/GPUPowerMizerMode=1'</span></pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/12/07/nvidia-hd-video-microruckler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Samba/CIFS und Kerberos Authentifizierung</title>
		<link>http://blog.raptor2101.de/2011/12/03/cifs-kerberos-authentifizierung/</link>
		<comments>http://blog.raptor2101.de/2011/12/03/cifs-kerberos-authentifizierung/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 00:00:12 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1446</guid>
		<description><![CDATA[Nachdem ich NFS und Kerberos installiert hatte, wollte ich auch Samba/CIFS an Kerberos anbinden. Das gestaltete sich schwerer als erwartet. Das Einrichten auf Serverseite gestaltete relativ reibungslos. Einfach dem Samba-Dienst entsprechend Konfigurieren. security = ADS realm = AQUA kerberos method = system keytab encrypt passwords = true Im Kerberos hinterlegt man einen entsprechenden Principal und [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich NFS und Kerberos installiert hatte, wollte ich auch Samba/CIFS an Kerberos anbinden. Das gestaltete sich schwerer als erwartet.</p>
<p>Das Einrichten auf Serverseite gestaltete relativ reibungslos. Einfach dem Samba-Dienst entsprechend Konfigurieren.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">security = ADS
realm = AQUA
kerberos method = system keytab
encrypt passwords = <span style="color: #c20cb9; font-weight: bold;">true</span></pre></div></div>

<p>Im Kerberos hinterlegt man einen entsprechenden Principal und fügt ihn dem CIFS-Server hinzu.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> kadmin <span style="color: #660033;">-p</span> kerberosadmin<span style="color: #000000; font-weight: bold;">/</span>admin
addprinc <span style="color: #660033;">-randkey</span> cifs<span style="color: #000000; font-weight: bold;">/</span>server.fqdn
ktadd cifs<span style="color: #000000; font-weight: bold;">/</span>server.fqdn</pre></div></div>

<p>Nach einem Neustart des Dienstes werden die User-Credentials von Samba gegenüber Kerberos Authentiziert.</p>
<p>Auf Client-Seite war dem ganzen nicht so leicht bei zu kommen. Als erstes muss ein Client-Key am Kerberos erzeugt werden und in der Client Keytab hinterlegt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> kadmin <span style="color: #660033;">-p</span> kerberosadmin<span style="color: #000000; font-weight: bold;">/</span>admin
addprinc <span style="color: #660033;">-randkey</span> cifs<span style="color: #000000; font-weight: bold;">/</span>client.fqdn
ktadd cifs<span style="color: #000000; font-weight: bold;">/</span>client.fqdn</pre></div></div>

<p>Anschließend mounted man den Share wie folgt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> cifs <span style="color: #000000; font-weight: bold;">//</span>server.fqnd<span style="color: #000000; font-weight: bold;">/</span>Share <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cifs-share <span style="color: #660033;">-o</span> <span style="color: #007800;">sec</span>=krb5,<span style="color: #007800;">uid</span>=<span style="color: #000000;">1001</span></pre></div></div>

<p>Bis dahin hat mich das &#8220;nur wenige&#8221; Stunden gekostet. Der Parameter &#8220;uid&#8221; wird scheinbar gebraucht wenn Winbind nicht so will, wie es soll. Ich hab es ums verrecken nicht hinbekommen, dass der Winbind mehr schmeißt als nur Fehler.</p>
<p>Daneben war es mit nicht möglich den krb5i-Modus zu aktivieren, also Schutz gegen Veränderung der einzelnen Daten-Pakete. Zudem scheint CIFS/Samba nur beim Mount die Usercredentials zu überprüfen und die Verbindung dann an den User zu knüpfen. Wenn ein anderer User (root) auf den Share zugrifft, erfolgt das unter der UID des Users der den Mount aufgemacht hat.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/12/03/cifs-kerberos-authentifizierung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kerberos und NFS einrichten.</title>
		<link>http://blog.raptor2101.de/2011/11/28/kerberos-und-nfs-einrichten/</link>
		<comments>http://blog.raptor2101.de/2011/11/28/kerberos-und-nfs-einrichten/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 22:37:06 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[NFS]]></category>
		<category><![CDATA[NVSv4]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1441</guid>
		<description><![CDATA[Ich kämpfe schon eine weile mit CIFS/Samba her rum. Bisher hab ich es leider nicht geschafft die Transferraten über mehr als 40MByte/s zu bekommen. Was bei Gigabit-Ethernet unbefriedigend ist. Vor einem Wechsel auf NFS habe ich mich aber immer gedrückt. Zum Einen weil dann immer die &#8220;Böse&#8221; LDAP-Konfiguration im Raum stand, zum Anderen, weil ich [...]]]></description>
			<content:encoded><![CDATA[<p>Ich kämpfe schon eine weile mit CIFS/Samba her rum. Bisher hab ich es leider nicht geschafft die Transferraten über mehr als 40MByte/s zu bekommen. Was bei Gigabit-Ethernet unbefriedigend ist. Vor einem Wechsel auf NFS habe ich mich aber immer gedrückt. Zum Einen weil dann immer die &#8220;Böse&#8221; LDAP-Konfiguration im Raum stand, zum Anderen, weil ich der Meinung war Kerberos nicht zu brauchen.</p>
<p>Nun hat sich in den letzten Tagen herausgestellt, dass ich ein paar mehr Dienste brauche, die alle eine eigenen Authentisierung mit sich bringen. Darauf hatte ich keine Lust, ergo Kerberos musste her. Zweitens hat sich gezeigt, dass man LDAP nicht braucht. Das Maping von Usernamen/Groups funktioniert auch so Prima.</p>
<p>Es gibt ein gutes Tutorial, mit dem man innerhalb von einer Stunde einen NFS-Share mit Kerberos Unterstützung einrichten kann: <a title="NFSv4Howto" href="https://help.ubuntu.com/community/NFSv4Howto" target="_blank">NFSv4-Howto</a></p>
<p>Das Tutorial hat nur zwei Schönheitsfehler:</p>
<ul>
<li>Der wichtigste Hinweis wird nicht hervorgehoben. Wer es ums verrecken nicht hinbekommt, dass sich NFS über Kerberos Authentifiziert sollte  seine /etc/krb.conf checken. Dort muss unter [libdefaults] der Eintrag &#8220;allow_weak_crypto = true&#8221; gemacht werden.</li>
<li>
<p>Die Angaben für die /etc/exports Datei sind veraltet. Es wird noch die &#8220;gss/krb5&#8243; verwendet. Aussehen sollten die exports aber so.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">export</span>       10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">sec</span>=krb5,rw,<span style="color: #007800;">fsid</span>=<span style="color: #000000;">0</span>, secure, no_subtree_check,async,no_all_squash<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">/</span>export<span style="color: #000000; font-weight: bold;">/</span>Share1 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">sec</span>=krb5:krb5i:krb5p,rw,<span style="color: #007800;">fsid</span>=<span style="color: #000000;">0</span>, secure, no_subtree_check,async,no_all_squash<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>So kann man auch gleich dem Benutzer überlassen welche &#8220;Absicherung&#8221; er gerade benötigt.</p>
</li>
</ul>
<p>Des bin ich beim Einrichten des NFS-Shares noch über eine Stolperstein gefallen:</p>
<p>Aus irgendeinem Grund war der NFS-Server im all_squash Modus. Soll heißen alle User wurden auf &#8220;Nobody/Nogroup&#8221; gemapt. Was zur folge hatte, dass ich zwar den Share mounten konnte aber keine Berechtigung hatte. Mit der Option &#8220;no_all_sqash&#8221; war das behoben.</p>
<p>Anschließend hab ich mal Bonnie++ auf den Share los rennen lassen. Das Ergebnis waren 95.1MByte/s Read/Write. Kein Vergleich zu CIFS. Einzig wenn ich die höchste Sicherheitsstufe (krb5p &#8211; Transportverschlüsselung) ging die Performance in Knie (20 MByte/s).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/11/28/kerberos-und-nfs-einrichten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XBMC &#8211; FullHD &#8211; Micro-Ruckler</title>
		<link>http://blog.raptor2101.de/2011/11/18/xbmc-fullhd-micro-ruckler/</link>
		<comments>http://blog.raptor2101.de/2011/11/18/xbmc-fullhd-micro-ruckler/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 12:53:32 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[XBMC]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[720p]]></category>
		<category><![CDATA[FullHd]]></category>
		<category><![CDATA[Microstutter]]></category>
		<category><![CDATA[Mikroruckler]]></category>
		<category><![CDATA[ruckeln]]></category>
		<category><![CDATA[stuttering]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1422</guid>
		<description><![CDATA[Wenn man durch die Foren schaut, stolpert man immer mal wieder über das Problem, dass einige Nutzer Micro-Ruckler bekommen wenn sie 720p oder 1080p Quellen abspielen. Ich gehörte auch zu dieser Problemgruppe und will hier kurz beschreiben wie man das Problem angehen kann. Als erstes muss man die Mikro-Ruckler erst mal eindeutig einer &#8220;Quelle&#8221; zuordnen. [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man durch die Foren schaut, stolpert man immer mal wieder über das Problem, dass einige Nutzer Micro-Ruckler bekommen wenn sie 720p oder 1080p Quellen abspielen. Ich gehörte auch zu dieser Problemgruppe und will hier kurz beschreiben wie man das Problem angehen kann.</p>
<p>Als erstes muss man die Mikro-Ruckler erst mal eindeutig einer &#8220;Quelle&#8221; zuordnen. Es gibt sehr viele Möglichkeiten, wie Mikro-Ruckler zu Stande kommen können:</p>
<ul>
<li>Kodierfehler &#8211; die Ruckler z.B. tretet nur bei einem Film auf.</li>
<li>Frame-Drops &#8211; Das passiert wenn ein Bildwiederholfrequenz der Quelle höher ist als die Abspielfrequenz.</li>
<li>Falsche Timings bei der Ansteuerung des Bildschirms.</li>
<li>&#8220;andere Störenfriede&#8221;&#8230;</li>
</ul>
<p>In meinem Fall konnte ich Kodierfehler ausschließen. Alle Filme wiesen sporadisches extrem kurzes Ruckeln auf. Einige Leute haben es nicht mal war genommen, mich hat es hingegen schon genervt (besonders wenn man weiß auf was man achten muss).</p>
<p>Um der Fehlerquelle einzugrenzen hab ich mir einige Naturaufnahmen mit langen ruhigen Schwenks in FullHD ausgesucht, dazu noch Batman &#8211; The Dark Knight wegen den starken Hell-Dunkel Kontrasten.</p>
<p>Als erstes hab ich die Timings wie in diesem Beitrag beschrieben korrigiert: <a title="Fixing the 24p issue" href="http://www.xbmcfreak.nl/en/english-xbmc-and-fixing-the-24p-issue/">Fixing the 24p issue</a>.</p>
<p>Das hat die Ruckler zwar reduziert, aber sie waren immer noch vorhanden, das hat mich jedoch auf eine zweite Fährte gelockt. In dem Beitrag wird beschrieben wie man die Timings korrigiert und XBMC auf die Wiederholfrequenz der Quelle anpasst (Option). Durch test wurde mit ziemlich schnell klar, dass in meinen Fall nicht die Wiederholfrequenz das Problem darstellten, sondern die Timings. Eine Änderung von 60Hz auf 50Hz oder gar 24Hz hatte faktisch keinen Einfluss. Was jedoch auffällig war: sobald ich VSync abgeschaltet hatte, waren die Ruckler weg, aber die Bildfehler beim abspielen einer Testsequenz enorm. VSync musste also aktiviert bleiben. Ein kurze Suche im Internet hat mich auf die Composite-Extension aufmerksam gemacht.</p>
<p>Ich hab die automatische Anpassung abgeschaltet und in der xorg.conf nur einen Bild-Modus hinterlegt. Zusätzlich habe ich die Composite-Extension abgeschaltet.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Section <span style="color: #ff0000;">&quot;Extensions&quot;</span>
 Option <span style="color: #ff0000;">&quot;Composite&quot;</span> <span style="color: #ff0000;">&quot;disable&quot;</span>
EndSection</pre></div></div>

<p>Nach einem Neustart kommt es nun zu keinen Mikrorucklern mehr.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/11/18/xbmc-fullhd-micro-ruckler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BIRD manuel auf DD-WRT einrichten</title>
		<link>http://blog.raptor2101.de/2011/11/01/bird-manuel-einrichten-dd-wrt/</link>
		<comments>http://blog.raptor2101.de/2011/11/01/bird-manuel-einrichten-dd-wrt/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:36:46 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[automatisch starten]]></category>
		<category><![CDATA[BIRD]]></category>
		<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[einrichten]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1417</guid>
		<description><![CDATA[Wenn man die Buffalo DD-WRT Version einsetzt und Routing (RIP, OSPF, BGP) aktiviert und sich danach nichts tut, sollte man mal mittels SSH Kontrollieren ob überhaupt ein Routing-Dienst läuft. Dazu muss man erst mal raus finden welcher dienst überhaupt laufen sollte. Das geht ganz einfach. In der Konsole versuchen &#8220;zebrad&#8221; oder &#8220;bird&#8221; aufrufen. Schlägt letzterer [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man die Buffalo DD-WRT Version einsetzt und Routing (RIP, OSPF, BGP) aktiviert und sich danach nichts tut, sollte man mal mittels SSH Kontrollieren ob überhaupt ein Routing-Dienst läuft. Dazu muss man erst mal raus finden welcher dienst überhaupt laufen sollte. Das geht ganz einfach. In der Konsole versuchen &#8220;zebrad&#8221; oder &#8220;bird&#8221; aufrufen. Schlägt letzterer an muss man wie folgt vorgehen um den BIRD &#8220;manuell&#8221; einzurichten.</p>
<p>Als erstet den Router-Modus zurückstellen auf &#8220;Gateway&#8221;, nicht das einem die Einstellungen aus der WebGUI in die Suppe spucken. Anschließend erstellt man das Verzeichnis /tmp/bird und die Datei /tmp/bird/bird.conf. Diese Datei gestaltet man nach seinen Wünschen und startet dann den BIRD.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>bird
<span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>bird<span style="color: #000000; font-weight: bold;">/</span>bird.conf
bird</pre></div></div>

<p>Eine Beispiel-Config findet man hier: <a title="Blogeintrag: Routing unter Ubuntu" href="http://blog.raptor2101.de/2011/10/31/ubuntu-routing/" target="_blank">Routing unter Ubuntu</a></p>
<p>Um das ganze zu automatisieren, muss die Config-Datei im NVRam hinterlegen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nvram <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #007800;">zebra_conf</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(cat /tmp/bird/bird.conf)</span>&quot;</span>
nvram commit</pre></div></div>

<p>Beim Systemstart muss mittels des Startup-Skriptes das Verzeichnis und die Config-Datei angelegt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>bird
nvram get zebra_conf <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>bird<span style="color: #000000; font-weight: bold;">/</span>bird.conf</pre></div></div>

<p>Den BIRD nicht beim Systemstart starten. Leider schießt die ServiceKontrolle/ProcessMonitor den BIRD automatisch ab wenn er da ist und ein Interface hochfährt (oder sich allgemein was ändert). Da die Speichervariablen (die ich noch nicht ermitteln konnte) keinen BIRD-Start vorsehen, wird er leider nicht nach gestartet.<br />
Der richtige &#8220;Ort&#8221; zum startet den BIRD ist daher das Firewall-Scriptes. Das wird immer ausgeführt, sobald sich an den Interfaces was ändern und ganz wichtig, es ist das letzte Skript.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-ne</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">pidof</span> bird<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
bird
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>Das IF-Statement verhindert nur, dass der BIRD nochmal gestartet wird, wenn er schon existiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/11/01/bird-manuel-einrichten-dd-wrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto-Reconnect für DD-WRT</title>
		<link>http://blog.raptor2101.de/2011/11/01/auto-reconnect-ddwrt/</link>
		<comments>http://blog.raptor2101.de/2011/11/01/auto-reconnect-ddwrt/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 14:58:07 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[automatischer reconnect]]></category>
		<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[pppd]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1411</guid>
		<description><![CDATA[Aus irgendeinem, mir noch nicht ganz nachvollziehbaren Grund, erkennt der pppd manchmal nicht, dass das ppp-Interface down ist und keine Verbindung mehr besteht. Um das zu beheben muss man normalerweise das WebInterface aufrufen und &#8220;reconnect&#8221; drücken. Das kann man auch automatisieren. Als erstes erstellt man eine Datei unter /tmp/connection_tracker.sh #!/bin/sh &#160; if &#91; $&#40;ping -c [...]]]></description>
			<content:encoded><![CDATA[<p>Aus irgendeinem, mir noch nicht ganz nachvollziehbaren Grund, erkennt der pppd manchmal nicht, dass das ppp-Interface down ist und keine Verbindung mehr besteht. Um das zu beheben muss man normalerweise das WebInterface aufrufen und &#8220;reconnect&#8221; drücken. Das kann man auch automatisieren.</p>
<p>Als erstes erstellt man eine Datei unter /tmp/connection_tracker.sh</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ping</span> <span style="color: #660033;">-c</span> <span style="color: #000000;">1</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span>nvram get wan_ipaddr<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-c</span> from<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #660033;">-lt</span> <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span> 
  logger <span style="color: #660033;">-t</span> connectiontracker <span style="color: #000000; font-weight: bold;">`</span>nvram get wan_ipaddr<span style="color: #000000; font-weight: bold;">`</span> unreachable
  <span style="color: #c20cb9; font-weight: bold;">killall</span> redial; 
  <span style="color: #c20cb9; font-weight: bold;">killall</span> pppd; 
  <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">5</span> 
  pppd <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>ppp<span style="color: #000000; font-weight: bold;">/</span>options.pppoe <span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null; 
  logger <span style="color: #660033;">-t</span> connectiontracker reconnect wan <span style="color: #000000; font-weight: bold;">`</span>nvram get wan_ipaddr<span style="color: #000000; font-weight: bold;">`</span> successfully 
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>Was macht das Script? Es versucht die IP des WAN-Interfaces zu pingen. Ist das Down gibt es keinen Treffer. &#8220;grep&#8221; wertet die Rückgabe des ping Befehls aus und zählt die Zeilen. Gibt es weniger als einen Treffer (also Null) wird der redial und pppd gestoppt und neu gestartet.</p>
<p>Anschließend fügt man eine NVRAM-Variable hinzu. Gibt es die Variable wird sie überschieben, Ansonsten wird sie angelegt.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nvram <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #007800;">rc_custom</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(cat /tmp/connection_tracker.sh)</span>&quot;</span>
nvram commit</pre></div></div>

<p>Über den Startup-Script/Command muss diese Datei nun immer angelegt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nvram get rc_custom<span style="color: #000000; font-weight: bold;">&gt;/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>connection_tracker.sh</pre></div></div>

<p>Über einen zusätzlichen Cron-Job die Überprüfung alle 15-Minuten durchführen.</p>

<div class="wp_syntax"><div class="code"><pre class="cron" style="font-family:monospace;">*/15 * * * * root /tmp/connection_tracker.sh</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/11/01/auto-reconnect-ddwrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Routing unter Ubuntu</title>
		<link>http://blog.raptor2101.de/2011/10/31/ubuntu-routing/</link>
		<comments>http://blog.raptor2101.de/2011/10/31/ubuntu-routing/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 22:13:14 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[BIRD]]></category>
		<category><![CDATA[IP Routing]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[Quagga]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Zebra]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1388</guid>
		<description><![CDATA[Einen Text mit viel &#8220;Bla-Bla&#8221; hatte ich heute schon, jetzt gibt es Technisches! Will man unter Ubuntu einen &#8220;echten&#8221; Router betreiben, also dynamisch auf die Netzwerkumgebung reagieren, stehen zwei Routing-Suites zur Verfügung: BIRD und Quagga. Beide unterstützen die wichtigsten Routing-Protokolle: BGP, RIP, OSPF Wichtiger Hinweis vorweg: in Ubuntu 10.04 wird BIRD noch in Version 1.1.5 [...]]]></description>
			<content:encoded><![CDATA[<p>Einen Text mit viel &#8220;Bla-Bla&#8221; hatte ich heute schon, jetzt gibt es Technisches!</p>
<p>Will man unter Ubuntu einen &#8220;echten&#8221; Router betreiben, also dynamisch auf die Netzwerkumgebung reagieren, stehen zwei Routing-Suites zur Verfügung: BIRD und Quagga. Beide unterstützen die wichtigsten Routing-Protokolle: <a title="Wiki:BGP" href="http://de.wikipedia.org/wiki/Border_Gateway_Protocol" target="_blank">BGP</a>, <a title="Wiki: RIP" href="http://de.wikipedia.org/wiki/Routing_Information_Protocol" target="_blank">RIP</a>, <a title="Wiki: OSPF" href="http://de.wikipedia.org/wiki/OSPF" target="_blank">OSPF</a></p>
<div class="warning-box"><span style="color: #ff0000;">Wichtiger Hinweis vorweg:</span> in Ubuntu 10.04 wird BIRD noch in Version 1.1.5 ausgeliefert. Die ist mal gut zwei Jahre alt und Unterstützt noch nicht alle Funktionen. Entweder akzeptiert man diese Schwächen oder nutzt das <a title="CZ.NIC Labs" href="https://launchpad.net/~cz.nic-labs/+archive/bird" target="_blank">PPA des CZ.NIC Labs</a>.</div>
<p>Die Quagga-Suite ist schon seit einiger Zeit am Markt. Sie bietet ein Config-Interface das einem CISCO Router gleicht. Man kann sowohl Config Files hinterlegen als auch &#8220;on the fly&#8221; Config Befehle geben und die entsprechende Config dann raus schreiben (ganz wie bei CISCO Routern). Im Hintergrund werden bei Quagga für jedes Routing-Prokoll ein eigener Dienst gestartet und jeder dieser Dienste macht einen TELNET Port auf. Diesen kann man auf den Localhost beschränken oder so konfigurieren, dass er jede Anfrage ablehnt (kein Password angeben).</p>
<p>Bird befindet sich aktuell noch in der (Weiter-)Entwicklung. Zudem wirkt es auf mich schlanker. Es wird nur ein Dienst gestartet, die Config befindet sich in einer Datei und wirkt übersichtlicher. Neben diesen &#8220;Geschmacksfragen&#8221; soll BIRD leistungsschonender sein.<sup class='footnote'><a href='#fn-1388-1' id='fnref-1388-1'>1</a></sup> Laut Wiki kommt er vor allem deswegen in den großen &#8220;Verteilerknoten&#8221; zum Einsatz. <sup class='footnote'><a href='#fn-1388-2' id='fnref-1388-2'>2</a></sup> Dafür spricht auf jeden Fall, dass bei DD-WRT Firmwares für wenig Speicher der BIRD zum Einsatz kommt und bei viel Speicher die Quagga-Suite.</p>
<p>Ich habe beide Implementierungen gezwungenermaßen durch meine Routern im Einsatz. Beim Ubuntu-Router hatte ich die Wahl und mich nach einem kleinen Quagga Test für BIRD entschieden.</p>
<p>Wichtig: Die meisten Routing-Protokolle nutzten MultiCast-Addressen für ihre Kommunikation. Damit das funktioniert muss man eine entsprechende Route hinterlegen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">route add <span style="color: #660033;">-net</span> 224.0.0.0 netmask 240.0.0.0 dev eth0</pre></div></div>

<h3>Beispiel &#8211; Konfiguration BIRD</h3>
<p>Einfach über apt-get oder aptitude bird installieren und schon kann es losgehen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> bird</pre></div></div>

<p>Danach kann man die /etc/bird.conf bearbeiten.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">log syslog all;
router <span style="color: #c20cb9; font-weight: bold;">id</span> 10.1.0.1;
&nbsp;
protocol kernel <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">export</span> all;
        learn;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
protocol device <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        scan <span style="color: #000000; font-weight: bold;">time</span> <span style="color: #000000;">60</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
protocol ospf <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        debug <span style="color: #7a0874; font-weight: bold;">&#123;</span> states, routes, interfaces <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
        area <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
                interface <span style="color: #ff0000;">&quot;eth0&quot;</span> 10.1.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
                        cost <span style="color: #000000;">10</span>;
                        stub;
                        check <span style="color: #c20cb9; font-weight: bold;">link</span>;
                <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
                interface <span style="color: #ff0000;">&quot;eth1&quot;</span> 10.2.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
                        priority <span style="color: #000000;">10</span>;
                        cost <span style="color: #000000;">100</span>;
                        <span style="color: #7a0874; font-weight: bold;">type</span> broadcast;
                        hello <span style="color: #000000;">30</span>; retransmit <span style="color: #000000;">5</span>; <span style="color: #7a0874; font-weight: bold;">wait</span> <span style="color: #000000;">10</span>; dead <span style="color: #000000;">120</span>;
                        authentication none;
                        check <span style="color: #c20cb9; font-weight: bold;">link</span>;
                <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
                interface <span style="color: #ff0000;">&quot;eth2&quot;</span> 10.3.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
                        priority <span style="color: #000000;">10</span>;
                        cost <span style="color: #000000;">10</span>;
                        <span style="color: #7a0874; font-weight: bold;">type</span> broadcast;
                        hello <span style="color: #000000;">30</span>; retransmit <span style="color: #000000;">5</span>; <span style="color: #7a0874; font-weight: bold;">wait</span> <span style="color: #000000;">10</span>; dead <span style="color: #000000;">120</span>;
                        authentication none;
                        check <span style="color: #c20cb9; font-weight: bold;">link</span>;
                <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Die Config dürfte selbsterklärend sein. Ein paar Hinweise zum Umgang mit BIRD:</p>
<ul>
<li>Das Kernel-Protokoll wird gebraucht. Ohne die &#8220;export all;&#8221; Regel werden keine Routen an das OS bekanntgegeben.</li>
<li>Hat man Default-Routen oder pflegt händisch welche über den &#8220;route&#8221;-Befehl nach, sollte die über das &#8220;learn&#8221;-Statement von BIRD ermittelt werden.</li>
<li>Alle lokalen Netze, die den Nachbarn mitgeteilt werden sollen, benötigen ein interface-Statement. Das stub-Statement markiert Interfaces die nur &#8220;announced&#8221; werden sollen aber sonst keine Funktion haben.</li>
<li>Wenn man einen PPPoE-DSL-Uplink als Default-Route verwendet, sollte man das PPPoE Interface nicht als Area-Interface hinterlegen.</li>
<li>&#8220;check link&#8221; funktioniert nur, wenn man neuerere BIRD-Versionen benutzt. BIRD 1.1.5 meckert einen Syntax-Fehler an.</li>
</ul>
<h3> Beispiel &#8211; Konfiguration Quagga</h3>
<p>Installation:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> quagga</pre></div></div>

<p>Quagga ist anfangs etwas komplizierter. Anfangs muss man erst mal die benötigten Dienste unter /etc/quagga/daemons freischalten. Will man, dass diese Dienste per TelNet auch Remote konfigurierbar sind muss man noch in der /etc/quagga/debian.conf Anpassungen vornehmen.</p>
<p>Auf jeden Fall benötigt man den zebra-Dienst. Dieser ist das &#8220;protocol kernel&#8221; Pendant. Zusätzlich muss man noch den Dienst für das gewünschte Protokoll aktivieren. Für den einfachen Einstieg findet man Beispiel-Konfigurationen unter /usr/share/doc/quagga/examples.</p>
<p>zebra.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">hostname</span> deadend-router
&nbsp;
interface br0
  link-detect
interface ath1
   link-detect</pre></div></div>

<p>in der zerba.conf werden die zu nutzenden interfaces angegeben.</p>
<p>ospf.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">interface br0
  ip ospf cost <span style="color: #000000;">10</span>
  ip ospf dead-interval <span style="color: #000000;">120</span>
  ip ospf hello-interval <span style="color: #000000;">30</span>
  ip ospf retransmit-interval <span style="color: #000000;">5</span>
  ip ospf network broadcast
interface eth0
  ip ospf cost <span style="color: #000000;">10</span>
  ip ospf dead-interval <span style="color: #000000;">120</span>
  ip ospf hello-interval <span style="color: #000000;">30</span>
  ip ospf retransmit-interval <span style="color: #000000;">5</span>
  ip ospf network broadcast
&nbsp;
router ospf
  ospf router-id 10.3.0.10
  network 10.3.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> area <span style="color: #000000;">0</span>
  network 10.4.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> area <span style="color: #000000;">0</span>
    redistribute kernel
    redistribute connected</pre></div></div>

<p>In der ospf.conf wird diesen Interfaces erst Eigenschaften zugewiesen und anschließend das Protokoll zugeschaltet. Wichtig ist die Syntax. Das Einrücken dient nur zur Optik und hat kein Einfluss. Die Reihenfolge der Befehle hingegen hat Einfluss. Gewisse Befehle &#8220;öffnen&#8221; eine SubConfig-Ebene. Ein &#8220;ip ospf cost&#8221; ist nur gültig, wenn vorher eine interface-Direktive stand. Was bei den &#8220;interface&#8221;-Direktiven noch übersichtlich erscheint, kann bei den area-direktiven unübersichtlich werden, da diese ineinander geschachtelt sein können. Angenehm sind hingegen die redistribute -Direktiven. So muss man nur die Interfaces auflisten, auf den auch wirklich ein weiterer Router lauscht.</p>
<div class='footnotes'>
<div class='footnotedivider'></div>
<ol>
<li id='fn-1388-1'>Quelle: <a title="Preston, Tim (2010-01-21)" href="http://www.uknof.org.uk/uknof15/Preston-Routeserver.pdf" target="_blank">Vergleich BIRD/Quagga</a> <span class='footnotereverse'><a href='#fnref-1388-1'>&#8617;</a></span></li>
<li id='fn-1388-2'>Quelle: <a title="Wiki: Bird Internet Routing Daemon" href="http://en.wikipedia.org/wiki/Bird_Internet_routing_daemon" target="_blank">Wikipedia</a> <span class='footnotereverse'><a href='#fnref-1388-2'>&#8617;</a></span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/10/31/ubuntu-routing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DD-WRT im Einsatz &#8211; ein Fazit</title>
		<link>http://blog.raptor2101.de/2011/10/30/wrt-im-einsatz/</link>
		<comments>http://blog.raptor2101.de/2011/10/30/wrt-im-einsatz/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 17:37:32 +0000</pubDate>
		<dc:creator>Raptor 2101</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Bufallo]]></category>
		<category><![CDATA[DD-WRT]]></category>

		<guid isPermaLink="false">http://blog.raptor2101.de/?p=1375</guid>
		<description><![CDATA[Vor gut einem Monat durfte ich meine lokale Netzwerkstruktur ein wenig wenig umbauen. Dabei habe ich meinen alten Netgear Router rausgeschmissen. Ich wollte ein bisschen was &#8220;professionelleres&#8221;. Nach kurzer Suche bin ich auf Geräte-Serien gestoßen, die nativ mit DD-WRT unterstützen (ein kommerzieller Ableger der OpenWRT-Firmware). Hängen geblieben bin ich bei zwei Buffalo-Geräten: WHR-HP-G300N (400 MHz/32MB [...]]]></description>
			<content:encoded><![CDATA[<p>Vor gut einem Monat durfte ich meine lokale Netzwerkstruktur ein wenig wenig umbauen. Dabei habe ich meinen alten Netgear Router rausgeschmissen. Ich wollte ein bisschen was &#8220;professionelleres&#8221;. Nach kurzer Suche bin ich auf Geräte-Serien gestoßen, die nativ mit DD-WRT unterstützen (ein kommerzieller Ableger der OpenWRT-Firmware). Hängen geblieben bin ich bei zwei Buffalo-Geräten:</p>
<ul>
<li>WHR-HP-G300N (400 MHz/32MB Ram)</li>
<li>WZR-HP-AG300H (680 MHz/128MB Ram)</li>
</ul>
<p>Beide Geräte werden ab Werk mit DD-WRT ausgeliefert. Die Hardware-Ausstattung ist für meine Verhältnisse üppig und reicht für den Home und Medium-Office Bereich. Auch wenn beide &#8220;eigentlich&#8221; DD-WRTv24Sp2 einsetzten unterscheiden sich die tatsächlich eingesetzten Firmwares doch stark. Sie unterscheiden sich vor allem im Release-Date und den verfügbaren Features. Der kleinere G300N vermisst zum Beispiel CIFS Support, OpenVPN, beschreibbaren Speicher (JFFS2) usw.  Dazu kommen Unterschiede in den ausgelieferten Software-Versionen. Beim G300N kommt BIRD als Routing-Daemon zum Einsatz, beim AG300H wird Quagga angeboten. Man könnte beide Geräte auch auf die offizielle DD-WRT Version zurück flashen, diese hingt der &#8220;Buffalo&#8221; Version jedoch im Release hinterher (keine Ahnung was das für Auswirkungen hat). Leider bietet Buffalo die Sourcen der DD-WRT Software nicht zum download (oder ich hab den Link noch nicht gefunden) so muss man mit einigen &#8220;Eigenheiten&#8221; leben. Dazu gleich mehr. Neben einem Farbbranding und ein paar Funktionseinschränkungen entspricht die Buffalo Version von DD-WRT der frei verfügbaren DD-WRT-Version.</p>
<p>Als erstes fällt beim Einsatz von DD-WRT auf, dass man nicht für einen Idioten gehalten wird. Man kann den Assistenten wegklicken! Nach der Änderung des Passwords  darf man auf Wunsch gleich loslegen ohne sich durch einen Nerf-Dialog zu klicken. Standardmäßig ist Telnet und HTTP als &#8220;Fernwartung&#8221; aktiviert. Das kann man aber einfach umkonfigurieren. SSH und HTTPS werden angeboten. Beide Varianten haben kleine Haken. HTTPS verwendet &#8220;fest&#8221; eingebrannte selbst signierte Zertifikate (und ich würde wetten, dass die priv Keys nur pro Version-Build unterschiedlich sind). Will man dieses austauschen muss man gleich eine eigene Firmware einspielen da der /etc Bereich read-only gemounted ist. SSH bietet hingegen die Möglichkeit die Zertifikate zu ändern. Standardmäßig logt man sich dort hingegen als root ein. Da ist Vorsicht bei den Passwörtern geboten!</p>
<p>Neben diesen beiden &#8220;Fehlern&#8221; fällt nur noch der Umstand auf, dass die Konfigurationsoberfläche stark auf den Betrieb eines Gateway-Routers ausgelegt ist. Hat man sich damit einmal abgefunden und verstanden, dass das br0-Interface (intern werden Birdges verschaltet) immer &#8220;das Interne&#8221;-Interface ist, entfaltet sich eine Konfiguationsvielfalt, die man sonst nur bei hochpreisigen Konkurrenten findet. Ein Beispiel: um auf den WAN &#8211; Port (eth1) zwei VLANs zu konfigurieren braucht es 3 Klicks. Will man WAN-VLAN1 ins br0-Netz bridgen ist das ein weiterer Klick. Will man nun das WLAN aus dem br0 nehmen und auf WAN-VLAN2 bridgen geht das mit unter 5 Klicks. Ohne auch nur ein mal das SSH-Terminal zu nutzen. Auf diesem Niveau geht es weiter. Statische Routen, sehr detaillierte Interface-Konfigurationen, fast alle Services und diverse Hilfseinstellungen lassen sich über das WebInterface bequem und umfangreich konfigurieren.</p>
<p>Ich hab den SSH-Zugang dennoch häufig genutzt. Das hat drei Gründe:</p>
<ul>
<li>Die Zeit die man zum Konfigurieren braucht: alle Einstellungen erfordern das Schreiben in den NVRam, das anschließende auslesen dieser Informationen und das durchstartet des betroffenen Dienstes. Da DD-WRT aber nicht &#8220;weiß&#8221; welcher Dienst betroffen ist, wird alles durchgestartet. Beispiel: ändert man an der PPPoE Einstellung etwas, werden mal ebend alle Dienste durchgestartet auch der Routing-Dienst (BIRD/ZEBRA). Der Router ist erst mal eine Weile beschäftigt. Wird ein Routing-Dienst eingesetzt und befindet man sich außerhalb der direkten Router-Netze muss man erst mal warten, bis  die Routing-Tabellen wieder stehen. Wenn man weiß was mach macht, kann man auf der Konsole in aller Ruhe an der Config-File rum fuschen. nur den betroffenen Dienst durchstartet und wenn alles wie gewünscht funktioniert, alles in den NVRam speichern.</li>
<li>Einige exotische Einstellungen kann man &#8220;nur&#8221; über die Konsole machen. Das WebInterface bietet zwar die Möglichkeit 3 Skriptes zu hinterlegen (StartUp, FirewallUp,ShutDown) und direkt Konsolen-Befehle auszuführen, mir fehlt hier aber das Feedback. Ich hab die Skriptes immer erst im Terminal ausprobiert und dann als Skript hinterlegt.</li>
<li>Einige Eingabemasken führen quasi eins zu eins auf ein Config-File für einen Dienst. Startet man dann durch und hat einen Syntax-Fehler bekommt man keine Rückmeldung. Auch hier gilt: erst auf der Konsole ausprobieren und dann hinterlegen.</li>
</ul>
<p>Bei den ganzen Konfigurations-Möglichkeiten sollte noch erwähnt werden, dass alle Interfaces frei konfigurierbar sind. Selbst wenn das WebInterface dann ein wenig zickt. Es werden alle Ethernet und WLan Ports einzeln an das OS gemeldet. Im Falle des AG300H (DualBand) muss man den 2.4Ghz Adapter getrennt vom 5GHz konfigurieren (auch im WebInterface). Einzig die internen LAN-Ports werden durch eine nicht konfigurierbaren Hardware-Switch verschaltet. So muss man ein wenig aufpassen was man am eth0-Port macht.</p>
<p>Was bleibt abschließend zu sagen? Ich bin vom Funktionsumfang der Firmware sehr positiv überrascht. Es wird einem fast alles geboten, was man so braucht. Für alles andere gibt es das SSH-Terminal.  Der WNR3500 war wohl mein letzter nicht WRT Router gewesen sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raptor2101.de/2011/10/30/wrt-im-einsatz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

