<?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>Benjamin Sherman &#187; Networks</title>
	<atom:link href="http://holyarmy.org/category/networks/feed/" rel="self" type="application/rss+xml" />
	<link>http://holyarmy.org</link>
	<description>I have to have a tagline?</description>
	<lastBuildDate>Wed, 02 Jun 2010 06:06:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>VPN on Ubuntu Linux with Juniper Network Connect</title>
		<link>http://holyarmy.org/2009/06/vpn-on-ubuntu-linux-with-juniper-network-connect/</link>
		<comments>http://holyarmy.org/2009/06/vpn-on-ubuntu-linux-with-juniper-network-connect/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 23:13:25 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[64 bit]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[network connect]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://holyarmy.org/?p=399</guid>
		<description><![CDATA[There&#8217;s one standard document on HOWTO get Network Connect working on Ubuntu Linux. It&#8217;s mad scientist&#8217;s doc: http://mad-scientist.us/juniper.html . However, there are a few things not covered. I&#8217;ll assume that you&#8217;ve followed mad scientist&#8217;s excellent guide before going any further.
Issue #1: 64-bit Ubuntu
By default, when you install java on your 64-bit system, you get a 64-bit [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s one standard document on HOWTO get Network Connect working on Ubuntu Linux. It&#8217;s mad scientist&#8217;s doc: <a href="http://mad-scientist.us/juniper.html">http://mad-scientist.us/juniper.html</a> . However, there are a few things not covered. I&#8217;ll assume that you&#8217;ve followed mad scientist&#8217;s excellent guide before going any further.</p>
<h3>Issue #1: 64-bit Ubuntu</h3>
<p>By default, when you install java on your 64-bit system, you get a 64-bit java. No surprise there, right? Well, Juniper&#8217;s tools don&#8217;t play nice with 64-bit java. If you attempt to start the <strong>junipernc</strong> script you&#8217;ll promptly see the &#8220;VPN has failed!&#8221; error message.</p>
<div id="attachment_400" class="wp-caption alignnone" style="width: 214px"><img class="size-full wp-image-400" src="http://holyarmy.org/files/2009/06/screenshot-network-connect-vpn.png" alt="VPN has failed!" width="204" height="168" /><p class="wp-caption-text">VPN has failed!</p></div>
<p>Also if you look closely in your Terminal you&#8217;ll see the text error:</p>
<blockquote>
<pre>Failed to load the ncui library.</pre>
</blockquote>
<p>This is the clue that we are dealing with the 64-bit issue.</p>
<p>The work around for this is to install a 32-bit java on your system. Type the following into your Terminal:</p>
<blockquote>
<pre>sudo apt-get install ia32-sun-java6-bin</pre>
</blockquote>
<p>After typing your password, a 32-bit copy of java will be installed at: <em>/usr/lib/jvm/ia32-java-6-sun </em>.</p>
<p>Now, you need to convince Juniper Network Connect to use the 32-bit java. If you don&#8217;t use java for much besides your new VPN, you may just want to make the 32-bit java your default. This can be done by typing the following into your Terminal:</p>
<blockquote>
<pre>update-alternatives --set java /usr/lib/jvm/ia32-java-6-sun/jre/bin/java</pre>
</blockquote>
<p>If you DO use java and just want to tell the VPN to use the 32-bit java, you should modify the <strong>junipernc</strong> by adding the following line right after the block of lines that start with &#8220;#&#8221;:</p>
<blockquote>
<pre>export JDK_HOME=/usr/lib/jvm/ia32-java-6-sun</pre>
</blockquote>
<p>Now, when you run <strong>junipernc</strong>, it will use 32-bit java and you should no longer have the failure due to ncui.</p>
<h3>Issue #2: Determining Your Realm</h3>
<p>The scripting for Network Connect asks a few questions that may not make sense to a typical user. Even a networking savvy programmer may not be certain what values to use for the &#8220;Realm&#8221; or &#8220;PIN + SecureID Code&#8221;.</p>
<p>Finding your realm is fairly straight forward if you don&#8217;t mind diving into some HTML. Point your web browser to your company&#8217;s VPN website: https://vpn.mycompany.com or https://connect.mycompany.com .   View the source of that page and look for a line like:</p>
<blockquote>
<pre>&lt;input type="hidden" name="realm" value="REALMNAME"&gt;</pre>
</blockquote>
<p>The value of REALMNAME is what you&#8217;ll need to enter when prompted.  Your IT department may or may not know what this is if you ask them.</p>
<p>If you don&#8217;t know your &#8220;PIN + SecureID Code&#8221;, it&#8217;s simply the password you type along with your username on the VPN website to gain access. As mad scientist says, some companies use &#8220;SecurID so [they] enter a personal PIN plus the value provided by the SecurID fob,&#8221; which explains why he coded that as the prompt for the password input.</p>
<p>If you need help, there&#8217;s a long running thread over at the ubuntu forums where this continues to be discussed a lot: http://ubuntuforums.org/showthread.php?t=232607 . I gathered my info from both mad scientist&#8217;s page above and the thread itself.</p>
<p>One further note, I&#8217;ve tested this on Ubuntu 9.04 64-bit as well as 8.10 32-bit. Hope this is helpful to all you who need Juniper VPN access on 64-bit Ubuntu Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2009/06/vpn-on-ubuntu-linux-with-juniper-network-connect/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Fight Back! (When VPN Clients Mis-Behave)</title>
		<link>http://holyarmy.org/2008/07/fight-back-when-vpn-clients-mis-behave/</link>
		<comments>http://holyarmy.org/2008/07/fight-back-when-vpn-clients-mis-behave/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 18:20:19 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[mac hack]]></category>
		<category><![CDATA[scutil]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://sherman.bz/?p=310</guid>
		<description><![CDATA[I have to use VPNs at work. Specifically, to access my production webservers (etc), I have to use a Cisco VPN client. Sadly, the VPN concentrator overrides my choice of allowing local LAN access. So, when I am on the VPN, I have my DNS options changed so I can&#8217;t use any local servers. This [...]]]></description>
			<content:encoded><![CDATA[<p>I have to use VPNs at work. Specifically, to access my production webservers (etc), I have to use a Cisco VPN client. Sadly, the VPN concentrator overrides my choice of allowing local LAN access. So, when I am on the VPN, I have my DNS options changed so I can&#8217;t use any local servers. This is a serious, serious pain. So painful in fact, that many times instead of fight with it, I simply would run a Windows session in VMware (on my Mac) and connect the VPN there. This has drawbacks too, but it&#8217;s better than not having local network access.</p>
<p>So I set out to find a solution and I found a <a href="http://blog.dv8.ro/2008/06/configuring-cisco-vpn-for-local-dns.html">post by loudhush</a> which described using the <strong>scutil</strong> to modify DNS network settings after connecting to a Cisco VPN. This was great, but I needed something a bit handier.</p>
<p>So, I cranked out the following which goes in my /Users/username/.profile:<br />
<code><br />
# .profile or .bash_profile<br />
function myvpn {<br />
vpnclient connect VPNPROFILENAME user MYVPNUSERNAME<br />
myworkdns<br />
}<br />
function myworkdns {<br />
printf "get State:/Network/Service/com.cisco.VPN/DNS\nd.add ServerAddresses * 192.168.1.252, 192.168.1.198\nd.add SearchDomains * example.com, other.example.com\nset State:/Network/Service/com.cisco.VPN/DNS" | sudo scutil<br />
}<br />
</code></p>
<p>These are bash functions which i run from the command line. (I also find the Client GUI Cisco to be a pain, and prefer command line)</p>
<p>So, obviously, you&#8217;ll need to substitute in your Cisco VPN profile name ( found in /etc/opt/cisco-vpnclient/Profiles), your VPN username, your DNS server IP addresses, and your DNS search domains to your legitimate values.</p>
<p>To use, run <strong>Terminal</strong>, then type <strong>myvpn</strong>. The VPN client will prompt you for your username and password. You&#8217;ll then have to hit CTRL+Z to suspend the VPN client so the script can run the DNS updates; this part uses <strong>sudo</strong> to run the command as root, so you will probably need to type your Mac password immediately after hitting CTRL+Z. If you didn&#8217;t want to bother with the command line VPN client, you could just use your GUI Cisco VPN client, then run <strong>myworkdns</strong> from Terminal, which will still probably prompt you for your Mac password.</p>
<p>Hope others find this useful. If I find a cleaner way, I&#8217;ll post that too.</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2008/07/fight-back-when-vpn-clients-mis-behave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beating the Cisco VPN Client Error 51 On Leopard</title>
		<link>http://holyarmy.org/2008/07/beating-the-cisco-vpn-client-error-51-on-leopard/</link>
		<comments>http://holyarmy.org/2008/07/beating-the-cisco-vpn-client-error-51-on-leopard/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 16:10:01 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://sherman.bz/?p=308</guid>
		<description><![CDATA[I had this error popup today on my Mac OS X Lepopard 10.5.4 machine.

This is not cool as, well, I NEED MY VPN TO WORK!
Thankfully google came to my rescue. The solution is to execute the following in Terminal:
sudo /System/Library/StartupItems/CiscoVPN/CiscoVPN restart
Thanks for the answer, VirtuallyShocking.com.
]]></description>
			<content:encoded><![CDATA[<p>I had this error popup today on my Mac OS X Lepopard 10.5.4 machine.</p>
<p><a href="http://holyarmy.org/files/2008/07/vpnerr51.png"><img class="alignnone size-medium wp-image-309" title="vpnerr51" src="http://holyarmy.org/files/2008/07/vpnerr51-300x69.png" alt="Cisco VPN Client Error 51" width="300" height="69" /></a></p>
<p>This is not cool as, well, I NEED MY VPN TO WORK!</p>
<p>Thankfully google came to my rescue. The solution is to execute the following in Terminal:</p>
<p><code>sudo /System/Library/StartupItems/CiscoVPN/CiscoVPN restart</code></p>
<p>Thanks for the answer, <a href="http://virtuallyshocking.com/2008/06/26/cisco-vpn-client-error-51-after-leopard-1053-upgrade/">VirtuallyShocking.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2008/07/beating-the-cisco-vpn-client-error-51-on-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Investigating OpenID</title>
		<link>http://holyarmy.org/2008/05/investigating-openid/</link>
		<comments>http://holyarmy.org/2008/05/investigating-openid/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:02:43 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[new tech]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false">http://sherman.bz/?p=300</guid>
		<description><![CDATA[Aaron (one of my co-workers), recently posted a link about OpenID. I&#8217;ve given OpenID only cursory glances over the last year, but the Coding Horror link in Aaron&#8217;s post had a comment to this Google Video where Simon Willison gives a Google Tech Talk on The Implications of OpenID. The video is nearly a year [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cephas.net/blog/2008/05/24/links-5-23-2008/">Aaron (one of my co-workers)</a>, recently posted a link about OpenID. I&#8217;ve given <a href="http://openid.net/">OpenID</a> only cursory glances over the last year, but the Coding Horror link in Aaron&#8217;s post had a comment to this <a href="http://video.google.com/videoplay?docid=2288395847791059857">Google Video where Simon Willison gives a Google Tech Talk on The Implications of OpenID</a>. The video is nearly a year old, but to date, it&#8217;s done more to convince me to get on the OpenID bandwagon than anything else.</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2008/05/investigating-openid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advertising Linux Services via Avahi/Bonjour</title>
		<link>http://holyarmy.org/2008/01/advertising-linux-services-via-avahibonjour/</link>
		<comments>http://holyarmy.org/2008/01/advertising-linux-services-via-avahibonjour/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 22:20:42 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[afp]]></category>
		<category><![CDATA[avahi]]></category>
		<category><![CDATA[bonjour]]></category>
		<category><![CDATA[cifs]]></category>
		<category><![CDATA[netatalk]]></category>
		<category><![CDATA[os_x]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://sherman.bz/2008/01/27/advertising-linux-services-via-avahibonjour/</guid>
		<description><![CDATA[Update: most of this information is still correct but an update for combining service definitions into one file and setting an icon is available here: http://holyarmy.org/2008/11/bonjour-avahi-addendum
In my last post I outlined how I followed others&#8217; directions to enable netatalk on Linux and Time Machine backups to a shared AFP folder. Originally, I also described how [...]]]></description>
			<content:encoded><![CDATA[<p>Update: most of this information is still correct but an update for combining service definitions into one file and setting an icon is available here: <a href="http://holyarmy.org/2008/11/bonjour-avahi-addendum">http://holyarmy.org/2008/11/bonjour-avahi-addendum</a></p>
<p>In my last post I outlined how I followed others&#8217; directions to enable netatalk on Linux and Time Machine backups to a shared AFP folder. Originally, I also described how to put all your shares on netatalk. I suppose if only have Mac clients or you REALLY want to use AFP, you can do so. As I worked with files over AFP shares, I started noticing that the performance seemed to be quite bad. No, I didn&#8217;t benchmark, but copying large video files to a shared folder over my gigabit network was substantially slower over AFP (netatalk) than over CIFS/SMB (samba). I use my network shares pretty heavily, so this was a concern. Also, netatalk tries very hard to replicate an HFS filesystem complete with resource fork support. This means that your shared directories end up with lots of extra folders named &#8220;.AppleDouble&#8221;(and a few others) containing Mac specific info. (Note: even on CIFS you&#8217;ll get the &#8220;.AppleDB&#8221; folders unless you disable a setting in Finder. I can deal with .AppleDB better than .AppleDouble AND .AppleDB) So, because of these two issues I decided to try using CIFS and samba again.<br />
<span id="more-293"></span><br />
My first experiment was to try sharing a &#8220;time_machine&#8221; folder via CIFS, and using the &#8220;defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1&#8243; hack on the previous post, I was able to get Time Machine to perform a backup. It worked, but in the end I decided that if I need to restore from this backup, I want my resource forks intact. To do that, I need AFP and netatalk. So, I removed all AFP shares except the one for Time Machine backup share. Now my Time Machine would backup and restore happily, and I could again use my Samba shares.</p>
<p>One of the cool things about having used AFP/netatalk was that my server and folders were showing up in my finder window. Well, that&#8217;s not a feature of AFP or netatalk, its actually avahi/Bonjour doing that. So, all I had to do was advertise the services. If you followed my previous posts, you&#8217;ve already created a service for AFP/netatalk on your server; it&#8217;s simple to create more, just add more service files. I&#8217;ll paste in all of my service files here:</p>
<p><strong>/etc/avahi/services/aftp.service/</strong></p>
<p><strong>afpd.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h AFP&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_afpovertcp._tcp&lt;/type&gt;<br />
&lt;port&gt;548&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code><br />
<strong>apache.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h HTTP&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_http._tcp&lt;/type&gt;<br />
&lt;port&gt;80&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code><br />
<strong>rfb.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h VNC&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_rfb._tcp&lt;/type&gt;<br />
&lt;port&gt;5901&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code><br />
<strong>samba.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_smb._tcp&lt;/type&gt;<br />
&lt;port&gt;139&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code><br />
<strong>sftp.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h SFTP&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_sftp-ssh._tcp&lt;/type&gt;<br />
&lt;port&gt;22&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code><br />
<strong>ssh.service</strong><code><br />
&lt;?xml version="1.0" standalone='no'?&gt;&lt;!--*-nxml-*--&gt;<br />
&lt;!DOCTYPE service-group SYSTEM "avahi-service.dtd"&gt;<br />
&lt;service-group&gt;<br />
&lt;name replace-wildcards="yes"&gt;%h SSH&lt;/name&gt;<br />
&lt;service&gt;<br />
&lt;type&gt;_ssh._tcp&lt;/type&gt;<br />
&lt;port&gt;22&lt;/port&gt;<br />
&lt;/service&gt;<br />
&lt;/service-group&gt;<br />
</code></p>
<p>So, you can see that I&#8217;m announcing Samba/CIFS file, AFP file, Apache HTTPd, VNC (RFB) Remote Desktop, SSH and SFTP services. Leopard&#8217;s Finder only displays the CIFS, AFP and RFB services, but other applications with Bonjour support will see the other services. By default Finder opens &#8220;Screen Sharing&#8221; when you use the advertised service, but Chicken of the VNC can also browse for Bonjour enabled VNC servers. Below are screen shots of my Finder showing the shared services.</p>
<p><img src="http://holyarmy.org/files/2008/01/finder_bonjour_afp.jpg" alt="finder_bonjour_vnc.jpg" /><br />
<img src="http://holyarmy.org/files/2008/01/finder_bonjour_cifs.jpg" alt="finder_bonjour_cifs.jpg" /><br />
<img src="http://holyarmy.org/files/2008/01/finder_bonjour_vnc.jpg" alt="finder_bonjour_cifs.jpg" /></p>
<p>No restarts are needed for anything at this point. The services should automatically be picked up by the Linux avahi daemon, but if you really need to, you may execute /etc/init.d/avahi-daemon restart .</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2008/01/advertising-linux-services-via-avahibonjour/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Time Machine backup to Linux via Netatalk</title>
		<link>http://holyarmy.org/2008/01/time-machine-backup-to-linux-via-netatalk/</link>
		<comments>http://holyarmy.org/2008/01/time-machine-backup-to-linux-via-netatalk/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 07:26:49 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[netatalk]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[time machine]]></category>

		<guid isPermaLink="false">http://sherman.bz/2008/01/24/time-machine-backup-to-linux-via-netatalk/</guid>
		<description><![CDATA[So, when I got the upgrade from Tiger to Leopard on my MacBook Pro, I was looking for a good backup solution. I&#8217;ve used rsync in the past, but when I saw that Apple had a new Time Machine backup tool, I was curious to give it a shot. The catch is you basically needed [...]]]></description>
			<content:encoded><![CDATA[<div>So, when I got the upgrade from Tiger to Leopard on my MacBook Pro, I was looking for a good backup solution. I&#8217;ve used <a href="http://samba.anu.edu.au/rsync/" target="_blank">rsync</a> in the past, but when I saw that Apple had a new <a href="http://www.apple.com/macosx/features/timemachine.html" target="_blank">Time Machine</a> backup tool, I was curious to give it a shot. The catch is you basically needed an external USB or Firewire drive, until they recently came out with the <a href="http://www.apple.com/timecapsule/" target="_blank">Time Capsule</a>. Anyway, tonight I got the itch to really see if I could make Time Machine work without buying extra hardware. I mean, seriously, I&#8217;ve got a good hunk of mirrored disk sitting on my home server; that seems like a good place to do backups.</div>
<div>Some googling found me this <a href="http://www.fey.ca/blarchives/2007/11/18/time_machine_and_netatalk.html" target="_blank">link</a> to a blogger who&#8217;d done it!</div>
<div></div>
<div>I&#8217;ll make my own version of this post, since I had a few differences from the original I where I found the info.</div>
<p><span id="more-288"></span></p>
<div>First, netatalk is the Apple File Protocol server for Linux. My home server is running Ubuntu Linux 7.10 Gutsy Gibbon release. The default Debian/Ubuntu netatalk package doesn&#8217;t cut it, though, as it isn&#8217;t compiled against ssl, and Leopard has more stringent security requirements than its predecessors, so we have to custom compile a more secure version of netatalk. (Yes, you could reduce the security requirements, but I&#8217;d rather not.)</div>
<div><br class="webkit-block-placeholder" /></div>
<div>
<ol>
<li>Follow the instructions in this <a href="http://ubuntuforums.org/showpost.php?p=918060&amp;postcount=16" target="_blank">ubuntu forum post</a> to compile and install netatalk. After, run &#8220;echo &#8220;netatalk hold&#8221; | sudo dpkg &#8211;set-selections&#8221; to ensure that your package is not auto-upgraded (thus breaking your install).</li>
<li>Edit the netatalk configuration to include your backup storage location. The file /etc/netatalk/AppleVolumes.default is where the file server paths are configured. The last line of the default config grants access to home directories and looks like: (~/<span style="white-space: pre" class="Apple-tab-span">			</span>&#8220;Home Directory&#8221;). You&#8217;ll need to add a line specifying where you are storing your backups; mine looks like: (/backup/time_machine/<span style="white-space: pre" class="Apple-tab-span">	</span>&#8220;Time Machine&#8221;). <span class="Apple-style-span" style="font-style: italic">Note: I removed the &#8220;Home Directory&#8221; line, as in general I&#8217;m happier using CIFS(Samba) to access my network shares.</span></li>
<li>Modify <a href="http://www.disgruntled-dutch.com/2007/general/how-to-get-your-linux-based-afp-server-to-show-up-correctly-in-leopards-new-finder/" target="_blank">avahi/zeroconf to advertise AFP</a> so that Mac Bonjour will see the fileserver. I followed these directions exactly.</li>
<li><span class="Apple-style-span" style="text-decoration: line-through">Each Mac user needing access to the server has to have a corresponding user on the server, and each user needs a .passwd file in their home directory. Follow </span><a href="http://www.blackmac.de/archives/58-Make-Netatalk-talk-to-Leopard-Mac-OS-X-10.5.html" target="_blank"><span class="Apple-style-span" style="text-decoration: line-through">these instructions for Ubuntu</span></a><span class="Apple-style-span" style="text-decoration: line-through"> only as it explains the creation of the .passwd file.</span> <span class="Apple-style-span" style="font-style: italic">Note: This is not needed, as far as I can tell, so I wouldn&#8217;t do it. I don&#8217;t like the idea of having my password in plaintext on my server.</span></li>
<li>Create a file named &#8220;.com.apple.timemachine.supported&#8221; at the root of the intended shared backup volume. (Discussed <a href="http://episteme.arstechnica.com/eve/forums/a/tpc/f/8300945231/m/420002218831" target="_blank">here in more detail</a>.)</li>
<li>On your Mac, open a Terminal window and type: &#8220;defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1&#8243;</li>
</ol>
<div>I rebooted, but it might not be necessary. After a bit of time, my server showed up under the &#8220;Shared&#8221; section in Finder&#8217;s left column navigation window. I did have to type in my username and password to get it to work, which can be saved in the keychain.</div>
<div></div>
<div><span class="Apple-style-span" style="text-decoration: line-through">I added my other common shared folders (which I&#8217;d previously been accessing via Samba/CIFS).</span> Now I&#8217;m backing up with Time Machine <span class="Apple-style-span" style="text-decoration: line-through">AND using my shared files</span> via AFP. My Mac is happy, and I am too.</div>
<div></div>
<div></div>
<div>(see next post for explanation of strikeouts, but note, I don&#8217;t recommend you do the struck out actions.)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2008/01/time-machine-backup-to-linux-via-netatalk/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Network Directory Services</title>
		<link>http://holyarmy.org/2007/10/network-directory-services/</link>
		<comments>http://holyarmy.org/2007/10/network-directory-services/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 21:00:41 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[Networks]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://sherman.bz/2007/10/06/network-directory-services/</guid>
		<description><![CDATA[Network directory services are core to Internet functionality. The Domain Name System (DNS) provides a global (and/or local) directory of hosts and services. Lightweight Directory Access Protocol (LDAP) servers can provide some of the same information as DNS (or be used to back DNS), but are more frequently used to create network user databases, store [...]]]></description>
			<content:encoded><![CDATA[<p>Network directory services are core to Internet functionality. The <a href="http://en.wikipedia.org/wiki/Domain_Name_System">Domain Name System (DNS)</a> provides a global (and/or local) directory of hosts and services. <a href="http://en.wikipedia.org/wiki/LDAP">Lightweight Directory Access Protocol (LDAP)</a> servers can provide some of the same information as DNS (or be used to back DNS), but are more frequently used to create network user databases, store user group information, providing  centralized account information and password storage.</p>
<p>I recently completed an upgrade of these two core services on a network I manage. We had been running outdated (but functional) <a href="http://en.wikipedia.org/wiki/BIND">BIND</a> v8 and <a href="http://en.wikipedia.org/wiki/Openldap">OpenLDAP</a> v2.0 instances for of DNS and LDAP servers. Also, throw a Windows Server 2003 into the mix, which, as an <a href="http://en.wikipedia.org/wiki/Active_directory">Active Directory</a> domain controller has to run its own DNS and LDAP (AD is tweaked LDAP) servers.</p>
<p><span id="more-284"></span></p>
<p>First, the DNS upgrade was substantial, not just because we upgrade to a more modern BIND v9.x installation, but because we implemented a split view configuration. Previously, our local users operated on a sub-domain of &#8220;local.example.com&#8221; such that each computer was named &#8220;host.local.example.com&#8221;. The main public services utilized the proper full-domain of &#8220;example.com&#8221;. This was fine in the beginning, as when we set this up, few users had laptops, so we didn&#8217;t use individual client VPN or have road warriors with laptops out trying to access &#8220;local&#8221; services from home or a customer locations. Also, some services we started deploying (eg, our XMPP chat server, <a href="http://www.jivesoftware.com/products/openfire/" target="_blank">Openfire</a>) preferred to be bound to one host name (like, im.example.com). Internally, that host name still resolved to our public IP address which then needed some interesting firewall rules in order to support the routing or traffic. But this issue was already present with mail services; if I wanted a laptop user to use &#8220;mail.example.com&#8221; for his server while out of the office, while on VPN that user would have to change to &#8220;mail&#8221; or &#8220;mail.local.example.com&#8221; because the VPN essentially made the user part of the local network.</p>
<p>The solution I came up with, as mentioned above, was to use BIND views, and get rid of a &#8220;local&#8221; DNS sub-domain. All our servers and host names would be part of the base &#8220;example.com&#8221; domain, thus, local, VPN, or public users would only have one host name for accessing services like mail (mail.example.com) or chat (im.example.com). BIND views essentially provide a different <em>view</em> to your DNS based on the host IP address you are using to access the server. So, if users are at the office, im.example.com resolves to a private <a href="http://en.wikipedia.org/wiki/RFC_1918">RFC 1918</a> address, same as it resolves if they are connected via VPN, but if they are on the public internet, im.example.com resolves to a publicly routable address assigned to our organization.</p>
<p>Are there any tricks or gotchas when making a change like this in your organization&#8217;s DNS? The biggest trick is <strong>BE METICULOUS!</strong> Seriously, if your organization was like ours, you had a mix of both <a href="http://en.wikipedia.org/wiki/FQDN">FQDNs</a> and non FQDNs in your intranet &amp; application URLs, user documentation, etc. Undertaking a naming change like this could be very daunting given a large enough organization. You may find that you can only migrate those services which really need to have split view DNS. In my case, most of the time spent prepping for this transition was spent searching out where the &#8220;local.&#8221; part of FQDNs was used and switching to non-qualified host names or making a note so I could change it to the new FQDN after the migration. All in all, this proved to be a fairly painless migration for this smaller organization.</p>
<p>The LDAP transition initially concerned me more than the change to DNS, but in the end, proved to be less painful. However, it did require more new knowledge to transition to a totally new server instead of simply upgrading and reconfiguring. OpenLDAP had served us well, but some other admins in the group had been playing with <a href="http://en.wikipedia.org/wiki/Fedora_Directory_Server">Fedora Directory Server (FDS)</a> and had it installed in other production environments. A few key things prompted us to migrate. First, multi-master replication is a SNAP with FDS. Having that is key part of having redundant and available directory services. Yes, it can be done with OpenLDAP now (as of v2.4 or so), but it wasn&#8217;t there when we put our first FDS server into play. Also FDS has nice built-in facilities for account password expiration and password policies and account lockouts. Also, we&#8217;d used a bit of hack to push password updates to OpenLDAP from Windows Server for users who had both Windows and Unix accounts, but FDS prvoides a very complete two-way password synchronizer for Windows. Again, I&#8217;ll emphasize that replication is a SNAP with FDS. This is largely due to its very useful and easy to use Java based GUI management interface. This is a stand-alone client which runs on your desktop and connects to FDS&#8217;s admin server. Fear not, command-line junkies, everything that can be done in the GUI is available on the command-line and via <em>ldapadd</em> LDIF commands, etc. The management interface not only lets you configure the server, options, ACLs (FDS calls them ACIs), etc, but this tool is also a data management tool for all your LDAP data. This was plus for us as we&#8217;d never been thrilled with our data management options in OpenLDAP. We used multiple tools to managed accounts in OpenLDAP, but in the end, the best all around tool we had used was <a href="http://phpldapadmin.sourceforge.net/">phpLDAPdmin</a>. I&#8217;m sue the tool has matured A LOT since we last upgraded, and it was pretty nice, we may even install it again with FDS, but the built in GUI from FDS is just a nice touch.</p>
<p>The actual work of transitioning from OpenLDAP to FDS was not as hard as I&#8217;d expected. First, I installed FDS on the new server. The installation process was pretty straight forward if you&#8217;ve used OpenLDAP before and done your resarch ahead of time. A <em>slapcat</em> of the old OpenLDAP database created an <a href="http://en.wikipedia.org/wiki/LDIF">LDIF</a> dump of my old data. From there, I experimented with importing the data into FDS using <em>ldapadd</em>. There were a few schema changes required, but not many. In my case, the LDIF lines that FDS didn&#8217;t like were not required (eg, &#8220;struturalObjectClass&#8221; was dumped by OpenLDAP but required by FDS) and I simply ran my LDIF dump through a series of &#8220;grep -v&#8221; filters to remove the unwanted lines. One other concern was the format of the userPassword fields. I&#8217;d been storing passwords as MD5 hashes; FDS supports this, but the storage format of the hashes was not compatible. FDS&#8217;s website has links to user contributed scripts to solve this, but they didn&#8217;t seem to work for me. Again, having a small organization was useful, as I was able to change the default storage type to something more compatible (eg, SHA, SHA1, CRYPT, etc) and have my users update their passwords. Voila! Updated password formats. Once all this was completed, I simply pointed LDAP clients to the FDS instead of the old OpenLDAP and everything just worked!</p>
<p>Overall, my migrations were pretty smooth. Your mileage may vary, but if you need the features, or just yearn to run on updated software, the migration is well worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://holyarmy.org/2007/10/network-directory-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
