<?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; dns</title>
	<atom:link href="http://holyarmy.org/tag/dns/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>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>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>
