
<?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>tek-ops &#187; Networking</title>
	<atom:link href="http://www.tek-ops.com/archives/category/networking/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tek-ops.com</link>
	<description></description>
	<lastBuildDate>Tue, 03 Nov 2009 02:20:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Building home OpenBSD router &#8211; Part 6</title>
		<link>http://www.tek-ops.com/archives/228</link>
		<comments>http://www.tek-ops.com/archives/228#comments</comments>
		<pubDate>Sun, 07 Dec 2008 01:07:57 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=228</guid>
		<description><![CDATA[Start at Part 1 The Multi Router Traffic Grapher (MRTG) Reference: Tobi Oetiker&#8217;s MRTG &#8211; The Multi Router Traffic Grapher To borrow a phrase from Tobi Oetiker, &#8220;You have a router, you want to know what it does all day long? Then MRTG is for you.&#8221; The goal here is to track the actions of [...]]]></description>
			<content:encoded><![CDATA[<p>Start at <a href="/archives/30">Part 1</a></p>
<h1>The Multi Router Traffic Grapher (MRTG)</h1>
<p><small>Reference: <a href="http://oss.oetiker.ch/mrtg/">Tobi Oetiker&#8217;s MRTG &#8211; The Multi Router Traffic Grapher</a></small></p>
<p><!--adsense--></p>
<p>To borrow a phrase from Tobi Oetiker, &#8220;You have a router, you want to know what it does all day long? Then MRTG is for you.&#8221;  The goal here is to track the actions of the OpenBSD router over time.  This practice is important for detecting trends in traffic, helpful for finding bottlenecks, and even identify a baseline to recognize abnormal changes in traffic.</p>
<p>So let&#8217;s get on with it.  For this example, I use OpenBSD&#8217;s MRTG package.  I&#8217;ll also install two packages required for IPv6, OpenBSD MRTG package requires them:</p>
<pre>mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/mrtg-2.15.2p1.tgz
mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/p5-Socket6-0.19.tgz
mschenck ~# sudo pkg_add http://mirror.rit.edu/pub/OpenBSD/4.3/packages/i386/p5-IO-INET6-2.01p0.tgz</pre>
<p>I should point out that you need an snmp daemon running for MRTG to pole stats from your router.  The enable this first you must add the following to &#8220;/etc/rc.conf.local&#8221;:</p>
<pre>snmpd_flags=""          # for normal use: ""</pre>
<p>This will enable snmpd to automatically start on reboot.  In the meantime, lets start it ourself</p>
<pre>mschenck ~#  sudo  /usr/sbin/snmpd</pre>
<p>By default, OpenBSD&#8217;s snmp daemon (<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=snmpd&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+4.3&amp;arch=i386&amp;format=html" target="_blank">snmpd(8)</a>) only listens on <em>localhost</em> and the default community string is &#8220;<em>public</em>&#8220;.  You can change these settings by modifying &#8221; /etc/snmpd.conf&#8221; (see <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=snmpd.conf&amp;sektion=5&amp;arch=i386&amp;apropos=0&amp;manpath=OpenBSD+4.3" target="_blank">snmpd.conf(5)</a>), however for this example we&#8217;ll stick with these default settings.</p>
<p>Now lets get an http daemon running to display these graphs.  OpenBSD come with Apache, lets enable and start it up.  Add the following line to /etc/rc.conf.local:</p>
<pre>httpd_flags=""          # for normal use: "" (or "-DSSL" after reading ssl(8))</pre>
<p>Again, lets avoid the reboot and just start the daemon manually:</p>
<pre>mschenck ~# sudo /usr/sbin/httpd</pre>
<p>Now, lets backup to original document root for apache and create a new one for displaying our mrtg graphs:</p>
<pre>mschenck ~# sudo mv /var/www/htdocs /var/www/htdocs-orig
mschenck ~# sudo mkdir -p /var/www/htdocs/cfg</pre>
<p>So now that we have MRTG and, the perl modules it requires, and an snmp daemon running and an http daemon up to display our graphs; we&#8217;re ready to start configuring.</p>
<pre>mschenck ~# sudo cfgmaker --global 'WorkDir: /var/www/htdocs'  \
          --global 'Options[_]: bits,growright' \
          --output /var/www/htdocs/cfg/mrtg.cfg    \
           public@localhost</pre>
<p>Now lets schedule the polling of our NICs&#8217; stats for the mrtg graphs.  I&#8217;m going to put the task to root&#8217;s crontab:</p>
<pre>mschenck ~# sudo crontab -u root -e</pre>
<p>And then add the following cron schedule:</p>
<pre>*/5 * * * *  /usr/local/bin/mrtg /var/www/htdocs/cfg/mrtg.cfg --logging /var/log/mrtg.log</pre>
<p>Now, just watch the data start collecting.</p>
<p><a href="http://www.tek-ops.com/wp-content/uploads/2008/12/puffy-mrtg.png"><img class="alignnone size-medium wp-image-237" title="puffy-mrtg" src="http://www.tek-ops.com/wp-content/uploads/2008/12/puffy-mrtg-600x592.png" alt="" width="600" height="592" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building home OpenBSD router &#8211; Part 5</title>
		<link>http://www.tek-ops.com/archives/172</link>
		<comments>http://www.tek-ops.com/archives/172#comments</comments>
		<pubDate>Fri, 15 Aug 2008 23:56:49 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=172</guid>
		<description><![CDATA[Start at Part 1 Xbox 360 and File Server access Reference: The Book of PF In this post I&#8217;ll describe how I accomplished two goals, as well as talk about a little trick for debugging what is blocked. The two goals are allowing my XBox 360 connect to Xbox Live through my OpenBSD firewall, and [...]]]></description>
			<content:encoded><![CDATA[<p>Start at <a href="../archives/30">Part 1</a></p>
<h1>Xbox 360 and File Server access</h1>
<p><small>Reference: <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FBook-PF-No-Nonsense-OpenBSD-Firewall%2Fdp%2F1593271654%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1218292051%26sr%3D8-1&amp;tag=tekopscom-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">The Book of PF</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=tekopscom-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" /><br />
</small></p>
<p><!--adsense--></p>
<p>In this post I&#8217;ll describe how I accomplished two goals, as well as talk about a little trick for debugging what is blocked.  The two goals are allowing my XBox 360 connect to Xbox Live through my OpenBSD firewall, and Port-forward to my file server so I can access my files remotely.</p>
<p>Let&#8217;s start with the Xbox 360.  This is very minimal change from <a href="/archives/107">Part 4</a>.  In Part 4 we created two macros for allowed client services, the services we allow hosts on our local network to utilize, see here:</p>
<pre>client_tcp_services = "{ ssh, smtp, domain, www, pop3, auth, https, pop3s, imap,
imaps, 8000, 8080, 5190, 5222 }"
client_udp_services = "{ domain, bootps, 67 }"</pre>
<p>The Xbox 360 uses TCP port 3074, and UDP ports 88 and 3074 so we just need to add these to those macros, seen here:</p>
<pre>client_tcp_services = "{ ssh, smtp, domain, www, pop3, auth, https, pop3s, imap, imaps, 8000, 8080, 5190, 5222, 3074 }"
client_udp_services = "{ domain, bootps, 67, 88, 3074  }"</pre>
<p>Next, I set up NAPT or Network Address Port Translation.  I redirect port 5022 on the external interface of my OpenBSD router to port 22 of my file server.  This will allow me to SSH, SFTP and RSYNC to/from it when I&#8217;m away from home.  To do this I need to add a single PF RDR rules, seen here:</p>
<pre># file server
rdr on $ext_if proto { tcp, udp } from any to $ext_if port 5022 -&gt; $file_server port 22</pre>
<p>Now I just reload my rules, first checking with pfctl -nf /etc/pf.conf as previously described, then loading with pfctl -f /etc/pf.conf.</p>
<p>One last thing is to describe a method for debugging why connections might be failing.  In <a href="/archives/107">Part 4</a> I described blocking all unintended traffic with &#8220;block all&#8221;.  For debugging I&#8217;m going to change this to &#8220;block log all&#8221;.</p>
<p>Now, when ever connectivity issues occur, debugging is simple running the following tcpdump:</p>
<pre># tcpdump -netvvi pflog0</pre>
<p>As log as no other lines are configured to log, all output from this command will just describe traffic being blocked.</p>
<p>Our final /etc/pf.conf for this part of the project:</p>
<pre># Interface Globals
ext_if = "rl0"
int_if = "xl0"
wifi_if = "rum0"

# Static machines
file_server = "192.168.0.2"
xbox = "192.168.0.3"

# Protocol Globals
router_daemons = "{ ssh, domain, ntp, bootps, 8080, 5022 }"
client_tcp_services = "{ ssh, smtp, domain, www, pop3, auth, https, pop3s, imap, imaps, 8000, 8080, 5190, 5222, 3074 }"
client_udp_services = "{ domain, bootps, 67, 88, 3074  }"

# Provide NATing for my local subnets
nat on $ext_if from $wifi_if:network to any -&gt; ($ext_if) static-port
nat on $ext_if from $int_if:network to any -&gt; ($ext_if)

# file server
rdr on $ext_if proto { tcp, udp } from any to $ext_if port 5022 -&gt; $file_server port 22

block log all
set skip on lo

# Allowed Client traffic
pass out on $ext_if proto tcp to any port $client_tcp_services
pass out on $ext_if proto udp to any port $client_udp_services

# Router services
pass proto icmp
pass quick inet proto { tcp, udp } to any port $router_daemons</pre>
<p>Continue to <a href="http://www.tek-ops.com/archives/228">Step 6</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/172/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building home OpenBSD router &#8211; Part 4</title>
		<link>http://www.tek-ops.com/archives/107</link>
		<comments>http://www.tek-ops.com/archives/107#comments</comments>
		<pubDate>Sun, 10 Aug 2008 19:46:29 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=107</guid>
		<description><![CDATA[Start at Part 1 &#8230; Let there be Traffic Reference: The Book of PF First I want to enable my router to forward my traffic. This is going to give me a baseline configuration of no filtering nor NATing. So to enable this I run: sysctl net.inet.ip.forwarding=1 sysctl net.inet6.ip.forwarding=1 Next I uncomment the following two [...]]]></description>
			<content:encoded><![CDATA[<p>Start at <a href="http://www.tek-ops.com/archives/30">Part 1</a></p>
<h1>&#8230; Let there be Traffic</h1>
<p><small><br />
Reference: <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FBook-PF-No-Nonsense-OpenBSD-Firewall%2Fdp%2F1593271654%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1218292051%26sr%3D8-1&amp;tag=tekopscom-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">The Book of PF</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=tekopscom-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" /><br />
</small></p>
<p><!--adsense--></p>
<p>First I want to enable my router to forward my traffic.  This is going to give me a baseline configuration of no filtering nor NATing.  So to enable this I run:</p>
<pre>sysctl net.inet.ip.forwarding=1
sysctl net.inet6.ip.forwarding=1</pre>
<p>Next I uncomment the following two lines in /etc/sysctl.conf to make this reboot-safe.</p>
<pre>net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of IPv4 packets
net.inet6.ip6.forwarding=1      # 1=Permit forwarding (routing) of IPv6 packets</pre>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FBook-PF-No-Nonsense-OpenBSD-Firewall%2Fdp%2F1593271654%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1218292051%26sr%3D8-1&amp;tag=tekopscom-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">The Book of PF</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=tekopscom-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" /> recommends using tests through out building up your environment, this is a good time to get baseline proof of functionality for these tests.</p>
<p>Next, I&#8217;m going to set up some macros in pf.conf to ease configuration changes in the future.  First my routers interfaces.</p>
<pre># Interface Globals
ext_if = "rl0"
int_if = "xl0"
wifi_if = "rum0"</pre>
<p>Next, I want to make variables for the two boxes that I setup MAC association in my DHCPD configs, My file server and my xbox, because they have special TCP and UDP port needs.</p>
<pre># Static machines
file_server = "192.168.0.2"
xbox = "192.168.0.3"</pre>
<p>Lastly, I&#8217;m defining which services sections.  I want to allow access to a few daemons running on the router itself, as well as allowing the hosts on my local subnets to utilize certain protocols themselves (as clients).</p>
<pre># Protocol Globals
router_daemons = "{ ssh, domain, ntp, bootps, 8080, 5022 }"
client_tcp_services = "{ ssh, smtp, domain, www, pop3, auth, https, pop3s, imap,
imaps, 8000, 8080, 5190, 5222 }"
client_udp_services = "{ domain, bootps, 67 }"</pre>
<p>Now it&#8217;s time to start off blocking everything so I add the statement to start off blocking all traffic, and add an exception to filtering on the loopback interface.</p>
<pre>block all
set skip on lo</pre>
<p>The location of this line is important.  All NAT/RDR lines will occur before this line, and all firewalling rules will occur after this line, so keep that in mind for future configurations.</p>
<p>Now I&#8217;m going to allow all traffic, from initiated from hosts on my local subnets, be sent out to the internet (their sessions are kept as well).</p>
<p>To do this I tell my router to NAT for my local subnets:</p>
<pre># Provide NATing for my local subnets
nat on $ext_if from $wifi_if:network to any -&gt; ($ext_if) static-port
nat on $ext_if from $int_if:network to any -&gt; ($ext_if)</pre>
<p>And then set which protocols are allowed to be passed out to the internet:</p>
<pre># Allowed Client traffic
pass out on $ext_if proto tcp to any port $client_tcp_services
pass out on $ext_if proto udp to any port $client_udp_services</pre>
<p>And I can&#8217;t forget about my router itself, so I&#8217;ll allow access to its daemons from both my local subnets as well as the outside world.</p>
<pre># Router services
pass proto icmp
pass quick inet proto { tcp, udp } to any port $router_daemons</pre>
<p>The last step is enable pf:</p>
<pre>pfctl -e</pre>
<p>And To make it reboot safe by uncommenting the following two lines in /etc/rc.conf</p>
<pre>pf=YES                  # Packet filter / NAT
pf_rules=/etc/pf.conf           # Packet filter rules file</pre>
<p>At this point, the file server cannot be access by the outside world, and connecting to xbox live isn&#8217;t going to happen.  These will be covered in the next part of my OpenBSD router project.</p>
<hr />
<p>Our final /etc/pf.conf for this part of the project:</p>
<pre># Interface Globals
ext_if = "rl0"
int_if = "xl0"
wifi_if = "rum0"

# Static machines
file_server = "192.168.0.2"
xbox = "192.168.0.3"

# Protocol Globals
router_daemons = "{ ssh, domain, ntp, bootps, 8080, 5022 }"
client_tcp_services = "{ ssh, smtp, domain, www, pop3, auth, https, pop3s, imap, imaps, 8000, 8080, 5190, 5222 }"
client_udp_services = "{ domain, bootps, 67 }"

# Provide NATing for my local subnets
nat on $ext_if from $wifi_if:network to any -&gt; ($ext_if) static-port
nat on $ext_if from $int_if:network to any -&gt; ($ext_if)

block all
set skip on lo

# Allowed Client traffic
pass out on $ext_if proto tcp to any port $client_tcp_services
pass out on $ext_if proto udp to any port $client_udp_services

# Router services
pass proto icmp
pass quick inet proto { tcp, udp } to any port $router_daemons</pre>
<p>Continue to <a href="/archives/172">Step 5</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building home OpenBSD router &#8211; Part 3</title>
		<link>http://www.tek-ops.com/archives/60</link>
		<comments>http://www.tek-ops.com/archives/60#comments</comments>
		<pubDate>Sun, 03 Aug 2008 23:51:46 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=60</guid>
		<description><![CDATA[Start at Part 1 Configuring DHCPD Reference: DHCPD(8) DHCPD.CONF(5) I will start off by telling dhcp that I would like to advertise on both local network interfaces. On OpenBSD this information is kept in /etc/dhcpd.interfaces. The syntax is very simple, you merely state which interfaces you want, whether space-separated on the same line or just [...]]]></description>
			<content:encoded><![CDATA[<p>Start at <a href="http://www.tek-ops.com/archives/30">Part 1</a></p>
<h1>Configuring DHCPD</h1>
<p><small><br />
Reference: <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=dhcpd&amp;sektion=8&amp;arch=i386&amp;apropos=0&amp;manpath=OpenBSD+Current">DHCPD(8</a>) <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=dhcpd.conf&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html">DHCPD.CONF(5)</a><br />
</small></p>
<p><!--adsense--></p>
<p>I will start off by telling dhcp that I would like to advertise on both local network interfaces.  On OpenBSD this information is kept in <em>/etc/dhcpd.interfaces</em>.  The syntax is very simple, you merely state which interfaces you want, whether space-separated on the same line or just give each their own line in the file (like I did).  Here&#8217;s my <em>/etc/dhcpd.interfaces</em>:</p>
<pre>
xl0
rum0
</pre>
<p>Now, lets set configure <em>/etc/dhcpd.conf</em>.  As I stated in <a href="http://www.tek-ops.com/archives/30">Part 1</a> I&#8217;ll be supporting two separate subnets, which I&#8217;ll create like this:</p>
<pre>
shared-network LOCAL-WIRELESS {
}
shared-network LOCAL-WIRED {
}
</pre>
<p>Nothing too crazy here, just two logical areas each labeled for ease of readability.</p>
<p>Since the local wireless section is pretty straight forward, I&#8217;ll do this one first.  I&#8217;m going to start off with a global (subnet-wide) optional configuration, which is my domain name server list.  <em>I&#8217;d like to out that I&#8217;m using <a href="http://www.opendns.com/">OpenDNS</a> in this example, and openly invite you to do the same.</em> So to make this configuration I&#8217;ll add the following line to the local wireless subnet area:</p>
<pre>option domain-name-servers 208.67.222.222, 208.67.220.220;</pre>
<p>Next I want everyone in the subnet to know which address to use for a gateway, so I&#8217;ll provide that configuration, seen here:</p>
<pre>option routers 192.168.1.1;</pre>
<p>Next is to set up the subnet which, as describe previously, is 192.168.0.1/24 and configured as follows:</p>
<pre>
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.32 192.168.1.127;
}
</pre>
<p>Here I&#8217;ve provided the range of offered IPs to be 192.168.1.32 up to and including 192.168.1.127, as well as provided gateway information to be given with the DHCP advertisements.</p>
<p>So now this whole subnet configuration will look like this:</p>
<pre>
shared-network LOCAL-WIRELESS {
option domain-name-servers 208.67.222.222, 208.67.220.220;
option routers 192.168.1.1;</pre>
<pre> subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.32 192.168.1.127;
}
}</pre>
<p>Now lets set up to local wired subnet.  For the most part it&#8217;s going to be the same.  Which appears like this:</p>
<pre>shared-network LOCAL-WIRED {
option domain-name-servers 208.67.222.222, 208.67.220.220;</pre>
<pre>
option routers 192.168.0.1;</pre>
<pre> subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.127;
}
}
</pre>
<p>However, on this subnet I have two systems in which I&#8217;ll static map IPs to based on their MAC address, my xbox 360 and my opensolaris file server.  So in this subnet setting, I&#8217;m creating a &#8220;group&#8221; and filling it in with the two hsots:</p>
<pre>group {
host vault {
hardware ethernet 00:1a:92:e2:32:e1;
fixed-address 192.168.0.2;
}
host xbox {
hardware ethernet 00:12:5a:b6:92:1b;
fixed-address 192.168.0.3;
}
}
</pre>
<p>To start dhcpd, just run <em>sudo dhcpd</em> and you&#8217;re be all set.  Lastly, to make this reboot safe we just need to edit <em>/etc/rc.conf</em> and set the <em>dhcpd_flags</em> to &#8220;&#8221; like this:</p>
<pre>
/etc/rc.conf:dhcpd_flags=""             # for normal use: ""
</pre>
<hr />Full <em>/etc/dhcpd.conf</em>:</p>
<pre>
shared-network LOCAL-WIRELESS {
    option domain-name-servers 208.67.222.222, 208.67.220.220;
    option routers 192.168.1.1;
    subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.32 192.168.1.127;
    }
}</pre>
<pre>
shared-network LOCAL-WIRED {
    option domain-name-servers 208.67.222.222, 208.67.220.220;
    option routers 192.168.0.1;

    subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.2 192.168.0.127;
    }
    group {
        host vault {
        hardware ethernet 00:1a:92:e2:32:e1;
        fixed-address 192.168.0.2;
    }
    host xbox {
        hardware ethernet 00:12:5a:b6:92:1b;
        fixed-address 192.168.0.3;
    }
}
}
</pre>
<p>Continue to <a href="http://www.tek-ops.com/archives/107">Step 4</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/60/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building home OpenBSD router &#8211; Part 2</title>
		<link>http://www.tek-ops.com/archives/46</link>
		<comments>http://www.tek-ops.com/archives/46#comments</comments>
		<pubDate>Wed, 30 Jul 2008 02:40:32 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=46</guid>
		<description><![CDATA[Start at Part 1 Configuring the Interfaces First step is to configure the interfaces. My external interface is rl0 (&#8220;Realtek 8139&#8243; &#8211; you can see dmesg below), my internal wired interface is xl0 (&#8220;3Com 3c905B 100Base-TX&#8221;), and my wireless interface is rum0 (&#8220;Ralink 802.11 bg WLAN&#8221;). As I stated in Part 1 the external interface [...]]]></description>
			<content:encoded><![CDATA[<p>Start at <a href="http://www.tek-ops.com/archives/30">Part 1</a></p>
<h1>Configuring the Interfaces</h1>
<p><!--adsense--></p>
<p>First step is to configure the interfaces.  My external interface is rl0 (&#8220;Realtek 8139&#8243; &#8211; you can see dmesg below),  my internal wired interface is xl0 (&#8220;3Com 3c905B 100Base-TX&#8221;), and my wireless interface is rum0 (&#8220;Ralink 802.11 bg WLAN&#8221;).</p>
<p>As I stated in <a href="http://www.tek-ops.com/archives/30">Part 1</a> the external interface (rl0) will be a dhcp client to my cable ISP.  To configure this, I created /etc/hostname.rl0 with the following information:</p>
<pre>
dhcp NONE NONE description "Global Uplink"
</pre>
<p><em>ifconfig rl0</em> looks like this:</p>
<pre>
rl0: flags=8843 mtu 1500
lladdr 00:0d:87:07:07:56
description: Global Uplink
groups: egress
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet6 fe80::20d:87ff:fe07:756%rl0 prefixlen 64 scopeid 0x2
inet  netmask 0xfffffe00 broadcast 255.255.255.255
</pre>
<p>Next the internal wired interface (xl0);  will be statically configured with the address 192.168.0.1 with a 24 bit subnet mask, later this interface while be advertising DHCP service for the wired local network.  I created /etc/hostname.xl0 like this:</p>
<pre>
inet 192.168.0.1 255.255.255.0 192.168.0.255 description "Local Wired"
</pre>
<p><em>ifconfig xl0</em>:</p>
<pre>
xl0: flags=8843 mtu 1500
lladdr 00:10:5a:0e:da:9a
description: Local Wired
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::210:5aff:fe0e:da9a%xl0 prefixlen 64 scopeid 0x1
</pre>
<p>And lastly the wireless interface (rum0).  This interface is being set up as a wireless access point (&#8220;hostap&#8221;) configured as follows:</p>
<ul>
<li> Will be set to only support 802.11B for the time being</li>
<li>Utilizing channel 6</li>
<li>Use a hex WEP key</li>
<li>Configured as 192.168.1.1 with a 24 bit netmask</li>
<li>And later will be advertising DHCP for the local wireless network</li>
</ul>
<p>My /etc/hostname.rum0 looks like this:</p>
<pre>
up mediaopt hostap mode 11b chan 6 nwid Puffy nwkey 0x
inet 192.168.1.1
</pre>
<p><em>ifconfig rum0</em>:</p>
<pre>
rum0: flags=8843 mtu 1500
lladdr 00:1c:f0:90:82:22
groups: wlan
media: IEEE802.11 autoselect mode 11b hostap
status: active
ieee80211: nwid Puffy chan 6 bssid 00:1c:f0:90:82:22 nwkey 0x 100dBm
inet6 fe80::21c:f0ff:fe90:8222%rum0 prefixlen 64 scopeid 0x5
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
</pre>
<hr />The &#8216;dmesg&#8217; output:</p>
<pre>
OpenBSD 4.3 (GENERIC) #698: Wed Mar 12 11:07:05 MDT 2008
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: VIA Ezra ("CentaurHauls" 686-class) 801 MHz
cpu0: FPU,DE,TSC,MSR,MTRR,PGE,MMX
real mem  = 259555328 (247MB)
avail mem = 242909184 (231MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 03/17/03, BIOS32 rev. 0 @ 0xfb390, SMBIOS rev. 2.2 @ 0xf0800 (43 entries)
bios0: vendor Phoenix Technologies, LTD version "6.00 PG" date 03/17/2003
bios0: VIA Technologies, Inc. VT8601
apm0 at bios0: Power Management spec V1.2 (slowidle)
apm0: AC on, battery charge unknown
acpi at bios0 function 0x0 not configured
pcibios0 at bios0: rev 2.1 @ 0xf0000/0xdd54
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfdce0/112 (5 entries)
pcibios0: PCI Exclusive IRQs: 5 10 11 12
pcibios0: PCI Interrupt Router at 000:07:0 ("VIA VT82C596A ISA" rev 0x00)
pcibios0: PCI bus #1 is the last bus
bios0: ROM list: 0xc0000/0xc000 0xcc000/0x4000! 0xd0000/0x4000
cpu0 at mainbus0
pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
pchb0 at pci0 dev 0 function 0 "VIA VT8601 PCI" rev 0x05
agp0 at pchb0: v2, aperture at 0xe0000000, size 0x10000000
ppb0 at pci0 dev 1 function 0 "VIA VT82C601 AGP" rev 0x00
pci1 at ppb0 bus 1
vga1 at pci1 dev 0 function 0 "Trident CyberBlade i1" rev 0x6a
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
pcib0 at pci0 dev 7 function 0 "VIA VT82C686 ISA" rev 0x40
pciide0 at pci0 dev 7 function 1 "VIA VT82C571 IDE" rev 0x06: ATA100, channel 0 configured to compatibility, channel 1 configured to compatibility
wd0 at pciide0 channel 0 drive 1: &lt;QUANTUM FIREBALLlct15 15&gt;
wd0: 16-sector PIO, LBA, 14324MB, 29336832 sectors
wd0(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 4
pciide0: channel 1 ignored (disabled)
uhci0 at pci0 dev 7 function 2 "VIA VT83C572 USB" rev 0x1a: irq 11
uhci1 at pci0 dev 7 function 3 "VIA VT83C572 USB" rev 0x1a: irq 11
viaenv0 at pci0 dev 7 function 4 "VIA VT82C686 SMBus" rev 0x40: 24-bit timer at 3579545Hz
xl0 at pci0 dev 8 function 0 "3Com 3c905B 100Base-TX" rev 0x24: irq 10, address 00:10:5a:0e:da:9a
exphy0 at xl0 phy 24: 3Com internal media interface
rl0 at pci0 dev 14 function 0 "Realtek 8139" rev 0x10: irq 11, address 00:0d:87:07:07:56
rlphy0 at rl0 phy 0: RTL internal PHY
cmpci0 at pci0 dev 15 function 0 "C-Media Electronics CMI8738/C3DX Audio" rev 0x10: irq 12
audio0 at cmpci0
opl0 at cmpci0: model OPL3
midi0 at opl0: &lt;CMPCI Yamaha OPL3&gt;
mpu at cmpci0 not configured
"C-Media Electronics HSP56 AMR" rev 0x20 at pci0 dev 15 function 1 not configured
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
midi1 at pcppi0: &lt;PC speaker&gt;
spkr0 at pcppi0
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
usb0 at uhci0: USB revision 1.0
uhub0 at usb0 "VIA UHCI root hub" rev 1.00/1.00 addr 1
usb1 at uhci1: USB revision 1.0
uhub1 at usb1 "VIA UHCI root hub" rev 1.00/1.00 addr 1
biomask ebed netmask efed ttymask efef
rum0 at uhub0 port 2 "Ralink 802.11 bg WLAN" rev 2.00/0.01 addr 2
rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528, address 00:1c:f0:90:82:22
softraid0 at root
root on wd0a swap on wd0b dump on wd0b
</pre>
<p>Continue to <a href="http://www.tek-ops.com/archives/60">Step 3</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building home OpenBSD router &#8211; Part 1</title>
		<link>http://www.tek-ops.com/archives/30</link>
		<comments>http://www.tek-ops.com/archives/30#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:01:17 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=30</guid>
		<description><![CDATA[Planning the Project Specs Goals: - Two local subnets, Wired and Wireless - Support Xbox Live - Provide external access to my file server - Limit all communication out of my network strictly to the applications and services I choose to allow (web traffic, mail traffic, ssh, xbox, torrents, etc) - Improved stability over the [...]]]></description>
			<content:encoded><![CDATA[<h1>Planning the Project Specs</h1>
<p><!--adsense--></p>
<p><strong>Goals:</strong></p>
<p>- Two local subnets, Wired and Wireless</p>
<p>- Support Xbox Live</p>
<p>- Provide external access to my file server</p>
<p>- Limit all communication out of my network strictly to the applications and services I choose to allow (web traffic, mail traffic, ssh, xbox, torrents, etc)</p>
<p>- Improved stability over the over-the-counter home routers</p>
<p>- Shape traffic using ALTQ</p>
<p><strong>Resources:</strong></p>
<p>- For the Operating System, I&#8217;m going with OpenBSD 4.3 (STABLE)</p>
<p>- Putting to use my MaxTerm 8300B</p>
<ul>
<li>EVE-M 800 mhz (x86)</li>
<li>256 MB of RAM</li>
<li>15 GB IDE hard drive (spare one sitting around)</li>
<li>D-Link USB  Wireless Card (rum0 driver in OpenBSD) for local wireless traffic</li>
<li>Spare old 3com 10/100 Mbit NIC for local wired traffic</li>
</ul>
<div>- For reference, I&#8217;m using &#8220;The Book of PF&#8221;.</p>
<p>This has been a great read and an excellent resource in the planning stages of this project for me.  For anyone who doesn&#8217;t already have a copy, I can not recommend this book enough.  Heres a link for picking it up from Amazon. (it&#8217;s probably be the cheapest part of this project)</p></div>
<p><strong>The Plan:</strong></p>
<ul>
<li>Local wired traffic: 192.168.0.X/24</li>
<li>Local wireless traffic: 192.168.1.X/24</li>
<li>Provide DHCP services on both local interfaces</li>
<li>External Interface running DHCP</li>
<li>Starting with blocking everything [block all]</li>
<li>Designate IPs per server and personal computer on my network</li>
<li>Designate torrent ports to each of the personal computers</li>
<li>Initially just use WEP for proof of concept, <a href="http://undeadly.org/cgi?action=article&amp;sid=20080416195151">later use WPA</a> or even an authpf with a possible web interface for authenticating</li>
<li>Perform MRTG graphing if for nothing more than to see what I spend my bandwidth doing</li>
</ul>
<p>Continue to <a href="http://www.tek-ops.com/archives/46">Part 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/30/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AppleTalk on Solaris (AFP)</title>
		<link>http://www.tek-ops.com/archives/20</link>
		<comments>http://www.tek-ops.com/archives/20#comments</comments>
		<pubDate>Mon, 28 Jul 2008 02:45:03 +0000</pubDate>
		<dc:creator>Michael Schenck</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://www.tek-ops.com/?p=20</guid>
		<description><![CDATA[AppleTalk has been quite a popular choice for networking computers mainly because it&#8217;s, well, made by Apple. It was supposedly made solely for Apple computers but the Internet folks have never been one to settle for should be&#8217;s and would rather run after could be&#8217;s. If cheap mobile phones today can be hacked to become [...]]]></description>
			<content:encoded><![CDATA[<p>AppleTalk has been quite a popular choice for networking computers mainly because it&#8217;s, well, made by Apple. It was supposedly made solely for Apple computers but the Internet folks have never been one to settle for should be&#8217;s and would rather run after could be&#8217;s. If <a href="http://www.o2.co.uk">cheap mobile phones</a> today can be hacked to become as efficient as high-end phones, why not try making AppleTalk work on other operating systems right? That&#8217;s what we&#8217;re aiming to do on this page, make AppleTalk work on Solaris.<br />
<!--adsense--></p>
<h4>[Taken from:  <a href="http://www.unixzone.dk/unix/20060122/appletalk-on-solaris/"> www.unixzone.dk</a>]</h4>
<p>Netatalk 2.0.3 requires some patching to compile on Solaris 10 (or OpenSolaris)</p>
<ul>Requirements:</p>
<li><a href="http://netatalk.sourceforge.net/">netatalk</a></li>
<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/db/index.html">Berkeley DB 4.2.52</a></li>
<li>GCC compiler, Sun Studio didn&#8217;t work for me</li>
<li><a href="http://tek-ops.com/files/patches.tar.gz">Patches</a>:       netatalk-2.0.3/sys/netatalk/at.h and netatalk-2.0.3/sys/solaris/tpi.c</li>
</ul>
<h3>Click <a href="http://tek-ops.com/txts/build_db.html">&lt;HERE&gt;</a> for build instructions       for DB</h3>
<p>On Solaris we don&#8217;t use ranlib, LDFLAGS adds /usr/local/lib to the<br />
library search path where my Berkeley DB libs are , rest of the options<br />
are self-explanatory.</p>
<pre> # gzip -cd netatalk-2.0.3.tar.gz | tar xf -
# gzip -cd patches.tar.gz | tar xf -
# cd netatalk-2.0.3
# RANLIB=echo CC=gcc LDFLAGS=-R/usr/local/BerkeleyDB.4.2/lib
./configure --prefix=/opt/netatalk --with-ssl-dir=/usr/sfw
--with-bdb=/usr/local/BerkeleyDB.4.2 --without-pam --disable-ddp
--disable-tcp-wrappers  --disable-srvloc --with-cnid-dbd-backend
# echo "#define SOLARIS2 10" &gt;&gt;config.h</pre>
<p>Depending on the version of your Solaris installation, you&#8217;ll want to<br />
change this to match, ie. 8, 9, 10, or 11 for OpenSolaris.</p>
<h4>Patch the source to support x64 Solaris</h4>
<pre> # patch -i ../patches/at.h.patch sys/netatalk/at.h
Looks like a unified context diff.
done
#  patch -i ../patches/config.h.patch ./config.h
Looks like a normal diff.
done
# patch -i ../patches/endian.h.patch sys/netatalk/endian.h
Looks like a normal diff.
done
# patch -i ../patches/tpi.c.patch sys/solaris/tpi.c
Looks like a unified context diff.
done</pre>
<h4>Build and install the software</h4>
<pre> # make
# make install</pre>
<p>Under Solaris, you must create atalkd.conf, since Solaris provides no<br />
method for determining the names of the available interfaces. It is<br />
sufficent to name the available interfaces in atalkd.conf, one per line.<br />
E.g.<br />
eri0<br />
on a line by itself on many Suns, hme0 on Ultras etc. See atalkd(8).</p>
<h4>Create init script and add to Sun&#8217;s svc system</h4>
<pre> # cp distrib/initscripts/rc.atalk.sysv /opt/local/lib/svc/method/netatalk</pre>
<p>Place <a href="http://tek-ops.com/files/netatalk.xml">netatalk.xml</a> somewhere on the file system</p>
<pre> # svccfg import /path/to/netatalk.xml
# svcadm enable netatalk
# rm /path/to/netatalk.xml</pre>
<h4>Now for configuration:</h4>
<pre> # cd /opt/netatalk/etc/netatalk/
# ls -l
total 96
-rw-r--r--   1 root     root       5066   Apr  4 15:21 AppleVolumes.default
-rw-r--r--   1 root     root       25124  Apr  2 14:49 AppleVolumes.system
-rw-r--r--   1 root     root       11259  Apr  4 14:59 afpd.conf
-rw-r--r--   1 root     root       1059   Apr  4 11:57 atalkd.conf
-rw-r--r--   1 root     root       1429   Apr  4 15:01 netatalk.conf
-rw-r--r--   1 root     root       1479   Apr  2 14:49 papd.conf
drwxr-xr-x   2 root     root       512    Apr  3 11:49 uams
#</pre>
<h4>Add the following to &#8220;afpd.conf&#8221;:</h4>
<pre> "Solaris AFP" -uamlist uams_guest.so -loginmesg "Welcome, $u!" -transall -noddp -tcp</pre>
<h4>Configure “netatalk.conf” as seen here:</h4>
<pre> # Appletalk configuration
# Change this to increase the maximum number of clients that can connect:
AFPD_MAX_CLIENTS=50

# Change this to set the machine’s atalk name and zone, the latter containing
# the ‘@’ sign as first character — compare with nbp_name(3) if in doubt
#
# NOTE: If Netatalk should register AppleTalk services in the standard zone
#       then you need not to specify a zone name here.

#
#       If your zone has spaces in it, you’re better off specifying
#       it in afpd.conf if you realize that your distribution doesn’t
#       handle spaces correctly in the startup script. Remember to use
#       quotes here if the zone name contains spaces.
#
#ATALK_ZONE=”@some zone”
ATALK_NAME=`echo ${HOSTNAME}|cut -d. -f1`
# specify the Mac and unix charsets to be used

ATALK_MAC_CHARSET=’MAC_ROMAN’
ATALK_UNIX_CHARSET=’LOCALE’
# specify this if you don’t want guest, clrtxt, and dhx
# available options: uams_guest.so, uams_clrtxt.so, uams_dhx.so,
#                    uams_randnum.so
#AFPD_UAMLIST=”-U uams_clrtxt.so,uams_dhx.so”
# Change this to set the id of the guest user
AFPD_GUEST=nobody
# Set which daemons to run (papd is dependent upon atalkd):

ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no
# Control whether the daemons are started in the background
ATALK_BGROUND=no
# export the charsets, read form ENV by apps

export ATALK_MAC_CHARSET
export ATALK_UNIX_CHARSET</pre>
<h4>Add the following to “AppleVolumes.default”:</h4>
<pre> :DEFAULT: cnidscheme:dbd
/Storage "Storage" rwlist:nobody</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tek-ops.com/archives/20/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
