<?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>Seeds of Genius</title>
	<atom:link href="http://www.seedsofgenius.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.seedsofgenius.net</link>
	<description>Defining Value Add</description>
	<lastBuildDate>Thu, 03 Jun 2010 20:41:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Solaris Authentication Login with Active Directory</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory#comments</comments>
		<pubDate>Thu, 03 Jun 2010 20:41:33 +0000</pubDate>
		<dc:creator>fcaton</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=301</guid>
		<description><![CDATA[In most  office environments users will have a Windows workstation on their  desktop; most locations do not have users&#8217; log into a Unix/Linux desktop  as their primary [...]]]></description>
			<content:encoded><![CDATA[<p>In most  office environments users will have a Windows workstation on their  desktop; most locations do not have users&#8217; log into a Unix/Linux desktop  as their primary work environment.  In these environments a small  percentage of these users may have a need to connect to their Unix  servers in order to manage databases, application servers, web servers,  etc.  It becomes an administrative nightmare to manage multiple sets of  users for the Windows and the Unix systems.  The reason for this  nightmare is primarily password management. In a lot of cases, Windows  and Unix systems have different password requirements even though they  may be in the same environment.</p>
<p>Often  times, password requirements may differ between the two system types.   This means users will have to use a different password on Windows and  Unix.  Also, when password change dates are not synchronized between the  Windows and Unix systems you&#8217;ll end with users that forget their Unix  passwords on a very frequent basis.</p>
<p>This article is  meant to provide the basic procedures to allow a Solaris system to use  user information provided by Active Directory on a Windows 2008 server  as the authentication method for logging into Solaris.</p>
<p>The  following instructions are cobbled together from several locations on  the internet and from in house testing.<br />
We primarily used the  following two sites, which offer steps on configuration using Windows  2003 R2.  We then made changes where required.</p>
<p><a href="http://blog.scottlowe.org/2006/08/15/solaris-10-and-active-directory-integration/">Sun  Wikis<br />
Scott  Lowe&#8217;s Blog</a></p>
<p><strong><span style="text-decoration: underline;">Our Test Environment</span></strong></p>
<ul type="disc">
<li>Domain Controller Information
<ul type="circle">
<li>Windows  2008 R2</li>
<li>Hostname = win2k8-dc</li>
<li>IP Address = 192.168.3.76</li>
<li>Domain  = test.sog.com</li>
<li>Kerberos Realm = TEST.SOG.COM</li>
</ul>
</li>
<li>Client  Information
<ul type="circle">
<li>Solaris 10_u8 x86</li>
<li>Hostname  = keystone</li>
<li>IP Address = 192.168.3.66</li>
</ul>
</li>
</ul>
<p><span style="font-size: large;"><strong><span style="text-decoration: underline;">Windows Configuration</span></strong></span></p>
<p>It is assumed  that Active Directory is setup and that DNS is configured on the domain  controller.  The steps provided are what you need to do to add Unix  functionality to an already existing Windows AD environment.  The  Solaris clients should be added to the DNS records on the DC.</p>
<p>The  following steps are required to add all additional functionality to the  domain controller to allow for Solaris clients to authenticate against  AD.</p>
<p><strong><span style="text-decoration: underline;">Install UNIX Schema into Active Directory<br />
</span></strong></p>
<p>Open &#8220;Server Manager&#8221; and click on  &#8220;Roles&#8221; in the left pane.  Click on &#8220;Add Role Services&#8221; in the &#8220;Active  Directory Domain Services&#8221; section in the right pane.</p>
<p><img class="alignnone" title="Screenshot #1" src="http://www.seedsofgenius.net/images/1_UNIX_AD_Auth_small.png" alt="" width="717" height="516" /></p>
<hr />Click on the check box to add &#8220;Identitiy  Management for Unix.&#8221;  Remove Password Synchronization then click on &#8220;Next&#8221;</p>
<p><img class="alignnone" title="Screenshot #2" src="http://www.seedsofgenius.net/images/2_UNIX_AD_Auth_small.png" alt="" width="547" height="404" /></p>
<hr />When you  reach the &#8220;Confirm Installation&#8221; page click on &#8220;Install&#8221;</p>
<p><img class="alignnone" title="Screenshot #3" src="http://www.seedsofgenius.net/images/3_UNIX_AD_Auth_small.png" alt="" width="546" height="403" /></p>
<hr />Click on &#8220;Close&#8221; on the next screen.  Your Domain Controller will now reboot.</p>
<p><img class="alignnone" title="Screenshot #5" src="http://www.seedsofgenius.net/images/5_UNIX_AD_Auth_small.png" alt="" width="546" height="403" /></p>
<hr /><strong><span style="text-decoration: underline;">User  Configuration in AD</span></strong></p>
<p>Any users that you want to be able to use  Active Directory for Solaris logins must have the Unix Attributes set  under User Properties for that user.  These properties include the UID,  Primary GID, login shell, and home directory.  (The users’ GECOS will  come from the Display Name setting under the General tab of the users’  properties.)</p>
<p><img class="alignnone" title="Screenshot #7" src="http://www.seedsofgenius.net/images/7_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #8" src="http://www.seedsofgenius.net/images/8_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #9" src="http://www.seedsofgenius.net/images/9_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p>Under Active Directory Users and Computers Right click the new user account and select Properties.  In the user&#8217;s properties window select the  <em>Unix Attributes</em> tab.</p>
<p>Select  the domain under &#8220;NIS Domain&#8221; and fill in the fields.</p>
<p><img class="alignnone" title="Screenshot #10" src="http://www.seedsofgenius.net/images/10_UNIX_AD_Auth.png" alt="" width="423" height="549" /></p>
<p>All other user properties  (secondary groups, RBAC roles/profiles/auths…) will come from the  standard file locations on the Solaris client systems- (/etc/group,  /etc/users, /etc/security/*attr)</p>
<p>Also, make sure that the user’s  password is not set to ‘<em>change at next login</em>.’  Solaris does not  have the hooks back into AD to do password management, so your user will  not be prompted to change their password and they will not be allowed  to login.  All they will see is a messages saying: “Login Incorrect.”</p>
<p style="padding-left: 30px;"><span style="color: #999999;"><span style="text-decoration: underline;">Create Kerberos  Keytab for Client System</span></span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Although this step is given on both  of the sites provided above, I have found that it is not required to  create a functioning Solaris -&gt; AD authentication environment.  I do not know the security implication of not performing this step.<br />
On  the Windows system, create a user account for the Solaris system that  will be authenticating. In this example we are creating a user account  named host-keystone for the host keystone.  (Note: this is a user  account, not a computer account)</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;"><br />
</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Once  this user is created you can disable it for security purposes.</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">The  purpose of this step is create the keytab file that will be transferred  to the /etc/krb5 directory of the Solaris system that will be  authenticating against AD.  In order to create the keytab file run the  following command from a CMD prompt on the domain controller.  (Make  appropriate changes for you local environment.)</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;"><span style="font-size: x-small;">C:\Users\Administrator&gt;  ktpass –princ HOST\keystone.test.sog.com@TEST.SOG.COM -mapuser  TEST\host-keystone –crypto DES-CBC-MD5 +DesOnly –pass p@ssword1 -ptype  KRB5_NT_PRINCIPAL –out Desktop\keystone.keytab</span></span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Transfer  the file to the host keystone as /etc/krb5/krb5.keytab</span></p>
<p style="padding-left: 30px;">
<p><span style="text-decoration: underline;">Create  ProxyDN User Account</span></p>
<p>On the Windows system, create a user  account that will be the proxyDN.  Make this user a member of &#8220;Domain  Guests.&#8221;   Give it a password, and select ‘password never expires’<br />
This  will be the proxyDN username used when you run the ldapclient command  later on.  This account must remain enabled.<br />
In this test we  created a user account called “ProxyDNUser&#8221; with a password of  “p@ssword1”</p>
<p><img class="alignnone" title="Screenshot #11" src="http://www.seedsofgenius.net/images/11_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #12" src="http://www.seedsofgenius.net/images/12_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p>Make sure  to use the Display Name under the General properties (Full Name when  creating the user) during the ldapclient step.  In this case the correct user to use during the ldapclient command will be ProxyDNUser.  Do not use the user  logon name.  We ran into a bit of a  problem when we kept trying to use the Windows logon name and we kept  getting messages saying:</p>
<p><span style="font-family: &quot;courier new&quot;;"><span style="font-size: x-small;">libsldap: Status: 49  Mesg: openConnection: simple bind failed  &#8211; Invalid credentials</span></span></p>
<p>It was a bit frustrating when  we were completely sure that we were using the right password and still  kept getting a messages saying ‘Invalid Credentials.’</p>
<p>Use  ADSIedit on your domain controller to see the full DN for the user  account if you keep getting the message above and you’re positive you  have the password correct.</p>
<p><span style="font-size: large;"><strong><span style="text-decoration: underline;">Solaris  Configuration</span></strong></span></p>
<p><span style="text-decoration: underline;">Client Side DNS  Configuration</span></p>
<p>Your Solaris system should be a member of the  DNS domain defined by your domain controller.   Make sure to create both  forward and reverse lookup records in the domain for the Solaris  system.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># cat /etc/resolv.conf<br />
domain test.sog.com<br />
nameserver 192.168.3.76</span></p>
<p>Make sure you have  the /etc/nsswitch.conf file setup to use DNS as a name service for  hosts.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># grep &#8216;^hosts&#8217; /etc/nsswitch.conf<br />
hosts        files dns</span></p>
<p>Verify that DNS works.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># nslookup `hostname`<br />
Server:         192.168.3.76<br />
Address:        192.168.3.76#53</p>
<p>Name:   keystone.test.sog.com<br />
Address: 192.168.3.66</span></p>
<p>The following nslookup commands should  produce output similar to the following.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># nslookup -querytype=any  _ldap._tcp<br />
Server:         192.168.3.76<br />
Address:         192.168.3.76#53</p>
<p>_ldap._tcp.test.sog.com service = 0 100 389  win2k8-dc.test.sog.com.</p>
<p># nslookup -querytype=any  _gc._tcp<br />
Server:         192.168.3.76<br />
Address:         192.168.3.76#53</p>
<p>_gc._tcp.test.sog.com   service = 0 100 3268  win2k8-dc.test.sog.com.</span></p>
<p><span style="text-decoration: underline;">Kerberos</span></p>
<p>Configure  the /etc/krb5/krb5.conf file on the Solaris client.  Make appropriate  changes required for your local environment.<br />
This is the /etc/krb5/krb5.conf that we used on our test system.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt">[libdefaults]<br />
default_realm =  TEST.SOG.COM<br />
dns_lookup_kdc = true<br />
verify_ap_req_nofail = false<br />
[realms]<br />
TEST.SOG.COM = {<br />
kdc =  WIN2K8-DC.TEST.SOG.COM<br />
default_domain = TEST<br />
admin_server = WIN2K8-DC.TEST.SOG.COM<br />
}<br />
[domain_realm]<br />
.test.sog.com =  TEST.SOG.COM<br />
test.sog.com = TEST.SOG.COM<br />
[logging]<br />
default =  FILE:/var/krb5/kdc.log<br />
kdc = FILE:/var/krb5/kdc.log<br />
kdc_rotate = {<br />
period =  1d<br />
versions = 10<br />
}<br />
[appdefaults]<br />
pam = {<br />
debug =  false<br />
ticket_lifetime = 36000<br />
renew_lifetime = 36000<br />
forwardable = true<br />
krb4_convert = false<br />
}<br />
kinit = {<br />
renewable  = true<br />
forwardable= true<br />
}</span></p>
<p>Run  the kinit command and enter the administrator’s password.  If the  command runs successfully, you will see no output.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># kinit administrator<br />
Password for  administrator@TEST.SOG.COM:</span></p>
<p><span style="text-decoration: underline;">LDAP</span></p>
<p>ldap  client initialization on Solaris host.  The part of the command in  orange needs to be modified for your environment.  The rest of the  command is standard across all configurations.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># ldapclient manual \<br />
-a credentialLevel=proxy \<br />
-a authenticationMethod=simple \<br />
<span style="color: #ff6600;">-a proxyDN=cn=&#8221;ProxyDNUser,cn=Users,dc=TEST,dc=SOG,dc=COM&#8221; \<br />
-a proxyPassword=p@ssword1 \<br />
-a defaultSearchBase=dc=TEST,dc=SOG,dc=COM \<br />
-a domainName=TEST.SOG.COM \<br />
-a &#8220;defaultServerList=192.168.3.76&#8243; \</span><br />
-a attributeMap=group:userpassword=userPassword \<br />
-a attributeMap=group:memberuid=memberUid \<br />
-a attributeMap=group:gidnumber=gidNumber \<br />
-a attributeMap=passwd:gecos=cn \<br />
-a attributeMap=passwd:gidnumber=gidNumber \<br />
-a attributeMap=passwd:uidnumber=uidNumber \<br />
-a attributeMap=passwd:homedirectory=unixHomeDirectory \<br />
-a attributeMap=passwd:loginshell=loginShell \<br />
-a attributeMap=shadow:shadowflag=shadowFlag \<br />
-a attributeMap=shadow:userpassword=userPassword \<br />
-a objectClassMap=group:posixGroup=group \<br />
-a objectClassMap=passwd:posixAccount=user \<br />
-a objectClassMap=shadow:shadowAccount=user \<br />
<span style="color: #ff6600;">-a serviceSearchDescriptor=passwd:dc=TEST,dc=SOG,dc=COM?sub \<br />
-a serviceSearchDescriptor=group:dc=TEST,dc=SOG,dc=COM?sub</span></p>
<p># cp /etc/nsswitch.files  /etc/nsswitch.conf</p>
<p># vi /etc/nsswitch.conf<br />
passwd  files ldap<br />
group     files ldap<br />
hosts      files dns</p>
<p># svcadm restart  ldap/client</span></p>
<p><span style="text-decoration: underline;">PAM</span></p>
<p>Edit  /etc/pam.conf to use Kerberos authentication.  Both sites provided at  the top of this article show the same modifications to pam.conf.  In our  tests we found that those entries caused problems, most notably that  the root user could not login from the console.  Here is the /etc/pam.conf that we found to work best.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># vi /etc/pam.conf<br />
# Authentication  management<br />
#<br />
# login service (explicit because of pam_dial_auth)<br />
#<br />
login   auth  requisite          pam_authtok_get.so.1<br />
login   auth  required           pam_dhkeys.so.1<br />
login   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> login    auth sufficient         pam_krb5.so.1</span><br />
login   auth  required           pam_unix_auth.so.1<br />
login   auth  required           pam_dial_auth.so.1<br />
# Default definitions for  Authentication management<br />
# Used when service name is not explicitly  mentioned for authentication<br />
#<br />
other   auth  requisite          pam_authtok_get.so.1<br />
other   auth  required           pam_dhkeys.so.1<br />
other   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> other    auth sufficient         pam_krb5.so.1</span><br />
other   auth  required           pam_unix_auth.so.1<br />
# Default definition for  Password management<br />
# Used when service name is not explicitly  mentioned for password management<br />
other   auth  requisite          pam_authtok_get.so.1<br />
other   auth  required           pam_dhkeys.so.1<br />
other   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> other    auth sufficient         pam_krb5.so.1</span><br />
other   auth  required           pam_unix_auth.so.1<br />
</span></p>
<p>Create  home directory for user.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># mkdir -p  /export/home/john.doe<br />
# chown john.doe:staff /export/home/john.doe<br />
# chmod 700 /export/home/john.doe<br />
</span></p>
<p>You should now be able to log into your Solaris system with your AD user account.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create An RBAC Authorization To Restart a Webserver</title>
		<link>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver</link>
		<comments>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver#comments</comments>
		<pubDate>Wed, 28 Apr 2010 19:31:16 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Authorizations]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[SMF]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=265</guid>
		<description><![CDATA[One of the nice features of Sun Java Enterprise Webserver 7 is that you can have it create an SMF service for each webserver configuration.  Using this in conjunction with [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice features of Sun Java Enterprise Webserver 7 is that you can have it create an SMF service for each webserver configuration.  Using this in conjunction with RBAC authorizations means you can give individual users the right to perform a restart of just the  webserver instances you want them to.</p>
<p>For example, at one customer site there is a Java developer that needs to be able to restart a webserver instance after he updates his application.  Giving him the root password is not an option, that would give way too much administrative control to somebody who is not a Unix admin.  I could install sudo and let him run the svcadm command as root, but I don’t really want to allow him to be able to have control over all the SMF services.  The same is true with RBAC; I could give him the solaris.smf.manage authorization, which would allow him to have a limited amount of svcadm control, but it would still be for all services.</p>
<p>The following procedure creates and grants the RBAC authorization to control just a single service.  This example is for a webserver SMF service named svc:/network/http:https-test-webserver, which corresponds to a Sun Java Enterprise Webserver 7 configuration named test-webserver.</p>
<p>The amount of control this procedure gives a user is still a bit more than I would prefer.  It allows the user to restart, refresh, clear or put a service into maintenance mode.  I would prefer to just allow the user to restart the service, but it’s better than any of my other options.  Certainly much better than handing out the root password.</p>
<p><span style="color: #993300; font-family: 'courier new'"><br />
# svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:21:51 svc:/network/http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# svccfg<br />
svc:&gt; select http:https-test-webserver<br />
svc:/network/http:https-test-webserver&gt; setprop \<br />
general/action_authorization=astring:&#8221;solaris.smf.manage.https-test-webserver&#8221;<br />
svc:/network/http:https-test-webserver&gt; exit</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# svcadm refresh http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# echo &#8220;solaris.smf.manage.https-test-webserver:::Manage Test Webserver::&#8221; &gt;&gt; /etc/security/auth_attr</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# usermod -A solaris.smf.manage.https-test-webserver user1<br />
</span><br />
Now user1 can log in and perform certain levels of management on this webserver instance.  User1 can’t do everything to this service and has no control over any other services.<br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ id<br />
uid=100(user1) gid=10(staff)</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:23:56 svc:/network/http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcadm restart http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:27:53 svc:/network/http:https-test-webserver<br />
</span><br />
Notice that the STIME has changed in the outputs of svcs for this service.  This shows that the service has indeed been restarted.</p>
<p>The next two examples illustrate that the user is not able to disable the service and has no control over other SMF services.<br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ /usr/sbin/svcadm disable http:https-test-webserver<br />
svcadm: svc:/network/http:https-test-webserver: Permission denied.</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ /usr/sbin/svcadm restart ssh<br />
svcadm: svc:/network/ssh:default: Permission denied.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solaris IPMP: Link Based IPMP</title>
		<link>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp</link>
		<comments>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp#comments</comments>
		<pubDate>Mon, 15 Mar 2010 23:47:43 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[IPMP]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=190</guid>
		<description><![CDATA[IPMP, or IP Multipathing, is used to provide redundant network connections for your Solaris servers.  When IPMP was first release it used a probe based method for failure detection.  This [...]]]></description>
			<content:encoded><![CDATA[<p>IPMP, or IP Multipathing, is used to provide redundant network connections for your Solaris servers.  When IPMP was first release it used a probe based method for failure detection.  This required an IP address to be placed on all NIC&#8217;s in the IPMP group, even if the NIC was just being used a test interface.  Also, the probe based methodology for failure detection would send pings out every 2 seconds and would wait for 5 failures before failing over the IP addresses to another NIC in the IPMP group.  This means that a network connection would be down for 10 seconds before the failover occurred.</p>
<p>Starting with Solaris 9 link-based IPMP was released.  This uses the interfaces link state to determine the status of the network connection for failover/failback purposes.  With link-based IPMP the failover will occur instantly when a link goes  down.   Since the failover is instantaneous and no extra IP addresses are required to build test interfaces, link-based IPMP is the preferred way to build redundant network interfaces on Solaris.</p>
<p>IPMP requires that each NIC has a unique MAC address.  Before configuring IPMP verify that the <em>local-mac-address?</em> setting on the system PROM is set to true.<br />
<span style="color: #993300; font-family: 'courier new'"># eeprom local-mac-address?<br />
local-mac-address?=true</span><br />
If it&#8217;s not set to true then run the following command to change the setting and then reboot the system<br />
<span style="color: #993300; font-family: 'courier new'"># eeprom local-mac-address?=true</span></p>
<p>Link based IPMP can be configured as active/active or  active/passive.  Examples of both are provided below.</p>
<p><span style="text-decoration: underline;"><strong>Active/Passive</strong></span><br />
If your server is only using 1 IP address you will have to configure your IPMP as Active/Passive.  Here is a sample configuration.</p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/hostname.e1000g0</span><br />
<span style="color: #993300; font-family: 'courier new'">192.168.3.32 group IPMP-1</span></p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/hostname.e1000g1</span><br />
<span style="color: #993300; font-family: 'courier new'">group IPMP-1 standby</span></p>
<p>The standby keyword is used on the passive interfaces.  No hostname or IP address should be assigned to this NIC.<br />
This configuration will result in the following after a system reboot.</p>
<p><span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;"># ifconfig -a</span><br />
<span style="font-family: 'courier new'; color: #473933; font-size: 7.25pt;">lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1<br />
inet 127.0.0.1 netmask ff000000</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;">e1000g0: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 192.168.3.32 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:84</span><br />
<span style="font-family: 'courier new'; color: #473933; font-size: 7.25pt;">e1000g0:1: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;">e1000g1: flags=69000842&lt;BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,STANDBY,INACTIVE&gt; mtu 0 index 4<br />
inet 0.0.0.0 netmask 0<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:85</span></p>
<p>An attempt to assign an IP address to a standby interface will cause that IP to be configured on another NIC in the IPMP group.<br />
Notice in the following example an attempt to assign an IP address to e1000g1 will result in a new logical interface being configured on e1000g0.  As long as the link status of one NIC in the IPMP group is good, then the standby interface will not allow any IP addresses to be configured on it.</p>
<p><span style="color: #993300; font-family: 'courier new'"># ifconfig e1000g1 addif 192.168.3.33 up<br />
Created new logical interface e1000g0:2</span></p>
<p>In an active/passive configuration you can setup as many virtual IP address on the active NIC as you want.  However, if multiple IP addresses are to be used then it would probably make sense to use an active/active configuration for load balancing purposes.</p>
<p><span style="text-decoration: underline;"><strong>Active/Active</strong></span></p>
<p>If your server uses multiple IP address on the same network you can spread your network load across all NIC&#8217;s in your IPMP group.  The following example shows 2 IP address on 2 NIC&#8217;s.</p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/e1000g0</span><br />
<span style="color: #993300; font-family: 'courier new';">192.168.3.32 group IPMP-1</span></p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/e1000g1</span><br />
<span style="color: #993300; font-family: 'courier new';">192.168.3.33 group IPMP-1</span></p>
<p>This configuration will result in the following after a system reboot.</p>
<p><span style="color: #993300; font-family: 'courier new'; font-size: 8pt;"># ifconfig -a</span><br />
<span style="color: #473933; font-family: 'courier new'; font-size: 8pt;">lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1<br />
inet 127.0.0.1 netmask ff000000</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 8pt;">e1000g0: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 192.168.3.32 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:84</span><br />
<span style="color: #473933; font-family: 'courier new'; font-size: 8pt;">e1000g1: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 3<br />
inet 192.168.3.33 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:85</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sending Break from ILOM</title>
		<link>http://www.seedsofgenius.net/hardware/ilom/sending-break-from-ilom</link>
		<comments>http://www.seedsofgenius.net/hardware/ilom/sending-break-from-ilom#comments</comments>
		<pubDate>Tue, 02 Mar 2010 16:50:48 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[ILOM]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=182</guid>
		<description><![CDATA[Under the older systems that use ALOM the command is just &#8220;break&#8221;, this no longer works under ILOM.
Run the following commands from ILOM to break a system and get to [...]]]></description>
			<content:encoded><![CDATA[<p>Under the older systems that use ALOM the command is just &#8220;break&#8221;, this no longer works under ILOM.<br />
Run the following commands from ILOM to break a system and get to the ok prompt.</p>
<p>-&gt; set /HOST send_break_action=break<br />
-&gt; start /SP/console</p>
<p>ok&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/hardware/ilom/sending-break-from-ilom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running BIND in a chroot jail</title>
		<link>http://www.seedsofgenius.net/uncategorized/running-bind-in-a-chroot-jail</link>
		<comments>http://www.seedsofgenius.net/uncategorized/running-bind-in-a-chroot-jail#comments</comments>
		<pubDate>Wed, 24 Feb 2010 01:02:03 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=177</guid>
		<description><![CDATA[There are two ways to create a chroot jail for BIND.  You can either use the -t option with named, or you can use /usr/sbin/chroot.  Both procedures are provided below.  [...]]]></description>
			<content:encoded><![CDATA[<p>There are two ways to create a chroot jail for BIND.  You can either use the -t option with named, or you can use /usr/sbin/chroot.  Both procedures are provided below.  This article assumes that you are using the updated version of BIND (9.6.1-P3) I wrote about in a <a href="http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10" target="_self">previous article</a>.  If you are not using this version of BIND than path names and libraries may not be the same.</p>
<p>In this article I have changed the font color for most of the commands you will need to run instead of putting a shell prompt.  This should make it easier to copy and paste multiple lines of shell commands right from your browser window.  If you going to try to retype the commands instead of copy/paste make sure you pay special attention to the quotation marks.  There is a difference between &#8216; and ` and &#8221; in a Unix shell.</p>
<p><span style="text-decoration: underline;"><strong>Procedure 1: Using -t option to named.</strong></span><br />
When using -t option to named the executable itself defines the chroot jail environment.  named will execute using the standard location of the shared libraries as well as /etc/passwd and /etc/shadow, and then chroot itself.  This means that you do not have to create a full chroot environment.</p>
<p>1- Create named user and group for named processes and directory ownership<br />
<span style="color: #993300;"><em>groupadd -g 20000 named<br />
useradd -u 20000 -g 20000 -d /tmp -c &quot;Bind DNS Daemon&quot; -s /bin/false named<br />
passwd -N named</em></span></p>
<p>2- Create the chroot jail environment<br />
In this example the root of the chroot jail is going to be /opt/bind.<br />
<span style="color: #993300;"><em>jail=/opt/bind<br />
mkdir $jail<br />
mkdir -p $jail/dev $jail/usr/local/{etc,sbin,var/run/named,var/named}</em></span></p>
<p><span style="text-decoration: underline;">A. The $jail/dev directory</span><br />
The following loop will create all required device files in the chroot jail and set the user, group and permissions correctly.</p>
<p><span style="color: #993300;"><em>for DEV in conslog log null poll syscon tcp udp zero<br />
do<br />
MAJ=`ls -lL /dev/$DEV | nawk &#39;{print $5}&#39;`; MAJ=${MAJ%,}<br />
MIN=`ls -lL /dev/$DEV | nawk &#39;{print $6}&#39;`<br />
USER=`ls -lL /dev/$DEV | nawk &#39;{print $3}&#39;`<br />
GROUP=`ls -lL /dev/$DEV | nawk &#39;{print $4}&#39;`<br />
UPERM=`ls -lL /dev/$DEV | cut -c 2-4`<br />
GPERM=`ls -lL /dev/$DEV | cut -c 5-7`<br />
OPERM=`ls -lL /dev/$DEV | cut -c 8-10`<br />
mknod ${jail}/dev/${DEV} c $MAJ $MIN<br />
chown ${USER}:${GROUP} $jail/dev/$DEV<br />
chmod u=${UPERM},g=${GPERM},o=$OPERM $jail/dev/$DEV<br />
done</em></span></p>
<p><span style="text-decoration: underline;">B. The $jail/usr/local directory</span><br />
<em><span style="color: #993300;">chown named:named $jail/usr/local/var/run/named<br />
cp -p /usr/local/sbin/named  $jail/usr/local/sbin/<br />
cp -p /usr/local/etc/* $jail/usr/local/etc/<br />
cp -pr /usr/local/var/named/* $jail/usr/local/var/named/</span><br />
</em><br />
Setup your named.conf and zone files in the $jail/usr/local directory structure.</p>
<p>If this DNS server is a slave server then the named user will have to have write permission to the zones directory.  If it is not a slave, this step isn&#8217;t necessary.  If you don&#8217;t change the permissions or ownership of the zones directory then you&#8217;ll see the following message when you start BIND.<br />
<em>[ID 873579 daemon.error] the working directory is not writable</em><br />
Run the following two command to change the ownership and permissions of the zones directory.<br />
<span style="color: #993300;"><em>chown named:named $jail/usr/local/var/named<br />
chmod 750 $jail/usr/local/var/named</em></span></p>
<p>3- Update the dns/server SMF service to run your new version of BIND in the chroot jail using the named -t option.</p>
<p><em><span style="color: #993300;">svccfg -s dns/server:default<br />
setprop start/user=astring:&quot;named&quot;<br />
setprop start/group=astring:&quot;named&quot;<br />
setprop options/chroot_dir=astring:&quot;/opt/bind&quot;<br />
exit</span></em><br />
<span style="color: #993300;"><em>svcadm refresh dns/server</em></span></p>
<p>Then edit the service method to run the named executable from the chroot jail.<br />
<em># vi /lib/svc/method/dns-server</em><br />
Change the line that says:<br />
<em>server=&quot;/usr/sbin/named&quot;</em><br />
to<br />
<em>server=&quot;/opt/bind/usr/local/sbin/named&quot;</em></p>
<p>You can now manage your updated and chroot&#8217;ed version of BIND with your svcadm commands:<br />
<em># svcadm enable dns/server</em><br />
<em># svcadm disable dns/server</em><br />
<em># svcadm restart dns/server</em></p>
<p>Or you can start named manually<em><br />
# /opt/bind/usr/local/sbin/named -t /opt/bind -u named</em></p>
<p>=============================================================================================================================</p>
<p><span style="text-decoration: underline;"><strong>Procedure 2: Using the /usr/sbin/chroot command</strong></span><br />
This procedure can be used to create a chroot jail for any binaries, not just named.  (Of course, you&#8217;ll have to modify the procedure to fit the executable you&#8217;re chroot&#8217;ing).  When using the /usr/sbin/chroot binary the change root occurs prior to the execution of the named binary. This means that by the time named executes it&#8217;s whole world is bound to the chroot jail.  The result is that all libraries and all configuration files that named depends on will have to be copied into the chroot jail.</p>
<p>Follow steps 1 &amp; 2 from Procedure 1 above and then we&#8217;ll just add the necessary libraries and configuration files to that environment.</p>
<p>1- Add required libraries to the chroot jail.<br />
Use the ldd command to get a list of the libraries that the original named binary uses, and copy those libraries over to your chroot jail.<br />
<span style="color: #993300;"><em>jail=/opt/bind<br />
ldd /usr/local/sbin/named</em></span></p>
<p>You will see that there are library files under /lib, /usr/lib, /usr/local/lib and /usr/local/ssl/lib. On SPARC systems you will also have some libraries from /platform/`uname -i`/lib as well.<br />
You can either create these directories under your chroot jail and then copy the libraries over, or you can use the following loop to do all of it for you.</p>
<p><span style="color: #993300;"><em>for LIB in `ldd /usr/local/sbin/named | nawk &#39;{print $NF}&#39;`<br />
do<br />
if [ ! -d &quot;`dirname ${jail}${LIB}`&quot;  ]<br />
then<br />
mkdir -p ${jail}`dirname ${LIB}`<br />
fi<br />
cp  $LIB  ${jail}${LIB}<br />
done</em></span></p>
<p>A few other libraries are required as well:<br />
<span style="color: #993300;"><em>cp -p /usr/lib/ld.so.1 $jail/usr/lib<br />
cp -p /lib/nss_files.so.1 $jail/lib</em></span></p>
<p>And the zoneinfo library<br />
<span style="color: #993300;"><em>mkdir -p `dirname $jail/usr/share/lib/zoneinfo/$TZ`<br />
cp -p /usr/share/lib/zoneinfo/$TZ   `dirname $jail/usr/share/lib/zoneinfo/$TZ`</em></span></p>
<p>2- The chroot jail will also need to have a passwd, shadow and group file with the named user and group information to start the process.<br />
<span style="color: #993300;"><em>mkdir $jail/etc<br />
grep named /etc/passwd &gt; $jail/etc/passwd<br />
grep named /etc/shadow  &gt;$jail/etc/shadow<br />
grep named /etc/group &gt; $jail/etc/group</em></span></p>
<p>3- Modify the dns/server SMF service to run /usr/sbin/chroot to set the chroot jail for named.<br />
<span style="color: #993300;"><em>svccfg -s dns/server:default<br />
setprop start/user=astring:&quot;named&quot;<br />
setprop start/group=astring:&quot;named&quot;<br />
setprop options/chroot_dir=astring:&quot;&quot;<br />
exit<br />
svcadm refresh dns/server</em></span></p>
<p>Then edit the service method<br />
#<em> vi /lib/svc/method/dns-server</em><br />
Change the line that says:<br />
<em>server=&quot;/usr/sbin/named&quot;</em><br />
to<br />
<em>server=&quot;/usr/sbin/chroot /opt/bind /usr/local/sbin/named&quot;</em></p>
<p>You can now manage your updated and chroot&#8217;ed version of BIND with your svcadm commands:<br />
<em># svcadm enable dns/server</em><br />
<em># svcadm disable dns/server</em><br />
<em># svcadm restart dns/server</em></p>
<p><em> </em>Or you can start named manually<em><br />
# /usr/sbin/chroot /opt/bind /usr/local/sbin/named -u named<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/uncategorized/running-bind-in-a-chroot-jail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BIND 9.6.1-P3 on Solaris 10</title>
		<link>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10</link>
		<comments>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:28:10 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=149</guid>
		<description><![CDATA[The version of BIND that comes with the most recent release of Solaris 10 is 9.3.6-P1.  This document is meant to provide a step-by-step procedure to compile and install [...]]]></description>
			<content:encoded><![CDATA[<p>The version of BIND that comes with the most recent release of Solaris 10 is 9.3.6-P1.  This document is meant to provide a step-by-step procedure to compile and install a more recent version of BIND.  As of the writing of this document the production release of BIND from ISC is 9.6.1-P3.<br />
If you want to skip the process of doing the compile, you can download and install the following packages.</p>
<p><a href="http://www.seedsofgenius.net/pkg/BIND/9.6.1-P3/SOGbind-SPARC.tar.bz2" target="_blank">BIND 9.6.1-P3 SPARC</a><br />
<a href="http://www.seedsofgenius.net/pkg/BIND/9.6.1-P3/SOGbind-x64.tar.bz2" target="_blank">BIND 9.6.1-P3 x64</a></p>
<p>These packages contain everything needed to run BIND on Solaris.  I have included a few necessary libraries from the Sunfreeware packages installed in step 2 below to avoid having any package dependency requirements.  I&#8217;ve also included a sample named.conf file, a few sample zone files and the most recent <a href="http://www.internic.net/zones/named.root" target="_blank">named.root file</a>.</p>
<p><span style="text-decoration: underline;"><strong>Compile and Run BIND 9.6.1</strong><strong>-P3</strong></span><br />
1- Solaris does not come with compilers.   Sun/Oracle does, however, offer <a href="http://developers.sun.com/sunstudio/downloads/index.jsp" target="_self">SunStudio</a> as a free download.<br />
You will need to setup an SDN account.<br />
On my system I downloaded the tarfile installer for Sun Studio 12u1 and extracted it under /opt.  Depending on how you install Sun Studio you PATH variable may change in Step 3 below.</p>
<p>2-  Download and install a few extra packages from <a href="http://www.sunfreeware.com/" target="_blank">sunfreeware.com</a>.<br />
libgcc-3.4.6<br />
openssl.0.9.8l<br />
make-3.81</p>
<p>3- After installing the Sun Studio compiler and the sunfreeware packages,  edit your PATH variable so that all binaries will be found in the correct order.<br />
<em> # PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/local/bin:/opt/sunstudio12.1/bin:/usr/ccs/bin<br />
# export PATH</em></p>
<p>4- Obtain a copy of the <a href="https://www.isc.org/software/bind/961-p3/download/bind-961-p3targz" target="_blank">BIND 9.6.1-P3 source code</a>.</p>
<p>Once you&#8217;ve extracted the source code and entered the bind-9.6.1-P3 directory you can compile the usual way.<br />
<em> # ./configure &#8211;prefix=/usr/local<br />
# make install</em><br />
You now have a copy of Bind 9.6.1-P3 for use on your Solaris system.<br />
Your configuration file will be /usr/local/etc/named.conf.</p>
<p>5- If you&#8217;d like, you can make a change to the Solars SMF dns/server start method so that you can control your newer version of BIND with the svcadm command.   Just edit the file /lib/svc/method/dns-server and change the line that says:<br />
<em> server=/usr/sbin/named</em><br />
to<br />
<em> server=/usr/local/sbin/named</em></p>
<p>6- Create your named.conf file and zone files and you&#8217;re ready to go.<br />
You can either start the new version of bind by running<br />
<em> # /usr/local/sbin/named</em><br />
or, if you followed step 5 you can start it with<br />
<em> # svcadm enable dns/server</em></p>
<p>7- If you want to be able to manage DNS with rndc you will need to create a /usr/local/etc/rndc.conf file, and then create a &#8220;key&#8221; and a &#8220;controls&#8221;  statement in your named.conf file.<br />
The easiest way to do this is to run the following two commands.  This will create the statements in proper syntax, including tab spacing, with a shared key for rndc to communicate with named.<br />
<em> # /usr/local/sbin/rndc-confgen &gt; /usr/local/etc/rndc.conf<br />
# sed -n &#8216;/# key/,$s/^#//p&#8217; /usr/local/etc/rndc.conf  | grep -v &#8216;End of named.conf&#8217; &gt;&gt; /usr/local/etc/named.conf</em></p>
<p>If you don&#8217;t do this you will get the following messages in your /var/adm/messages file when you start BIND.<br />
<em> [ID 873579 daemon.notice] couldn&#8217;t add command channel 127.0.0.1#953: not found<br />
[ID 873579 daemon.notice] couldn&#8217;t add command channel ::1#953: not found</em><br />
This is really nothing more than a notice that you will not be able to manage your named daemon with rndc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solaris 10 Sparc patch utility patches</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches#comments</comments>
		<pubDate>Tue, 26 Jan 2010 22:07:30 +0000</pubDate>
		<dc:creator>rveader</dc:creator>
				<category><![CDATA[Patching]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=143</guid>
		<description><![CDATA[Before doing any patching on a Solaris system, including patching during a live upgrade, make sure you have applied all of the Sun recommended patching utility patches. The basic list [...]]]></description>
			<content:encoded><![CDATA[<p>Before doing any patching on a Solaris system, including patching during a live upgrade, make sure you have applied all of the Sun recommended patching utility patches. The basic list can be found here: <a href="http://sunsolve.sun.com/show.do?target=patchpage" target="_blank">http://sunsolve.sun.com/show.do?target=patchpage</a> Look for a drop down box labeled <span style="color: #c22338;">Latest Patch Utility Patches</span>. If you don&#8217;t see it, try logging out. You must then check each patch number in <a href="http://sunsolve.sun.com/patchfinder/" target="_blank">http://sunsolve.sun.com/patchfinder/</a> to find the latest version. The list below is accurate for Solaris 10 SPARC architecture  as of January 27, 2010.</p>
<p>Latest patch utilites patches list 01/26/10:</p>
<p>142251-01<br />
141588-03<br />
127884-01<br />
125555-06<br />
121296-01<br />
119317-01<br />
119254-72<br />
121133-02<br />
120900-04</p>
<p>If patching a system with zones also include the following patches:</p>
<p>121428-13<br />
121430-43</p>
<p>Happy patching!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mirror boot drive on T5120 with onboard RAID controller.</title>
		<link>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller</link>
		<comments>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller#comments</comments>
		<pubDate>Fri, 08 Jan 2010 17:41:18 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=115</guid>
		<description><![CDATA[These are the procedures used create a mirrored boot drive using the onboard RAID controller on a T5120.  The same procedure can be used with any Sun system that comes [...]]]></description>
			<content:encoded><![CDATA[<p>These are the procedures used create a mirrored boot drive using the onboard RAID controller on a T5120.  The same procedure can be used with any Sun system that comes with an onboard RAID controller.</p>
<p>First, and most important, is that the mirroring must be done prior to the OS installation.  When you use the raidctl command to create or delete a RAID device all data will be wiped from the member disks.  In order to do this you will need to boot the system into single user mode from a Solaris DVD or a Jumpstart server.</p>
<p>The most current release of Solaris, update 8 (10/09), has a problem with the format command as outlined in bug <a href="http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=4e171df1f1d726d644c43cbba5f9?bug_id=6901327">6901327</a>.<br />
If you intend on installing Solaris 10_u8, you should boot from the DVD of an earlier release to create the mirror. Then perform the installation from the update 8 media.</p>
<p>1) Boot into single user mode from Solaris 10_u7 (or earlier) DVD or Jumpstart image.</p>
<p><font face="courier" size="2">ok&gt; boot cdrom –s</font></p>
<p>2) Run raidctl to get information needed to create raid device.</p>
<p><font face="courier" size="2"># raidctl<br />
Controller: 1<br />
Disk: 0.0.0<br />
Disk: 0.1.0</font></p>
<p>3) Use raidctl to create mirror device.</p>
<p>Notice that you are informed that this action will delete all data on both disks and that have to answer “yes” in order to proceed.  This is why mirroring the boot disks using this method must be done prior to installing the OS.</p>
<p><font face="courier" size="1"># raidctl –C “0.0.0 0.1.0” –r 1 1<br />
Creating RAID volume will destroy all data on spare space of member disks, proceed (yes/no)? <strong>yes</strong><br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk 0 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk 1 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk (target 1) is |out of sync||online|<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 is |enabled||degraded|<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 is |enabled||resyncing||degraded|<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
Volume c1t0d0 is created successfully!<br />
Volume   Size   Stripe  Status   Cache  RAID<br />
Sub             Size                    Level<br />
Disk<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
c1t0d0   136.6G    N/A     SYNC     OFF    RAID1<br />
0.2.0   136.6G          GOOD<br />
0.1.0   136.6G          GOOD</font></p>
<p>3)  Label the mirror disk.</p>
<p>The following step does not work under Solaris 10_u8.  This is why it is suggested to use a previous update release of Solaris to perform these steps.</p>
<p>When you run “format” you will see error messages indicating that there is a corrupt label on the new disk drive.  You will have to use the “type” subcommand to install the appropriate VTOC for the RAID disk drive.  Under “type” choose “0” for auto configure, then label the disk.</p>
<p><font face="courier" size="1"># format<br />
Searching for disks&#8230;WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
done<br />
c1t0d0: configured with capacity of 136.49GB<br />
AVAILABLE DISK SELECTIONS:<br />
0. c1t0d0 &lt;LSILOGIC-LogicalVolume-3000 cyl 65533 alt 2 hd 16 sec 273&gt;<br />
/pci@0/pci@0/pci@2/scsi@0/sd@0,0<br />
Specify disk (enter its number): <strong>0 </strong><br />
selecting c1t0d0<br />
[disk formatted]<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Disk not labeled.  Label it now? <strong>no </strong><br />
FORMAT MENU:<br />
disk       &#8211; select a disk<br />
type       &#8211; select (define) a disk type<br />
partition  &#8211; select (define) a partition table<br />
current    &#8211; describe the current disk<br />
format     &#8211; format and analyze the disk<br />
repair     &#8211; repair a defective sector<br />
label      &#8211; write label to the disk<br />
analyze    &#8211; surface analysis<br />
defect     &#8211; defect list management<br />
backup     &#8211; search for backup labels<br />
verify     &#8211; read and display labels<br />
save       &#8211; save new disk/partition definitions<br />
inquiry    &#8211; show vendor, product and revision<br />
volname    &#8211; set 8-character volume name<br />
!&lt;cmd&gt;     - execute &lt;cmd&gt;, then return<br />
quit<br />
format&gt; <strong>type</strong><br />
AVAILABLE DRIVE TYPES:<br />
0. Auto configure<br />
1. Quantum ProDrive 80S<br />
2. Quantum ProDrive 105S<br />
3. CDC Wren IV 94171-344<br />
4. SUN0104<br />
5. SUN0207<br />
6. SUN0327<br />
7. SUN0340<br />
8. SUN0424<br />
9. SUN0535<br />
10. SUN0669<br />
11. SUN1.0G<br />
12. SUN1.05<br />
13. SUN1.3G<br />
14. SUN2.1G<br />
15. SUN2.9G<br />
16. Zip 100<br />
17. Zip 250<br />
18. Peerless 10GB<br />
19. LSILOGIC-LogicalVolume-3000<br />
20. other<br />
Specify disk type (enter its number)[19]: <strong>0</strong><br />
c1t0d0: configured with capacity of 136.49GB<br />
&lt;LSILOGIC-LogicalVolume-3000 cyl 65533 alt 2 hd 16 sec 273&gt;<br />
selecting c1t0d0<br />
[disk formatted]<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
Disk not labeled.  Label it now? yes<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
format&gt; <strong>label</strong><br />
Ready to label disk, continue? <strong>yes</strong></font></p>
<p>4) Now you can continue with the installation of Solaris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux software RAID tips</title>
		<link>http://www.seedsofgenius.net/uncategorized/linux-software-raid-tips</link>
		<comments>http://www.seedsofgenius.net/uncategorized/linux-software-raid-tips#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:34:12 +0000</pubDate>
		<dc:creator>jkeilson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=105</guid>
		<description><![CDATA[There are a variety of Linux software RAID-like options out there which each have their own quirks and features.  Personally, I like the simplicity and functionality of mdadm.  It provides [...]]]></description>
			<content:encoded><![CDATA[<p>There are a variety of Linux software RAID-like options out there which each have their own quirks and features.  Personally, I like the simplicity and functionality of mdadm.  It provides redundancy with a minimum of cost and hassle, assuming you do everything right.</p>
<p>The important piece of that is doing everything right.  One critical piece of information that is not often discussed is that software RAID should always be built on top of partitions, not with raw disk devices.  The reason for this is that superblocks get written to the last raw disk  in the RAID volume instead of the software RAID partition.  At boot the kernel will read the partition table from the raw disk for the RAID volume and cause all kinds of nastiness.  The partition tables will all look wrong, the kernel will write to addresses on the disk that don&#8217;t exist, and you will generally be unhappy with your system.  So plan ahead, create those partitions first, and then create the SW RAID volume using those partitions and lay your fs on top.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/uncategorized/linux-software-raid-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Sendmail Configuration</title>
		<link>http://www.seedsofgenius.net/solaris/simple-sendmail-configuration</link>
		<comments>http://www.seedsofgenius.net/solaris/simple-sendmail-configuration#comments</comments>
		<pubDate>Fri, 11 Dec 2009 16:15:04 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=92</guid>
		<description><![CDATA[This is how I set up an SMTP relay server for outbound e-mail.   I use this type of configuration so that I can have my servers send out messages [...]]]></description>
			<content:encoded><![CDATA[<p>This is how I set up an SMTP relay server for outbound e-mail.   I use this type of configuration so that I can have my servers send out messages without having to configure them to authenticate with my internet providers SMTP server.  I&#8217;ll write scripts that use mailx to send mail to my phone, or configure the ILOM&#8217;s of my servers to send out mail based on certain events.   (Try calling Verizon or Comcast support and tell them you&#8217;re having a problem getting mailx to send e-mail through their SMTP servers and see how far you get.)<br />
As long as you&#8217;re internet gateway has a static IP and a registered domain name most mail routers will accept outbound e-mail sent with this configuration.</p>
<p>In the following sample environment there are a set of Solaris servers that exist in a local DNS domain that is different than my public DNS domain. We&#8217;ll say the public domain name is mycompany.com and the Solaris systems will be on an internally managed domain called solservers.mycompany.com.  The masquerade_envelope feature allows me to configure the domain portion of the e-mail address so that it shows my public DNS name instead of the internal.</p>
<p>Here is a sample configuration of a Solaris 10 SMTP server.</p>
<p># cd /etc/mail/cf/cf<br />
# cp main.mc new.mc<br />
# vi new.mc</p>
<p style="padding-left: 30px;">divert(0)dnl<br />
VERSIONID(`@(#)sendmail.mc      1.11 (Sun) 06/21/04&#8242;)<br />
OSTYPE(`solaris8&#8242;)dnl<br />
DOMAIN(`solaris-generic&#8217;)dnl<br />
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA&#8217;)<br />
DAEMON_OPTIONS(`Port=smtp,Addr=192.168.1.25, Name=MTA&#8217;)<br />
MASQUERADE_AS(`mycompany.com&#8217;)<br />
FEATURE(masquerade_envelope)<br />
MAILER(`local&#8217;)dnl<br />
MAILER(`smtp&#8217;)dnl</p>
<p># /usr/ccs/bin/make new.cf<br />
# cp new.cf /etc/mail/sendmail.cf<br />
# svcadm restart sendmail</p>
<p>The DAEMON_OPTIONS lines will configure your SMTP server to forward mail that is sent to either of those IP addresses.  The assumption here is that this server has an IP address of 192.168.1.25 and other mail clients will be sending mail to this system for forwarding.   If you only want this system to forward it&#8217;s own mail, and reject other client mail forward requests,  then get rid of the second line.<br />
<br/><br/><br/><br />
&#8230;And here is a sample sendmail client configuration that will forward it&#8217;s mail through this sever.</p>
<p># cd /etc/mail/cf/cf<br />
# cp main.cf new.cf<br />
# vi new.mc</p>
<p style="padding-left: 30px;">divert(0)dnl<br />
VERSIONID(`@(#)sendmail.mc      1.11 (Sun) 06/21/04&#8242;)<br />
OSTYPE(`solaris8&#8242;)dnl<br />
DOMAIN(`solaris-generic&#8217;)dnl<br />
define(`SMART_HOST&#8217;, `smtp.solservers.mycompany.com&#8217;)dnl<br />
MASQUERADE_AS(`mycompany.com&#8217;)<br />
FEATURE(`masquerade_envelope&#8217;)<br />
MAILER(`local&#8217;)dnl<br />
MAILER(`smtp&#8217;)dnl</p>
<p># /usr/ccs/bin/make new.cf<br />
# cp new.cf /etc/mail/sendmail.cf<br />
# svcadm restart sendmail</p>
<p>The assumption here is that there is an entry on the internal DNS server that points smtp.solservers.mycompany.com to the IP address 192.168.1.25.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/simple-sendmail-configuration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
