<?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>zomo tech</title>
	<atom:link href="http://www.zomo.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zomo.co.uk</link>
	<description>Is it done yet?</description>
	<lastBuildDate>Wed, 24 Feb 2010 09:18:37 +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>cron</title>
		<link>http://www.zomo.co.uk/2010/02/cron/</link>
		<comments>http://www.zomo.co.uk/2010/02/cron/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 09:18:37 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[sw]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=217</guid>
		<description><![CDATA[Obviously cron jobs are abundantly useful for so many things, all the way from basic housekeeping up to big application functionality.
They&#8217;re also the source of plenty of flail. What do I mean?

They are neither code nor data, so often get overlooked, or shonkily installed, by application deployment tools
They run with a minimal environment that can [...]]]></description>
			<content:encoded><![CDATA[<p>Obviously cron jobs are abundantly useful for so many things, all the way from basic housekeeping up to big application functionality.</p>
<p>They&#8217;re also the source of plenty of flail. What do I mean?</p>
<ul>
<li>They are neither code nor data, so often get overlooked, or shonkily installed, by application deployment tools</li>
<li>They run with a minimal environment that can catch out the unwary: scripts that work in interactive shell sometimes don&#8217;t from cron</li>
<li>The default behaviour of mailing output to the cronjob owner generates large amounts of mail that gets ignored, filtered or bounced</li>
<li>Jobs can fail silently and no-one notices until, say, you need to restore that backup that hasn&#8217;t run for last six months</li>
<li>Jobs that helpfully append their output to a log commonly don&#8217;t rotate that log</li>
<li>It&#8217;s easy to have jobs overlapping if they get stuck or take longer than expected to complete. This is a splendid way of wedging a machine.</li>
</ul>
<p>The mail aspect is a particular peeve. In some jobs my mailbox has enjoyed several thousand cron generated mails a day, and there&#8217;s no way I&#8217;m able to accurately look at each one and react to it. Mostly they contain expected output from successful job execution, so they&#8217;re easy to skip. But I don&#8217;t trust my eyes to get that right all the time.</p>
<p>One approach to this is to arrange for jobs to only send mail on error. This is an improvement, but can lead into thinking that a job is happily succeeding when in fact it&#8217;s either not running or the only-on-error logic is bust. Since cron jobs often cover essential system tasks like backing up, syncing data around and reporting it&#8217;s vital that they don&#8217;t fail silently.</p>
<p> I&#8217;ve worked somewhere that tackled this by collating cron-generated mails from diverse systems into a system mailbox and pattern matching them for failure signs. This seems slightly dubious &#8212; it&#8217;s fragile and labour intensive  &#8212; but at least the system also flagged if expected jobs failed to arrive and got our inboxes tamed. </p>
<p>To tackle these problems I find myself writing wrappers for cronjobs. I&#8217;ve written several variants to meet different situation&#8217;s needs. Unhelpfully I call them all <code>cronwrap</code>.  These wrappers sets out to</p>
<ul>
<li>Engage the amazingly useful <a href="http://unixwiz.net/tools/lockrun.html"><code>lockrun</code></a> utility to guard against multiple execution of stuck crons</li>
<li>Place cron output into timestamped logs that can be both aged out and made available to interested parties</li>
<li>Hook into local monitoring systems:
<ol>
<li>On execution, update a run counter (SNMP data or some simple text file)</li>
<li>On failure, send a SNMP trap or leave some bait for Nagios. Also, update a fail counter</li>
<li>If <code>lockrun</code> has prevented a job running owing to overlap, send a SNMP trap or similarly bait Nagios</li>
</ol>
</li>
<li>If required, send output by mail somewhere (sometimes this is necessary, even with the concerns listed above)</li>
</ul>
<p>So, nothing surprising there. Using such wrappers helps keep cron jobs tamed and reliable, and it&#8217;s monitoring them near to where the action occurs, rather than mediating via SMTP.</p>
<p>This is hardly invention either, there&#8217;s <a href="http://www.google.com/codesearch?q=cronwrap&#038;hl=en&#038;btnG=Search+Code">plenty</a> of prior art with different nuances in behaviour to meet the needs of different environments. Perhaps I&#8217;ll merge the variants of my efforts and publish too.</p>
<p>What&#8217;s curious is that this functionality isn&#8217;t available inside the cron daemon<sup>1</sup> itself. It is perfectly placed to catch exit status, divert output and know if a job has overrun; and would remove the need for all this additional monkeying to make jobs reliable and well behaved. If my C wasn&#8217;t just read-only I&#8217;d have a crack at it!</p>
<p>There, I&#8217;ve finally condensed all my cron rant into one sustained piece.</p>
<ol class="footnotes"><li id="footnote_0_217" class="footnote"> To be clear, I&#8217;m talking about the BSD cron written by Paul Vixie. None of the variants I&#8217;ve seen address these concerns either. I&#8217;d love to know if there&#8217;s any I&#8217;ve missed.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2010/02/cron/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SOAP in unexpected &#8220;actually, quite easy&#8221; incident.</title>
		<link>http://www.zomo.co.uk/2009/09/soap-in-unexpected-actually-quite-easy-incident/</link>
		<comments>http://www.zomo.co.uk/2009/09/soap-in-unexpected-actually-quite-easy-incident/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 21:02:18 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[sw]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=203</guid>
		<description><![CDATA[In web service access shuffle, today&#8217;s mission is introducing large N number of new backend pools, traffic rules and virtual servers to Zeus ZXTM balancers. No time for monkeying around in the web UI, better check out their well documented API. It uses SOAP, which I&#8217;ve never got busy with before &#8211; slightly apprehensive.
The reference [...]]]></description>
			<content:encoded><![CDATA[<p>In web service access shuffle, today&#8217;s mission is introducing large N number of new backend pools, traffic rules and virtual servers to Zeus <a href="http://www.zeus.com/products/zxtm/">ZXTM</a> balancers. No time for monkeying around in the web UI, better check out their <a href="http://knowledgehub.zeus.com/media/5.1/ZXTM_5.1_Control_API.pdf">well documented</a> API. It uses <a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a>, which I&#8217;ve never got busy with before &#8211; slightly apprehensive.</p>
<p>The reference documentation has examples in Perl and PHP which got me so far, but I&#8217;m most comfortable in Ruby now, and was happy to find <a href="http://knowledgehub.zeus.com/code/2009/04/09/ruby_and_soap_example_2"><sup>1</sup> this</a> pointer to using the <a href="http://dev.ctor.org/soap4r">soap4r</a> library.</p>
<p>Chief bonus here is the <code>wsdl2ruby.rb</code> tool that&#8217;ll transform the <a href="http://www.w3.org/TR/wsdl">WSDL</a> data into Ruby objects with heirarchy, attribute accessors and everything else to make operating the API really comfortable. If your WSDL is a moving target during development it&#8217;ll even do this on the fly.</p>
<p>This meant getting the scripting done to configure the ZXTMs was pretty straightforward, without any faffing with the underlying access mech. Refreshing!</p>
<ol class="footnotes"><li id="footnote_0_203" class="footnote">I was going to paste example code, but this&#8217;ll do</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/09/soap-in-unexpected-actually-quite-easy-incident/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipmitool for OSX</title>
		<link>http://www.zomo.co.uk/2009/09/ipmitool-for-osx/</link>
		<comments>http://www.zomo.co.uk/2009/09/ipmitool-for-osx/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 08:51:49 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[sw]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=196</guid>
		<description><![CDATA[Nothing searchable in MacPorts, but found this.
Update: Turns out this build is missing isol mode serial-on-LAN for IPMI 1.5 hosts1, and building the ipmitool distribution wasn&#8217;t so hard after all. Packaging systems have made me lazy!
Dell R200 uses IPMI 1.5, Dell R410 uses 2.0. Both do SOL and remote power management well enough]]></description>
			<content:encoded><![CDATA[<p>Nothing searchable in <a href="http://www.macports.org/">MacPorts</a>, but found <a href="http://freebsdgirl.com/2008/07/ipmitool-for-osx.html">this</a>.</p>
<p>Update: Turns out this build is missing <code>isol</code> mode serial-on-LAN for IPMI 1.5 hosts<sup>1</sup>, and building the <a href="http://ipmitool.sourceforge.net/">ipmitool</a> distribution wasn&#8217;t so hard after all. Packaging systems have made me lazy!</p>
<ol class="footnotes"><li id="footnote_0_196" class="footnote">Dell R200 uses IPMI 1.5, Dell R410 uses 2.0. Both do SOL and remote power management well enough</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/09/ipmitool-for-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vxargs &#8211; visual parallel xargs</title>
		<link>http://www.zomo.co.uk/2009/09/vxargs-visual-parallel-xargs/</link>
		<comments>http://www.zomo.co.uk/2009/09/vxargs-visual-parallel-xargs/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 07:34:36 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[sw]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=182</guid>
		<description><![CDATA[Flag for vxargs, an xargs-a-like that runs its multiple command invocations in parallel and provides a (ncurses) histogram of the progress. Its companion program pattern provides an easy way to generate IP / hostnames based on a logical sequence. Together the make a reasonble way to run a command on a bunch of hosts and [...]]]></description>
			<content:encoded><![CDATA[<p>Flag for <a href="http://vxargs.sourceforge.net/">vxargs</a>, an xargs-a-like that runs its multiple command invocations in parallel and provides a (ncurses) histogram of the progress. Its companion program <a href="http://code.activestate.com/recipes/355531/">pattern</a> provides an easy way to generate IP / hostnames based on a logical sequence. Together the make a reasonble way to run a command on a bunch of hosts and collate the stdout, stderr and exit status of each.</p>
<p>As a same-same-but-different alternative to</p>
<ul>
<li><a href="http://www.theether.org/pssh/">pssh</a></li>
<li>That xterm multiplexer I can never remember the name of</li>
<li><a href="http://www.gnu.org/software/screen/">screen(1)</a> and <a href="http://en.wikipedia.org/wiki/Apple_Terminal">Terminal.app</a>&#8217;s send-to-many option</li>
<li>Quick and dirty shell scripts iterating over a host list</li>
<li><a href="http://www.capify.org/index.php/">Capistrano</a>&#8217;s shell (even on hosts that don&#8217;t run any other Ruby!)</li>
</ul>
<p>&#8230; it&#8217;s proving pretty solid.</p>
<p>Example:<br />
<code><br />
[admin@manage3 tmp]$ pattern.py foo[1-8] | vxargs -y -o ~/tmp ssh {} varnishadm -Tlocalhost:6082 ping<br />
</code></p>
<p>Terminal clears, and shows progress:<br />
<code><br />
8/8:ssh -l root foo8 varnishadm -Tlocalhost:6082 ping<br />
Done<br />
Done<br />
Done<br />
Done<br />
Done<br />
( 10s)  6: foo7<br />
Done<br />
</code><br />
and exits<br />
<code><br />
exit code 0: 7 job(s)<br />
exit code 1: 1 job(s)<br />
total number of jobs: 8<br />
</code><br />
Now you can inspect the output from each host, exit status and an overall failure list<br />
<code><br />
[admin@manage3 tmp]$ cat ~/tmp/abnormal_list<br />
foo5<br />
[admin@manage3 tmp]$ cat ~/tmp/foo5.err<br />
Warning: Permanently added 'foo5,10.221.11.0' (RSA) to the list of known hosts.<br />
connect(): Connection refused<br />
An error occured in receiving status.<br />
</code></p>
<p>Via <a href="http://chneukirchen.org/trivium/2009-09-13">Trivium</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/09/vxargs-visual-parallel-xargs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache 1.3 patch for ProxyPreserveHost</title>
		<link>http://www.zomo.co.uk/2009/09/apache-1-3-patch-for-proxypreservehost/</link>
		<comments>http://www.zomo.co.uk/2009/09/apache-1-3-patch-for-proxypreservehost/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 07:38:11 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[vague]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=173</guid>
		<description><![CDATA[Patch against Apache 1.3.411 to backport the ProxyPreserveHost feature. I can&#8217;t remember where I found it now, but I&#8217;ve tweaked it through a few Apache revisions.
Useful for migrating sites from one host to another before or during DNS propagation.
That said, I&#8217;m using Varnish and HAProxy an increasing amount for such plumbing.
Yep, still running 1.3 around [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.zomo.co.uk/wp-content/uploads/2009/09/patch-mod_proxy-pph.txt'>Patch</a> against Apache 1.3.41<sup>1</sup> to backport the <a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost">ProxyPreserveHost</a> feature. I can&#8217;t remember where I found it now, but I&#8217;ve tweaked it through a few Apache revisions.</p>
<p>Useful for migrating sites from one host to another before or during DNS propagation.</p>
<p>That said, I&#8217;m using <a href="http://varnish.projects.linpro.no/">Varnish</a> and <a href="http://haproxy.1wt.eu/">HAProxy</a> an increasing amount for such plumbing.</p>
<ol class="footnotes"><li id="footnote_0_173" class="footnote">Yep, still running 1.3 around the place</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/09/apache-1-3-patch-for-proxypreservehost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>irssi client certificate patch</title>
		<link>http://www.zomo.co.uk/2009/09/irssi-client-certificate-patch/</link>
		<comments>http://www.zomo.co.uk/2009/09/irssi-client-certificate-patch/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 07:18:21 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[sw]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=169</guid>
		<description><![CDATA[Patch for irssi so it can prompt for your X509 client certificate correctly.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://bugs.irssi.org/index.php?do=details&#038;task_id=305">Patch</a> for <a href="http://www.irss.org">irssi</a> so it can prompt for your X509 client certificate correctly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/09/irssi-client-certificate-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Casual Firewall / VPN benchmarking</title>
		<link>http://www.zomo.co.uk/2009/08/casual-firewall-vpn-benchmarking/</link>
		<comments>http://www.zomo.co.uk/2009/08/casual-firewall-vpn-benchmarking/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 21:32:46 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[vague]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=154</guid>
		<description><![CDATA[Two datacentres, each with a pair of 2.5GHz Xeon firewalls running OpenBSD. Benching with iperf yielded the following:

Between firewall pair, LAN
[ 3] 0.0-10.0 sec 1.00 GBytes 860 Mbits/sec
[ 3] 0.0-10.0 sec 1.00 GBytes 860 Mbits/sec
[ 3] 0.0-10.0 sec 1017 MBytes 853 Mbits/sec


Firewall to firewall between DCs, outside VPN, no PF
[ 3] 0.0-10.0 sec 1.02 GBytes [...]]]></description>
			<content:encoded><![CDATA[<p>Two datacentres, each with a pair of 2.5GHz Xeon firewalls running OpenBSD. Benching with <a href="http://sourceforge.net/projects/iperf/">iperf</a> yielded the following:</p>
<ul>
<li>Between firewall pair, LAN</p>
<blockquote><p><code>[ 3] 0.0-10.0 sec 1.00 GBytes 860 Mbits/sec<br />
[ 3] 0.0-10.0 sec 1.00 GBytes 860 Mbits/sec<br />
[ 3] 0.0-10.0 sec 1017 MBytes 853 Mbits/sec</code></p></blockquote>
</li>
<li>
Firewall to firewall between DCs, outside VPN, no PF</p>
<blockquote><p><code>[ 3] 0.0-10.0 sec 1.02 GBytes 873 Mbits/sec<br />
[ 3] 0.0-10.0 sec 992 MBytes 832 Mbits/sec<br />
[ 3] 0.0-10.0 sec 986 MBytes 827 Mbits/sec</code></p></blockquote>
</li>
<li>
Firewall to remote internal host, outside VPN, through PF NAT (rdr)</p>
<blockquote><p><code>[ 3] 0.0-10.0 sec 260 MBytes 218 Mbits/sec<br />
[ 3] 0.0-10.0 sec 202 MBytes 170 Mbits/sec<br />
[ 3] 0.0-12.3 sec 333 MBytes 228 Mbits/sec</code></p></blockquote>
</li>
<li>Internal host to internal host, over IPsec VPN (ESP), through PF<br />
<blockquote><p><code>[ 3] 0.0-10.1 sec 43.9 MBytes 36.4 Mbits/sec<br />
[ 3] 0.0-10.1 sec 26.2 MBytes 21.8 Mbits/sec<br />
[ 3] 0.0-11.3 sec 28.0 MBytes 20.8 Mbits/sec</code></p></blockquote>
</li>
<li>Internal host to internal host, over OpenVPN, through PF<br />
<blockquote><p><code>[  3]  0.0-10.0 sec    161 MBytes    134 Mbits/sec<br />
[  3]  0.0-10.0 sec    144 MBytes    121 Mbits/sec<br />
[  3]  0.0-10.0 sec    145 MBytes    121 Mbits/sec</code></p></blockquote>
</li>
</ul>
<p>Care was taken to use optimal ciphers, appropriate MTU / MSS and the TCP stack was tuned throughout.</p>
<ul>
<li>IPsec really hurts without hardware acceleration</li>
<li>There&#8217;s a surprisingly large hit for just NAT</li>
<li>Neither VPN technologies can benefit from the multiple cores available to them</li>
<li>OpenVPN&#8217;s speed is appealing, but it lacks the smooth route to high availability of CARP + pfsync + sasync of IPsec on OpenBSD</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/08/casual-firewall-vpn-benchmarking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox extensions for Amazon Web Services</title>
		<link>http://www.zomo.co.uk/2009/08/firefox-extensions-for-amazon-web-services/</link>
		<comments>http://www.zomo.co.uk/2009/08/firefox-extensions-for-amazon-web-services/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 20:57:50 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[vague]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=148</guid>
		<description><![CDATA[These two Firefox extensions are soothing the pain between the CLI and the AJAX-with-treacle web interface:

S3Fox
Elasticfox

There&#8217;s bound to be something that draws together all the foregin keys &#8211; AMI, volume, instance, reservation etc &#8211; but I&#8217;ve yet to find that. Been putting off writing it for a while&#8230;
]]></description>
			<content:encoded><![CDATA[<p>These two Firefox extensions are soothing the pain between the CLI and the AJAX-with-treacle web interface:</p>
<ul>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3247">S3Fox</a></li>
<li><a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609">Elasticfox</a></li>
</ul>
<p>There&#8217;s bound to be something that draws together all the foregin keys &#8211; AMI, volume, instance, reservation etc &#8211; but I&#8217;ve yet to find that. Been putting off writing it for a while&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/08/firefox-extensions-for-amazon-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iLO port forwards</title>
		<link>http://www.zomo.co.uk/2009/08/ilo-port-forwards/</link>
		<comments>http://www.zomo.co.uk/2009/08/ilo-port-forwards/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 09:03:12 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[stash]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=138</guid>
		<description><![CDATA[(woah, neglected blog)
HPaq&#8217;s iLO is a strange beast, its functionality seems split between the SSH CLI and the web interface. Depending on your particular mission, some goals are only achievable using the whole ActiveX / Java remote console in IE. Sigh.
To get this flying from virtualised VMware, here&#8217;s the full SSH mutter to forward the [...]]]></description>
			<content:encoded><![CDATA[<p>(woah, neglected blog)</p>
<p>HPaq&#8217;s <a href="http://en.wikipedia.org/wiki/HP_Integrated_Lights-Out">iLO</a> is a strange beast, its functionality seems split between the SSH CLI and the web interface. Depending on your particular mission, some goals are only achievable using the whole ActiveX / Java remote console in IE. Sigh.</p>
<p>To get this flying from virtualised VMware, here&#8217;s the full SSH mutter to forward the ports via an access host. I&#8217;m always forgetting it, thus this post.</p>
<p><code>sudo ssh -g -L 80:${IP}:80 -L 3389:${IP}:3389 -L 443:${IP}:443 -L 17988:${IP}:17988 -L 17990:${IP}:17990 -L 23:${IP}:23 access005.example.com</code></p>
<p><code>IP</code> is the iLO&#8217;s address. <code>-g</code> allows the port forwards to be reachable via other LAN hosts (eg: the VMware guest).  The <code>sudo</code> sorts the forwards for those super-privileged &lt; 1024 ports.</p>
<p>Yes, that really is port 23 &#8211; telnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/08/ilo-port-forwards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSSH&#8217;s SOCKS forwarding</title>
		<link>http://www.zomo.co.uk/2009/01/opensshs-socks-forwarding/</link>
		<comments>http://www.zomo.co.uk/2009/01/opensshs-socks-forwarding/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 16:32:21 +0000</pubDate>
		<dc:creator>lemon</dc:creator>
				<category><![CDATA[stash]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.zomo.co.uk/?p=126</guid>
		<description><![CDATA[It&#8217;s always great to discover a feature in a tool you use everyday. Someone pointed out to me that, in addition to local and remote port forwarding, OpenSSH also offers what it calls dynamic application-level port forwarding. Put more simply, OpenSSH can act as a local SOCKS proxy punting the traffic out the remote end [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always great to discover a feature in a tool you use everyday. Someone pointed out to me that, in addition to local and remote port forwarding, OpenSSH also offers what it calls dynamic application-level port forwarding. Put more simply, OpenSSH can act as a local SOCKS proxy punting the traffic out the remote end of the connection:</p>
<pre style="padding-left: 30px;">ssh -Dlocalhost:1080 -C host.example.com</pre>
<p>You can now aim your browser&#8217;s SOCKS settting at localhost:1080. Bonus points for using a locally-hosted PAC file to determine which traffic is routed via the proxy:</p>
<pre>function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*.example.com"))
    return "SOCKS 127.0.0.1:1080"
  else
    return "DIRECT";
}</pre>
<p>For getting sight of servers behind a firewall without remote proxies (hello <a href="http://www.privoxy.org/">Privoxy</a>) and continual browser fiddling this is ideal. Thanks Murb!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zomo.co.uk/2009/01/opensshs-socks-forwarding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
