<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet ResTek</title>
	<link>http://planet.restek.wwu.edu/</link>
	<language>en</language>
	<description>Planet ResTek - http://planet.restek.wwu.edu/</description>

<item>
	<title>Gordon Stratton: IPv6-enabled home network with OpenBSD</title>
	<guid>http://canonical.wordpress.com/?p=15</guid>
	<link>http://canonical.wordpress.com/2008/07/02/ipv6-enabled-home-network-with-openbsd/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;My goal is to make my home network as simple as possible, but not to use IPv6 exclusively. That said, wherever possible I have enabled and preferred IPv6 to shake out any issues and to see where things can be improved. I try to mimic a &amp;#8220;realistic&amp;#8221; dual stack environment because that is the most useful balance to me so that I can continue to get things done while automatically preferring IPv6 wherever possible.&lt;/p&gt;
&lt;p&gt;Here is a simple ASCII diagram of my physical network:&lt;/p&gt;
&lt;pre&gt;[ LAN ] &amp;#8212; [ WAP/switch ] &amp;#8212; [ OpenBSD 4.3 ] &amp;#8212; { Internet }&lt;/pre&gt;
&lt;p&gt;The end result for those that don&amp;#8217;t want to read the whole thing is an extremely stable and functional LAN that supports IPv6-enabled devices easily and automatically without denying anything to IPv4-only hosts. Windows Vista clients, for example, can simply plug in or associate with my WAP and have IPv6 connectivity with &lt;strong&gt;zero&lt;/strong&gt; configuration. I realize this is relatively trivial (and hopefully my explanation is as trivial) but I feel like this is important: I commonly hear that IPv6 is very difficult to use or difficult to set up. While there are some things you need to know to set up an IPv6 network (as with IPv4), there is (or rather, should be) &lt;strong&gt;absolutely nothing&lt;/strong&gt; you need to know as a client in a properly configured dual-stack environment. When a user decides to go to &lt;a href=&quot;http://freebsd.org&quot;&gt;freebsd.org&lt;/a&gt; they should need to do a little sleuthing to figure out that most, if not all, of their network communication just took place over IPv6 ;) &lt;/p&gt;
&lt;p&gt;I will go through the steps I took (neatly sidestepping the mistakes I made&amp;#8230;) to set this up as well as posting any relevant configuration files I have. I&amp;#8217;ll try to keep this segmented into easily visible sections, because I don&amp;#8217;t like splitting this kind of thing up into multiple blog posts. Additionally, before I begin, I am going to use &lt;strong&gt;example&lt;/strong&gt; IPv6 addresses within the &lt;a href=&quot;http://tools.ietf.org/html/rfc3849&quot;&gt;RFC 3849&lt;/a&gt; documentation-use-only IPv6 prefix, and &lt;strong&gt;example&lt;/strong&gt; IPv4 addresses from TEST-NET described in &lt;a href=&quot;http://tools.ietf.org/html/rfc3330&quot;&gt;RFC 3330&lt;/a&gt; instead of my own. The IPv6 documentation prefix is &lt;code&gt;2001:db8::/32&lt;/code&gt; and IPv4 TEST-NET is &lt;code&gt;192.0.2.0/24&lt;/code&gt;. I will use my private addresses (in &lt;code&gt;10.0.0.0/8&lt;/code&gt; address space) as they actually are configured on my home network. What does this mean for you? Quoting from RFC 3849, &amp;#8220;[a]ddresses within this block should not appear on the public Internet,&amp;#8221; so don&amp;#8217;t expect any of these addresses to work for you without altering them!&lt;/p&gt;
&lt;h3&gt;Step 1: Check configuration&lt;/h3&gt;
&lt;p&gt;Since this post is about OpenBSD, I&amp;#8217;m using OpenBSD as an example. First of all, there are some &lt;code&gt;sysctl&lt;/code&gt; options to be sure you have set to allow you to forward packets and be a well-behaved router.&lt;/p&gt;
&lt;h4&gt;/etc/sysctl.conf&lt;/h4&gt;
&lt;pre&gt;
# 1=Permit forwarding (routing) of IPv4 packets
net.inet.ip.forwarding=1

# 1=Permit forwarding (routing) of IPv6 packets
net.inet6.ip6.forwarding=1

# 1=Permit IPv6 autoconf (forwarding must be 0)
net.inet6.ip6.accept_rtadv=0
&lt;/pre&gt;
&lt;p&gt;Next, make sure you have a &lt;code&gt;pf.conf&lt;/code&gt; that you are content with, because in a minute you will (hopefully) become connected via IPv6. Here is a barebones &lt;code&gt;pf.conf&lt;/code&gt; which is a literal copy and paste from the &lt;code&gt;pf.conf&lt;/code&gt; currently on my OpenBSD box. &lt;strong&gt;If you&amp;#8217;re thinking about copying and pasting this, please make sure it matches your security policies. I like my &lt;code&gt;pf.conf&lt;/code&gt; to be more liberal than many people, so if you don&amp;#8217;t understand what this does I would recommend &lt;code&gt;man 5 pf.conf&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;/etc/pf.conf&lt;/h4&gt;
&lt;pre&gt;
# Macros
ext_if=&quot;rl0&quot;
int_if=&quot;xl0&quot;

# Tables

# Options
set block-policy return
set skip on lo

# Normalization
scrub in
scrub out

# Queuing

# Translation
nat on $ext_if inet from ! ($ext_if) -&amp;gt; ($ext_if)

# Filtering
pass in
pass out
&lt;/pre&gt;
&lt;p&gt;Make sure &lt;code&gt;pf&lt;/code&gt; is enabled:&lt;/p&gt;
&lt;pre&gt;pfctl -e&lt;/pre&gt;
&lt;p&gt;and that your ruleset is loaded:&lt;/p&gt;
&lt;pre&gt;pfctl -f /etc/pf.conf&lt;/pre&gt;
&lt;p&gt;where &lt;code&gt;/etc/pf.conf&lt;/code&gt; is the location of your &lt;code&gt;pf.conf&lt;/code&gt; (this is default).&lt;/p&gt;
&lt;h3&gt;Step 2: Get connected&lt;/h3&gt;
&lt;p&gt;If you&amp;#8217;re in the USA, statistically you probably do not have native IPv6 connectivity. This is a little unfortunate, but thankfully there are organizations who are willing to allow us to use their services to tunnel IPv6 over the existing IPv4 network to get to their point of presence, and from there the traffic can travel over the IPv6 internet. While this is not ideal, this will have to do for most of us. If you have native IPv6 connectivity, you&amp;#8217;re probably laughing at me :)&lt;/p&gt;
&lt;p&gt;I used &lt;a href=&quot;http://tunnelbroker.net&quot;&gt;Hurricane Electric&lt;/a&gt; as my tunnel broker. Once I was signed up, I asked for a /64. One nice thing about Hurricane Electric (and this might be true for other tunnel brokers as well, I have no idea) is that they provide customized configurations for nearly any operating system.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll explain more about this later, but I&amp;#8217;d like to show the information Hurricane Electric gave me here (using the example prefixes instead of mine) so you can tell how to apply this to your own tunnel (and I&amp;#8217;m sure other tunnel brokers do it similarly). Hopefully the explanation afterward will give these values some meaning if they don&amp;#8217;t already make sense to you:&lt;/p&gt;
&lt;pre&gt;
Server IPv4 address:    192.0.2.74
Server IPv6 address:    2001:db8:1f04:4c9::1/64
Client IPv4 address:    192.0.2.44
Client IPv6 address:    2001:db8:1f04:4c9::2/64
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt; marks Hurricane Electric&amp;#8217;s IPv4 and IPv6 tunnel endpoints, and &lt;strong&gt;Client&lt;/strong&gt; marks my IPv4 and IPv6 tunnel endpoints.&lt;/p&gt;
&lt;p&gt;Since I&amp;#8217;m setting up my OpenBSD 4.3 box as one of the endpoints of the tunnel, I selected OpenBSD and had them generate a configuration based on the assigned addresses. Here was the configuration generated for me (note the line continuation):&lt;/p&gt;
&lt;pre&gt;
ifconfig gif0 tunnel 192.0.2.44 192.0.2.74
ifconfig gif0 inet6 alias 2001:db8:1f04:4c9::2 \
                          2001:db8:1f04:4c9::1 prefixlen 128
route -n add -inet6 default 2001:db8:1f04:4c9::1
&lt;/pre&gt;
&lt;p&gt;You could happily copy and paste this, but chances are if you&amp;#8217;ve read this far you&amp;#8217;re going to want to know what exactly this is doing. I know I did, as I don&amp;#8217;t like to simply copy and paste configuration from other people without knowing what it does first. The following is kind of verbose, but it might help some people to understand better what the above commands mean.&lt;/p&gt;
&lt;p&gt;The first line says &amp;#8220;&lt;code&gt;ifconfig&lt;/code&gt;, I want to operate on a generic tunneling interface (&lt;code&gt;gif0&lt;/code&gt;, &lt;code&gt;man 4 gif&lt;/code&gt; for more information) to create a &lt;code&gt;tunnel&lt;/code&gt; from my IPv4 address assigned to me by my ISP (&lt;code&gt;192.0.2.44&lt;/code&gt;) to another IPv4 address somewhere else on the internet (&lt;code&gt;192.0.2.74&lt;/code&gt;).&amp;#8221; The tunnel concept is no more complex than thinking of a virtual tube that connects two points. While the internet may route the physical packets between the two endpoints 30 hops around the world, as far as the logic is concerned, the tunnels are directly connected. You can think of this tunnel as the underlying &amp;#8220;road&amp;#8221; or transport on top of which our IPv6 packets will travel to get to a place &lt;strong&gt;where they can be routed natively&lt;/strong&gt;, as we (I) do not yet have native IPv6 connectivity to the internet.&lt;/p&gt;
&lt;p&gt;The next line says &amp;#8220;&lt;code&gt;ifconfig&lt;/code&gt;, I want to operate on &lt;code&gt;gif0&lt;/code&gt; again, this time specifying things about IPv6 (&lt;code&gt;inet6&lt;/code&gt;). I would like to create a new address for this interface as opposed to altering any existing addresses (&lt;code&gt;alias&lt;/code&gt;), and I would like this address to be &lt;code&gt;2001:db8:1f04:4c9::2&lt;/code&gt;. Since we&amp;#8217;re talking about a tunnel, I want the other end (Hurricane Electric&amp;#8217;s end) of my tunnel to be &lt;code&gt;2001:db8:1f04:4c9::1&lt;/code&gt;. Finally, since I&amp;#8217;m dealing with just a single host address on a point-to-point link, I will use &lt;code&gt;prefixlen 128&lt;/code&gt;.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Dead simple so far, right? The last line says &amp;#8220;I&amp;#8217;d like to adjust my routing tables (&lt;code&gt;route -n&lt;/code&gt;, don&amp;#8217;t worry about the -n for now but you can read the man page for &lt;code&gt;route(8)&lt;/code&gt; if you&amp;#8217;re curious) to &lt;code&gt;add&lt;/code&gt; an IPv6 (&lt;code&gt;-inet6&lt;/code&gt;) route which will be my &lt;code&gt;default&lt;/code&gt; route (if my machine doesn&amp;#8217;t know exactly where to send packets, they go here), and I want them to head toward the &amp;#8220;far end&amp;#8221; of my tunnel which is &lt;code&gt;2001:db8:1f04:4c9::1&lt;/code&gt;, where hopefully they&amp;#8217;ll eventually be routed and arrive at their destination.&amp;#8221; Note here that we specify the &amp;#8220;far end&amp;#8221; of the tunnel. We want our packets to go &lt;strong&gt;through&lt;/strong&gt; the tunnel to the other end where they&amp;#8217;ll be picked up by Hurricane Electric, not simply go to our end of the tunnel and stop short of their destination.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gif(4)&lt;/code&gt; is a neat little pseudo-interface that can encapsulate any combination of IPv6 or IPv4 packets based on how it is configured. Now that we&amp;#8217;ve set up a &lt;code&gt;gif(4)&lt;/code&gt; interface (&lt;code&gt;gif0&lt;/code&gt; above), it will see that since the tunnel is set up via IPv4 (the first line above) that IPv6 packets traveling through it need to get encapsulated inside IPv4 packets so they can be routed through the IPv4 internet. Once they reach Hurricane Electric at the other end, Hurricane Electric&amp;#8217;s endpoint is set up to unpack (decapsulate) the packets and route them over the native IPv6 internet to their destination. The reverse happens exactly as you&amp;#8217;d expect; IPv6 packets encapsulated in IPv4 packets coming in from the Hurricane Electric tunnel to our &lt;code&gt;gif(4)&lt;/code&gt; interface get decapsulated and shuffled across our LAN to their destination as IPv6 packets.&lt;/p&gt;
&lt;p&gt;At this point, you&amp;#8217;ll want to assign your own IPv6 addresses to your interfaces so that you can access them via IPv6. You must assign these addresses out of the available allocated space. Working from our examples so far, these are some example valid addresses:&lt;/p&gt;
&lt;pre&gt;
2001:db8:1f04:4c9::10
2001:db8:1f04:4c9::dead:beef
2001:db8:1f04:4c9::420
&lt;/pre&gt;
&lt;p&gt;You can use &lt;code&gt;ifconfig inet6 alias&lt;/code&gt; to do such configuration and an example, for completeness, of assigning an address to one of your interfaces might be&lt;/p&gt;
&lt;pre&gt;
ifconfig xl0 inet6 alias 2001:db8:1f04:4c9::10 prefixlen 64
&lt;/pre&gt;
&lt;h3&gt;Step 3: Advertise&lt;/h3&gt;
&lt;p&gt;Now that we&amp;#8217;re ready to go and you&amp;#8217;ve verified that you can do something like:&lt;/p&gt;
&lt;pre&gt;
ping6 ipv6.google.com
&lt;/pre&gt;
&lt;p&gt;and you get replies, you can move on to telling other IPv6 capable hosts on your network about your connectivity, and how they can get some. OpenBSD ships with &lt;code&gt;rtadvd&lt;/code&gt; (&lt;strong&gt;r&lt;/strong&gt;ou&lt;strong&gt;t&lt;/strong&gt;er &lt;strong&gt;adv&lt;/strong&gt;ertisement &lt;strong&gt;d&lt;/strong&gt;aemon) which we will use for exactly this purpose.&lt;/p&gt;
&lt;p&gt;Again, the configuration file first:&lt;/p&gt;
&lt;h4&gt;/etc/rtadvd.conf&lt;/h4&gt;
&lt;pre&gt;
xl0:\
        :addr=&quot;2001:db8:1f04:4c9::&quot;:prefixlen#64:raflags#64:
&lt;/pre&gt;
&lt;p&gt;It might look like noise at first, so I&amp;#8217;ll break it down. &lt;code&gt;man 5 rtadvd.conf&lt;/code&gt; will be useful for more details.&lt;/p&gt;
&lt;p&gt;Each field in this configuration file is separated by a &lt;code&gt;:&lt;/code&gt; character. The first line starts off with an interface that &lt;code&gt;rtadvd&lt;/code&gt; is going to advertise on. You may notice that &lt;code&gt;xl0&lt;/code&gt; is my internal interface from my &lt;code&gt;pf.conf&lt;/code&gt;. This is because I want &lt;code&gt;rtadvd&lt;/code&gt; to advertise the information that follows on my LAN. The backslash and whitespace that follows is simply to make it easy to track things in a large file; they are completely optional. The next section is &lt;code&gt;addr=&quot;2001:db8:1f04:4c9::&quot;&lt;/code&gt;. This gives the address prefix to advertise to hosts. With IPv6, you advertise a prefix of some length and the hosts then fill in the rest themselves. Therefore I am advertising the prefix for the network you saw above. The next section is &lt;code&gt;prefixlen#64&lt;/code&gt;. You may notice that string values are distinguished from their corresponding identifiers with &lt;code&gt;=&lt;/code&gt; and numeric values are distinguished with &lt;code&gt;#&lt;/code&gt;. This &lt;code&gt;prefixlen&lt;/code&gt; section tells hosts how long the prefix that I&amp;#8217;m advertising is. As the address &lt;code&gt;2001:db8:1f04:4c9::&lt;/code&gt; expands to &lt;code&gt;2001:db8:1f04:4c9:0000:0000:0000:0000&lt;/code&gt;, I have to say which part of that I&amp;#8217;m advertising, and which part is left up to the host to choose for itself. This says I&amp;#8217;m advertising the first &lt;code&gt;64&lt;/code&gt; bits of the address (The first 4 colon-delimited sections), leaving the host receiving this advertisement to deduce that it can pick the other 64 bits for itself. The last section is perhaps the least well-understood. This field &lt;code&gt;raflags#64&lt;/code&gt; stands for &lt;strong&gt;r&lt;/strong&gt;outer &lt;strong&gt;a&lt;/strong&gt;dvertisement &lt;strong&gt;flags&lt;/strong&gt;, and they carry, you guessed it, flags about the nature of the router advertisement. There are two flags we are interested in. They are documented in &lt;code&gt;rtadvd.conf&lt;/code&gt; with the following:&lt;/p&gt;
&lt;pre&gt;
raflags
        (num) Flags field in router advertisement message header.  Bit 7
        (0x80) means Managed address configuration flag bit, and Bit 6
        (0x40) means Other stateful configuration flag bit.  The default
        value is 0.
&lt;/pre&gt;
&lt;p&gt;I will simplify this slightly to make it as easy as possible to understand at first (hopefully) so if you want details or the authoritative source, refer to &lt;a href=&quot;http://tools.ietf.org/html/rfc4861&quot;&gt;RFC 4861&lt;/a&gt;, page 19 for more information.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;M&lt;/code&gt; flag says that the host will need to get addresses via DHCPv6. In other words, it tells the host that it shouldn&amp;#8217;t pick its own identifier (remember those last 64 bits above?), because the network policy is to ask a central location (&lt;strong&gt;M&lt;/strong&gt;anaged, see?) for an address first. This will likely trigger DHCPv6 in hosts that support it.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;O&lt;/code&gt; flag says that the host may obtain &lt;strong&gt;O&lt;/strong&gt;ther information from a central location as appropriate, also using DHCPv6. In other words, if you&amp;#8217;d like to make available DNS servers, time servers, etc via DHCP, you&amp;#8217;ll want this flag turned on so that hosts ask you about them. Note that this is separate from the address configuration. You may have (and I do indeed do it this way) the &lt;code&gt;O&lt;/code&gt; flag set while the &lt;code&gt;M&lt;/code&gt; flag is not set, indicating that hosts can pick their own addresses but if they want other neat information they should ask. Note that this is a little more flexible than DHCP available for IPv4, and allows for better separation of network management if you don&amp;#8217;t want the &amp;#8220;all-or-nothing&amp;#8221; approach that DHCP for IPv4 offers.&lt;/p&gt;
&lt;p&gt;The value is &lt;code&gt;64&lt;/code&gt; for &lt;code&gt;raflags&lt;/code&gt;, which is the &lt;strong&gt;decimal value&lt;/strong&gt; (and I personally think the man page is confusing in this regard) of the hexadecimal value &lt;code&gt;0x40&lt;/code&gt;, meaning that I have the &lt;code&gt;O&lt;/code&gt; flag set, but the &lt;code&gt;M&lt;/code&gt; flag remains unset. This is because, in order for users to feel like they have connectivity out of the box, they will need DNS services, and I will provide them with a DNS server address to use (via DHCPv6) as I will show in a moment, so the host needs to know that it can ask for it.&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve got everything set up like you want it, start the server with&lt;/p&gt;
&lt;pre&gt;
/usr/sbin/rtadvd xl0
&lt;/pre&gt;
&lt;p&gt;where &lt;code&gt;xl0&lt;/code&gt; is the interface you want rtadvd to operate on. &lt;code&gt;xl0&lt;/code&gt; is my internal interface.&lt;/p&gt;
&lt;h3&gt;Step 4: DNS&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;d like to be able to resolve DNS over IPv6 for machines that support it, and it required a little tweaking on my part to get it working like I wanted it to.&lt;/p&gt;
&lt;p&gt;First, I ran &lt;code&gt;rndc-confgen&lt;/code&gt; to generate a key to use to communicate with the running DNS server, and did the appropriate things with it. Take a look at the man page for &lt;code&gt;rndc-confgen&lt;/code&gt;; I won&amp;#8217;t go into the details, but you&amp;#8217;ll need to substitute yours below (for &lt;code&gt;YOUR_OWN_SECRET_HERE&lt;/code&gt; if you choose to use my configuration file.&lt;/p&gt;
&lt;h4&gt;/var/named/etc/named.conf (partial)&lt;/h4&gt;
&lt;pre&gt;
key &quot;rndc-key&quot; {
        algorithm hmac-md5;
        secret &quot;YOUR_OWN_SECRET_HERE&quot;;
};

acl clients {
        10.1.1.0/24;
        2001:db8:1f04:4c9::/64;
        127.0.0.0/8;
        ::1/128;
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { &quot;rndc-key&quot;; };
};

options {
        listen-on    { any; };
        listen-on-v6 { any; };

        empty-zones-enable yes;

        allow-recursion { clients; };
};

logging {
        category lame-servers { null; };
};
&lt;/pre&gt;
&lt;p&gt;This tells BIND to listen on all of my interfaces but only recursively resolve queries from my local IPv4 and IPv6 networks, which I&amp;#8217;ve gone over above. I&amp;#8217;ve also done some other things to the default shipped configuration like allowed &lt;code&gt;version&lt;/code&gt; queries. If you&amp;#8217;re unhappy with my security policies, you&amp;#8217;ll need to make sure you modify this file to match yours before putting it into production. With this in place, I simply started the server by executing&lt;/p&gt;
&lt;pre&gt;/usr/sbin/named&lt;/pre&gt;
&lt;p&gt;Check &lt;code&gt;/var/log/daemon&lt;/code&gt; to make sure everything started properly.&lt;/p&gt;
&lt;h3&gt;Step 5: DHCPv6 extras&lt;/h3&gt;
&lt;p&gt;This part isn&amp;#8217;t quite as standard on OpenBSD, yet. I decided to go with &lt;a href=&quot;http://sourceforge.net/projects/wide-dhcpv6&quot;&gt;WIDE-DHCPv6&lt;/a&gt; for no particular technical reason, but it is simple to build and configure.&lt;/p&gt;
&lt;p&gt;Once I unpacked the software, I changed into its directory and did&lt;/p&gt;
&lt;pre&gt;
./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install
&lt;/pre&gt;
&lt;p&gt;which builds it and installs the software to &lt;code&gt;/usr/local&lt;/code&gt;. If you need/want it somewhere else, you can use the standard &lt;code&gt;configure&lt;/code&gt; options to alter the prefixes and some other things. My OpenBSD box is a Pentium III running at 1GHz, and it takes a very small amount of time (2 minutes, if that) to configure, build, and install.&lt;/p&gt;
&lt;p&gt;Even easier than installing this software is configuring it (in my case at least). I created a file called &lt;code&gt;/usr/local/etc/dhcp6s.conf&lt;/code&gt; to configure the server, and the file looks like this:&lt;/p&gt;
&lt;h4&gt;/usr/local/etc/dhcp6s.conf&lt;/h4&gt;
&lt;pre&gt;option domain-name-servers 2001:db8:1f04:4c9::10;&lt;/pre&gt;
&lt;p&gt;which simply tells the DHCPv6 server to hand out the IPv6 address &lt;code&gt;2001:db8:1f04:4c9::10&lt;/code&gt; as the primary IPv6-accessible DNS server. Windows Vista clients, for example, if given one or more IPv6 DNS servers, prefer the IPv6 DNS servers over the IPv4 DNS servers.&lt;/p&gt;
&lt;p&gt;You can now start the daemon with&lt;/p&gt;
&lt;pre&gt;/usr/local/sbin/dhcp6s xl0&lt;/pre&gt;
&lt;p&gt;substituting &lt;code&gt;xl0&lt;/code&gt; for the interface you would like it to listen on (&lt;code&gt;xl0&lt;/code&gt; is my internal interface) and the path to the server for the path you used if you installed it to a different location.&lt;/p&gt;
&lt;h3&gt;Step 6: Finalize&lt;/h3&gt;
&lt;p&gt;Now that we&amp;#8217;ve set it all up, let&amp;#8217;s make our configuration persistent across reboots.&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;/etc/rc.local&lt;/code&gt; to start WIDE-DHCPv6&amp;#8217;s &lt;code&gt;dhcp6s&lt;/code&gt; on boot.&lt;/p&gt;
&lt;h4&gt;/etc/rc.local&lt;/h4&gt;
&lt;pre&gt;
echo -n 'starting local daemons:'

# Add your local startup actions here.

echo -n ' dhcp6s'

/usr/local/sbin/dhcp6s xl0

echo '.'
&lt;/pre&gt;
&lt;p&gt;My &lt;code&gt;/etc/rc.conf.local&lt;/code&gt; looks like this:&lt;/p&gt;
&lt;h4&gt;/etc/rc.conf.local&lt;/h4&gt;
&lt;pre&gt;
dhcpd_flags=&quot;xl0&quot;
named_flags=&quot;&quot;
ntpd_flags=&quot;-s&quot;
rtadvd_flags=&quot;xl0&quot;

pf=YES
&lt;/pre&gt;
&lt;p&gt;and I have three &lt;code&gt;hostname.if&lt;/code&gt; files:&lt;/p&gt;
&lt;h4&gt;/etc/hostname.gif0&lt;/h4&gt;
&lt;pre&gt;
tunnel 192.0.2.44 192.0.2.74
inet6 alias 2001:db8:1f04:4c9::2 2001:db8:1f04:4c9::1 prefixlen 128

!route -n add -inet6 default 2001:db8:1f04:4c9::1
&lt;/pre&gt;
&lt;h4&gt;/etc/hostname.xl0&lt;/h4&gt;
&lt;pre&gt;
inet 10.1.1.1 255.255.255.0 10.1.1.255
inet6 alias 2001:db8:1f04:4c9::10 prefixlen 64
up
&lt;/pre&gt;
&lt;h4&gt;/etc/hostname.rl0&lt;/h4&gt;
&lt;pre&gt;
dhcp NONE NONE NONE
inet6 alias 2001:db8:1f04:4c9::20 prefixlen 64
up
&lt;/pre&gt;
&lt;p&gt;You may need to change some things, for example I obtain my &lt;code&gt;rl0&lt;/code&gt; IPv4 address via DHCP, so my first line of &lt;code&gt;hostname.rl0&lt;/code&gt; contains the right incantation to obtain the address that way.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I hope this at least gives you a headstart when it comes to setting up a home network on OpenBSD. This isn&amp;#8217;t necessarily intended as a guide, more as a way for me to document my thought process as I set up my network. That said, I have written it with people reading as a way to get ideas for themselves in mind, so I would appreciate comments about places where you think this can be improved. Chances are I&amp;#8217;ve made a mistake in my thinking or have given out bad information, and I&amp;#8217;d appreciate corrections to that effect even more.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/canonical.wordpress.com/15/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/canonical.wordpress.com/15/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/canonical.wordpress.com/15/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/canonical.wordpress.com/15/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/canonical.wordpress.com/15/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/canonical.wordpress.com/15/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/canonical.wordpress.com/15/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/canonical.wordpress.com/15/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/canonical.wordpress.com/15/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/canonical.wordpress.com/15/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/canonical.wordpress.com/15/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/canonical.wordpress.com/15/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=canonical.wordpress.com&amp;blog=653173&amp;post=15&amp;subd=canonical&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Jul 2008 05:25:26 +0000</pubDate>
</item>
<item>
	<title>Jenn Pritchard: Ghost 11 (suite 2.0)</title>
	<guid>http://jen3ral.wordpress.com/2008/06/25/ghost-11-suite-20/</guid>
	<link>http://jen3ral.wordpress.com/2008/06/25/ghost-11-suite-20/</link>
	<description>The migration from 7.5 to 11 was not as smooth as I had hoped.  We used to netboot and ghostcast that way but with this new version I would have had to edit all the config files and I am not willing to put in the time to figure ...</description>
	<pubDate>Wed, 25 Jun 2008 22:40:03 +0000</pubDate>
</item>
<item>
	<title>David Symons: Cygwin &amp; Windows</title>
	<guid>http://aozaki.com/?p=11</guid>
	<link>http://aozaki.com/?p=11</link>
	<description>&lt;p&gt;To all those that read beware: Toshiba Satellite M35X-S109 does not like the power settings most linux distributions come with. Several attempts to install linux all ended with the computer turning off and random times and google doesn&amp;#8217;t seem to help. After many sighs I finally reinstalled windows on the poor thing.&lt;/p&gt;
&lt;p&gt;Despite the above I went ahead and installed Apache with PHP on the thing. I then wanted a way to ssh into it so I could work my pages remotely. OpenSSH worked but the problem was that I had to use windows dos commands and I was too use to typing &amp;#8216;ls&amp;#8217; instead of &amp;#8216;dir&amp;#8217;. Enter Cygwin. I&amp;#8217;ve known about Cygwin for quit sometime but I didn&amp;#8217;t quite understand the full capabilities of it until today. It turns out that Cygwin can be used for a whole bunch of stuff including setting up ssh servers. Not only does it allow you to ssh into your windows machine and use linux commands, you can do other things you never thought windows was capably of. I created several symlinks and they seemed to work just fine; Apache seems to have no trouble following the links either.&lt;/p&gt;
&lt;p&gt;I also set up a webcam and installed a VNC server on the box. Now I can just throw the computer in some corner of the apartment and control everything from my normal computer. Yey!&lt;/p&gt;
&lt;p&gt;Side-note: I know that using Windows XP on a laptop as a server is probably not the best thing in the world but I am a poor college student. Until I can afford a real server, the situation is not likely to change.&lt;/p&gt;</description>
	<pubDate>Sun, 22 Jun 2008 03:04:26 +0000</pubDate>
</item>
<item>
	<title>Gordon Stratton: Are the RIAA’s DMCA takedown notices legitimate?</title>
	<guid>http://canonical.wordpress.com/?p=14</guid>
	<link>http://canonical.wordpress.com/2008/06/05/are-the-riaas-dmca-takedown-notices-legitimate/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;By now, many people are aware that the RIAA has been going after people (specifically university students) they believe are violating the copyrights of their member companies. Other people have &lt;a href=&quot;http://chronicle.com/free/2008/05/2821n.htm&quot;&gt;written articles&lt;/a&gt; on specifically how the RIAA (or more realistically, companies the RIAA hire) do this, so if you haven&amp;#8217;t done so, I&amp;#8217;d recommend reading about it.&lt;/p&gt;
&lt;p&gt;Many universities have policies, whether written or unwritten, that dictate some sort of action against students when emails are received requesting that infringing content be removed from the computers serving that content.&lt;/p&gt;
&lt;p&gt;In most cases, universities do a variation of the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Look up the student&amp;#8217;s information based on the IP address(es) listed in the email&lt;/li&gt;
&lt;li&gt;Disable the student&amp;#8217;s internet access&lt;/li&gt;
&lt;li&gt;Follow up with the student in some way (require that some document be signed before internet access is restored, ask that they meet with a university employee or judicial officer, etc.)&lt;/li&gt;
&lt;li&gt;Restore the student&amp;#8217;s internet access&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One of the many issues that I have with this process is that in almost all cases the email is &lt;strong&gt;never verified&lt;/strong&gt;, nor is it &lt;strong&gt;verifiable&lt;/strong&gt;. Most of the time there is a persona certificate sent along with this email, but the email itself is &lt;b&gt;not digitally signed&lt;/b&gt;. Two different emails sent to two separate institutions contained such persona certificates that hashed to the same value. Therefore, if somebody were to spoof such an email, attaching that certificate to the email would make that email as authentic as any emails supposedly sent from the RIAA.&lt;/p&gt;
&lt;p&gt;The problem here is that institutions are taking action against students without even attempting to verify the authenticity of the emails they receive. Universities claim that they want to avoid potential problems, and so they are complying with the text of these emails. What happens, then, when students realize their university is taking action against them from what is essentially an anonymous threat? What happens when spoofed emails result in action taken against students?&lt;/p&gt;
&lt;p&gt;Who&amp;#8217;s to say this isn&amp;#8217;t happening now?&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/canonical.wordpress.com/14/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/canonical.wordpress.com/14/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/canonical.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/canonical.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/canonical.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/canonical.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/canonical.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/canonical.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/canonical.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/canonical.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/canonical.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/canonical.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=canonical.wordpress.com&amp;blog=653173&amp;post=14&amp;subd=canonical&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 06 Jun 2008 00:43:53 +0000</pubDate>
</item>
<item>
	<title>Kian Mohageri: Border Firewalling at ResTek</title>
	<guid>http://www.zampanosbits.com/wordpress/2008/05/31/border-firewalling-at-restek/</guid>
	<link>http://www.zampanosbits.com/wordpress/2008/05/31/border-firewalling-at-restek/</link>
	<description>&lt;p&gt;For those of you that weren&amp;#8217;t aware, ResTek has a pair of machines acting as a border firewall.  Both of the machines, hardware-wise, are the same and their configurations are close to identical as well.  In this brief entry I will describe how they work, assuming the reader has zero understanding already.&lt;/p&gt;

	&lt;p&gt;First, a picture: &lt;a href=&quot;http://www.flickr.com/photos/muskrat/2389614285/&quot;&gt;http://www.flickr.com/photos/muskrat/2389614285/&lt;/a&gt;&lt;/p&gt;

	&lt;p&gt;A close look will reveal that the two &lt;a href=&quot;http://en.wikipedia.org/wiki/Rack_unit&quot;&gt;1U&lt;/a&gt; boxes sporting the &lt;a href=&quot;http://www.openbsd.org&quot;&gt;OpenBSD&lt;/a&gt; and Puffy stickers are labeled &amp;#8220;Firewall A&amp;#8221; (top) and &amp;#8220;Firewall B&amp;#8221; (bottom).&lt;/p&gt;

	&lt;p&gt;Each of the firewalls has 4 Ethernet ports.  Two of these are separate devices (fxp0 and em0 below), and the third and fourth are a dual-port &lt;span class=&quot;caps&quot;&gt;PCI&lt;/span&gt;-X card.  All of them are Intel-based cards.  The interfaces associated with the devices are named as follows:&lt;/p&gt;

	&lt;p&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt;fxp0 &amp;#8211; 100 mbps, connected directly to other firewall with crossover cable&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;em0 &amp;#8211; currently unused&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;em1 &amp;#8211; gigabit, &amp;#8220;outside&amp;#8221; (CARP)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;em2 &amp;#8211; gigabit, &amp;#8220;inside&amp;#8221; (CARP)&lt;/li&gt;&lt;br /&gt;
&lt;/p&gt;

	&lt;p&gt;Because these two firewalls are on a critical path (between students and their internet), it&amp;#8217;s very important that they are redundant.  If we only had one, and it failed, there would be no internet connection for students until someone manually reconfigured the routes on the main router &amp;#8211; this would mean hours of downtime at the very least every time something happened (including upgrades when the system needs to be rebooted)!&lt;/p&gt;

	&lt;p&gt;&lt;strong&gt;Common Address Redundancy Protocol (CARP)&lt;/strong&gt;&lt;/p&gt;

	&lt;p&gt;&lt;a href=&quot;http://www.openbsd.org/faq/pf/carp.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CARP&lt;/span&gt;&lt;/a&gt; is a protocol written by the OpenBSD team (the firewalls are on the OpenBSD operating system, partly because of this incredibly useful protocol) to address this issue.  From the official documentation:&lt;/p&gt;

	&lt;p&gt;&lt;blockquote&gt;&lt;br /&gt;
CARP works by allowing a group of hosts on the same network segment to share an IP address. This group of hosts is referred to as a &amp;#8220;redundancy group&amp;#8221;. The redundancy group is assigned an IP address that is shared amongst the group members. Within the group, one host is designated the &amp;#8220;master&amp;#8221; and the rest as &amp;#8220;backups&amp;#8221;. The master host is the one that currently &amp;#8220;holds&amp;#8221; the shared IP; it responds to any traffic or &lt;span class=&quot;caps&quot;&gt;ARP&lt;/span&gt; requests directed towards it.&lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;

	&lt;p&gt;In a simple setup like ours, one of the firewalls will be processing traffic passing between students and their internet at any given moment &amp;#8211; whichever one doing that is referred to as the &amp;#8220;master.&amp;#8221;  It advertises itself as master by sending out advertisements that the &amp;#8220;backup&amp;#8221; can see at a configurable interval.  If ever the backup stops seeing these advertisements, thinking the master has failed or been shut down, it will &amp;#8220;immediately&amp;#8221; step in and take over.&lt;/p&gt;

	&lt;p&gt;Hopefully you noticed above that there were two interfaces (em2 and em1) referred to as &amp;#8220;inside&amp;#8221; and &amp;#8220;outside&amp;#8221;, respectively.  This is just a way to describe which part of the path that network interface is facing.  Consider the diagram below:&lt;/p&gt;

&lt;pre&gt;
student --- (inside) em2 [firewall] em1 (outside) --- internet
&lt;/pre&gt;

	&lt;p&gt;A simple &lt;span class=&quot;caps&quot;&gt;CARP&lt;/span&gt; firewall configuration will allow both firewalls to share one address on the inside, and another on the outside.  The main router (to which the residence halls and firewalls are connected) will route traffic to these shared (CARP) addresses, rather than the unique addresses of either firewall.  This way, the routes don&amp;#8217;t have to change in the event of failure&amp;#8212;the address is usually a fine route because usually at least one firewall will be up and running.&lt;/p&gt;

	&lt;p&gt;Up until now in the description, the firewalls probably don&amp;#8217;t seem much like firewalls&amp;#8230;&lt;/p&gt;

	&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;caps&quot;&gt;PF &lt;/span&gt;- The OpenBSD Packet Filter&lt;/strong&gt;&lt;/p&gt;

	&lt;p&gt;&lt;a href=&quot;http://www.openbsd.org/faq/pf/&quot;&gt;PF&lt;/a&gt; is the OpenBSD packet filter (arguably the best packet filter/firewall software available today).  It is part of the operating system itself, and it is responsible for deciding how to handle packets that it is configured to process.  Like most packet filters, PF is configured through a configuration file (named pf.conf) that defines certain rules for how to handle different types of traffic.  The rules are collectively known as a &amp;#8220;ruleset.&amp;#8221;&lt;/p&gt;

	&lt;p&gt;When a packet enters (or exits) the firewall, pf processes it.  First, PF checks the packet against a list of existing connections&amp;#8212;referred to as &amp;#8220;states&amp;#8221;.  This is called a state table lookup.  A &amp;#8220;state&amp;#8221; consists of: source address/port, destination address/port, and direction.  If the packet is found to match an existing connection (and it is valid in the context of that connections current state, hence the name) it is &lt;em&gt;passed&lt;/em&gt;.  If no state match is found, the packet must be checked against the ruleset.&lt;/p&gt;

	&lt;p&gt;Most rules are very easy to read.  Here are a few examples:&lt;/p&gt;

&lt;pre&gt;
pass out quick from &amp;lt;firewalls&amp;gt;
block quick from any to &amp;lt;firewalls&amp;gt;
pass in on $ext_if from any to $servers
&lt;/pre&gt;

	&lt;p&gt;The packet is compared to the list of rules, and the last rule that matches (unless a special &amp;#8220;quick&amp;#8221; keyword is used in a rule), will determine how PF handles the packet.  If it is &amp;#8220;block&amp;#8221;, it will be blocked.  If it is &amp;#8220;pass&amp;#8221;, it will be passed.  If no rule matches, the default action is to pass.  The ruleset lookup is much slower than a state table lookup.&lt;/p&gt;

	&lt;p&gt;It is also important to note that, in our environment, traffic passing through the firewall is processed twice by &lt;span class=&quot;caps&quot;&gt;PF &lt;/span&gt;(once on the &amp;#8220;inside&amp;#8221;, and again on the &amp;#8220;outside&amp;#8221;).&lt;/p&gt;

	&lt;p&gt;A primary way the firewalls are used at ResTek is to maintain a list of registered students on our network and pass their traffic, but not pass the traffic of a machine that has not been registered with us.  Another way is to minimize incoming spam destined to our mail server, using OpenBSD&amp;#8217;s &lt;a href=&quot;http://www.openbsd.org/spamd/&quot;&gt;spamd&lt;/a&gt;.&lt;/p&gt;

	&lt;p&gt;Obviously I won&amp;#8217;t attempt to describe everything about PF, but I encourage curious readers to visit the OpenBSD documentation and learn about it.&lt;/p&gt;

	&lt;p&gt;&lt;strong&gt;Failover&lt;/strong&gt;&lt;/p&gt;

	&lt;p&gt;Because state lookups are much faster (and we process a huge number of packets per second), we like to make use of them where possible.  It&amp;#8217;s possible to never create states by specifying &amp;#8220;no state&amp;#8221; in rules, but then the ruleset has to be checked for every single packet, and that&amp;#8217;s much slower.  In our environment, a state table lookup occurs around 40,000 times per second on average.&lt;/p&gt;

	&lt;p&gt;However, you might notice there is a possible problem with states.  If the master is maintaining a list of all current states as connections pass through it, and then it fails, the backup will have no idea which packets are part of states and which aren&amp;#8217;t.  Obviously this would lead to interrupted connections where stateful filtering is in place.&lt;/p&gt;

	&lt;p&gt;OpenBSD developed &amp;#8220;pfsync&amp;#8221; to address this.  Pfsync runs on both firewalls, and allows them to update each other on current states.  So, the backup firewall, formerly blind about what connections are going through the master, would now be sent a list of updates to states.  In other words, their state tables are synced at all times.  If the master fails, the backup knows exactly how to handle existing connections.  This is where the &amp;#8220;fxp0&amp;#8221; interface comes in.  As said above, the two fxp0 interfaces are connected directly to each other using a crossover cable.  Pfsync traffic is sent across this dedicated link.&lt;/p&gt;

	&lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;&lt;/p&gt;

	&lt;p&gt;The redundancy created by OpenBSD on the firewalls is extremely valuable and also extremely easy to configure.  You can literally unplug the master and streaming audio/video won&amp;#8217;t miss a beat as the backup takes over.&lt;/p&gt;

	&lt;p&gt;A few things to be aware of about our firewalls:&lt;/p&gt;

	&lt;p&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt;As for our policy, ResTek does not block ports.  We recently removed the ones that used to be blocked.  The main router still blocks a few ports, but we are working with the department that manages it to get that cleaned up.  We do not feel that blocking ports is a worthwhile security practice in the majority of cases, and our role as an Internet Service Provider is not to police traffic in such a useless/potentially damaging way.&lt;/li&gt;&lt;/p&gt;


	&lt;p&gt;&lt;li&gt;When traffic is denied by the firewall, it is not simply discarded.  The firewall will send back the appropriate response.  This is known as a &amp;#8220;block policy&amp;#8221; in PF.  You can define &amp;#8220;drop&amp;#8221; (discard) or &amp;#8220;return&amp;#8221;.  It is good practice to &amp;#8220;return&amp;#8221; (send back a response indicating that the connection was denied) to avoid confusion for people that are trying to troubleshoot.  Our philosophy is that it is better to &amp;#8220;return&amp;#8221; than to &amp;#8220;drop&amp;#8221;.&lt;/li&gt;&lt;/p&gt;


	&lt;p&gt;&lt;li&gt;Inbound connections to resident machines are not blocked.  Now that most operating systems (Windows) ship with firewalls enabled by default, we don&amp;#8217;t want to hinder your internet experience by trying to &amp;#8220;protect&amp;#8221; you.  We find that usually it causes more problems than it solves, specifically for people trying to host games or whatever else.  Some providers allow outbound connections, and inbound traffic associated with those connections, but drop inbound connections.  We feel this practice causes more problems than it solves.&lt;br /&gt;
&lt;/li&gt;&lt;/p&gt;

	&lt;p&gt;&lt;li&gt;We do not use the firewalls to monitor what you do.  We monitor how much traffic IP addresses are using to make sure nobody is taking up our limited bandwidth and making things slow for everyone else.  We also keep an eye out for suspiciously high numbers of outbound e-mails (almost always an indication of a virus-infected machine spamming), but &lt;strong&gt;we do not monitor the e-mails themselves at all and look down on people that do.&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/p&gt;

	&lt;p&gt;Hope that clarifies some things!&lt;/p&gt;

	&lt;p&gt;Have a look at &lt;a href=&quot;http://restek.wwu.edu/syweb/&quot;&gt;our graphs&lt;/a&gt;, specifically the &amp;#8220;pf&amp;#8221; layout, for some visuals.&lt;/p&gt;</description>
	<pubDate>Sat, 31 May 2008 21:11:31 +0000</pubDate>
</item>
<item>
	<title>David Symons: The RIAA Explains How It Catches Alleged Music Pirates</title>
	<guid>http://aozaki.com/?p=10</guid>
	<link>http://aozaki.com/?p=10</link>
	<description>&lt;p&gt;The other day &lt;a href=&quot;http://slashdot.org/&quot;&gt;Slashdot&lt;/a&gt; linked to &lt;a href=&quot;http://chronicle.com/free/2008/05/2821n.htm&quot;&gt;an article&lt;/a&gt; where an anonymous RIAA employee explained how it caught alleged music pirates. One thing I found particularly interesting was they specifically singled out LimeWire in their demo. Maybe this was for the sake of keeping it simple but one can&amp;#8217;t help but wonder why they didn&amp;#8217;t say &amp;#8220;P2P client&amp;#8221;. The other thing they said was the word &amp;#8220;college&amp;#8221;. I&amp;#8217;ll let readers make up their own mind based on these two things.&lt;/p&gt;
&lt;p&gt;In other news, I was having problems with the sound in Amarok. The sound would just randomly stop working, the program would freeze forcing me to exit and when I would try to restart the program nothing would happen forcing me to log out and log back in. Solution? Apparently Amarok allows you to specify the sound drivers in the program itself instead of using the sound you specify in the OS settings. I just set the driver to use Alsa and all is well again.&lt;/p&gt;</description>
	<pubDate>Thu, 22 May 2008 03:53:00 +0000</pubDate>
</item>
<item>
	<title>David Symons: Flash in Hardy Heron</title>
	<guid>http://aozaki.com/?p=9</guid>
	<link>http://aozaki.com/?p=9</link>
	<description>&lt;p&gt;A fresh install of Ubuntu 8.03 Hardy Heron (like most linux distributions) does not come with flash pre-installed. When you use Firefox to navigate to a site that has flash, in true Ubuntu fashion, a message will be displayed asking you if you want to install it. The problem is that there are 3 different options to choose from and nothing that really tells you which is what. The choices are:&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;http://swfdec.freedesktop.org/&quot;&gt;Swfdec player for Adobe/Macromedia Flash&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://www.adobe.com/&quot;&gt;Adobe Flash Player&lt;/a&gt; (Installer)&lt;br /&gt;
- &lt;a href=&quot;http://www.gnashdev.org/&quot;&gt;Gnash SWF Player&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Swfdec player is the default player, so I decided to install it without thought. As it turns out, Swfdec is an open source alternative to Adobe&amp;#8217;s Flash Player. It installed fine, but has some interesting things to it. For one, it blocks all flash content on a web page and replaces it with a gray box. You must click the gray box before the flash object will load. Youtube videos seem to play just fine, but the volume control doesn&amp;#8217;t work. Most other flash objects on the web, aside from basic menus, do not load properly.&lt;/p&gt;
&lt;p&gt;Adobe Flash Player is what should be default in my opinion. It is not open source which is probably what kept it out of the number 1 spot but is probably what novice users want. When I uninstalled Swfdec and installed this, everything seemed to load and work as I&amp;#8217;ve come to expect.&lt;/p&gt;
&lt;p&gt;Gnash is another open source flash player but doesn&amp;#8217;t seem as good as Swfdec. I would wait on installing this until the development matures more.&lt;/p&gt;
&lt;p&gt;I really wish Ubuntu included some thing that told the user about each option instead of making them research it on their own. So if you are like I was and sitting there wondering what the difference is, I hope this helps.&lt;/p&gt;</description>
	<pubDate>Mon, 05 May 2008 04:30:22 +0000</pubDate>
</item>
<item>
	<title>Jenn Pritchard: Update: Comcast or Me?</title>
	<guid>http://jen3ral.wordpress.com/2008/04/29/update-comcast-or-me/</guid>
	<link>http://jen3ral.wordpress.com/2008/04/29/update-comcast-or-me/</link>
	<description>Original post

So the tech just left my house and guess what?  Yeah, not my gateway.  He had to add an amplifier because the signal isn't coming into the house strong enough.  Here's a screen shot of my status page again.



Notice how the Downstream power is now perfect. ...</description>
	<pubDate>Wed, 30 Apr 2008 00:40:02 +0000</pubDate>
</item>
<item>
	<title>Jenn Pritchard: Ubuntu 8.04, ATI, &amp; Big Desktop</title>
	<guid>http://jen3ral.wordpress.com/2008/04/27/ubuntu-804-ati-big-desktop/</guid>
	<link>http://jen3ral.wordpress.com/2008/04/27/ubuntu-804-ati-big-desktop/</link>
	<description>First off, we got some new computers at work that have the ATI Radeon 2400 HD Pro video cards.  I wish I would have done some research when I had the specs for the new machines because I would have found out that ATI cards don't get along with ...</description>
	<pubDate>Mon, 28 Apr 2008 01:10:03 +0000</pubDate>
</item>
<item>
	<title>Kian Mohageri: LDAP group-based access in Apache 2 … and some other stuff</title>
	<guid>http://www.zampanosbits.com/wordpress/2008/04/24/ldap-group-based-access-in-apache-2-and-some-other-stuff/</guid>
	<link>http://www.zampanosbits.com/wordpress/2008/04/24/ldap-group-based-access-in-apache-2-and-some-other-stuff/</link>
	<description>&lt;p&gt;Because I am currently managing both Housing and ResTek servers (separate entities, similar needs), I&amp;#8217;ve been trying to find a few ways to share resources between them.  My manager also requested that the staff over at Housing be able to access the ResTek wiki (and maybe vise versa).&lt;/p&gt;

	&lt;p&gt;Thanks to former administrator Gordon, Housing servers were switched from &lt;span class=&quot;caps&quot;&gt;SLES&lt;/span&gt; to FreeBSD, which is what most of our ResTek servers are.  The setups now are really similar, with one exception being the fact that ResTek uses &lt;span class=&quot;caps&quot;&gt;LDAP &lt;/span&gt;(PAM+NSS) for authentication and other things.  Housing is still using local accounts because there hasn&amp;#8217;t been a need to move to &lt;span class=&quot;caps&quot;&gt;LDAP&lt;/span&gt;.&lt;/p&gt;

	&lt;p&gt;The goal was to add accounts for Housing employees into our ResTek &lt;span class=&quot;caps&quot;&gt;LDAP&lt;/span&gt; directory, and then eventually share things like our wiki, Nagios, etc.&lt;/p&gt;

	&lt;p&gt;To accomplish this, I simply created another group (posixGroup) in our directory: cn=webteam.  All of our ResTek employees have a primary group of cn=restek.  All Housing &amp;#8220;web team&amp;#8221; members would have a primary group of &amp;#8216;webteam.&amp;#8217;&lt;/p&gt;

	&lt;p&gt;This seems simple enough, but there was one problem, and that was for special cases like myself, that needed to be in both groups (to access both resources).  In other words, I needed a way to make myself a member of &amp;#8216;webteam&amp;#8217; without it being a primary group.  That is as simple as adding my short user name to the group&amp;#8217;s entry as a memberUid attribute.  So, we end up with something like the following (abbreviated):&lt;/p&gt;

Groups:
&lt;pre&gt;
cn=restek,ou=Group,dc=restek,dc=wwu,dc=edu
gidNumber: 5000
memberUid: jonny

cn=webteam,ou=Group,dc=restek,dc=wwu,dc=edu
gidNumber: 4000
memberUid: kian
&lt;/pre&gt;

People:
&lt;pre&gt;
uid=kian,ou=People,dc=restek,dc=wwu,dc=edu
gidNumber: 5000

uid=jonny,ou=People,dc=restek,dc=wwu,dc=edu
gidNumber: 4000
&lt;/pre&gt;

	&lt;p&gt;What does this result in?  Kian&amp;#8217;s primary group will be &amp;#8216;restek&amp;#8217;, and he will also be a member of &amp;#8216;webteam&amp;#8217;.  Jonny&amp;#8217;s primary group will be &amp;#8216;webteam&amp;#8217;, but he&amp;#8217;ll be a member of the &amp;#8216;restek&amp;#8217; group too.&lt;/p&gt;

	&lt;p&gt;Now, to allow Webteam Jonny into our Nagios page, the following can be added to Apache&amp;#8217;s httpd.conf:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;directory &quot;/usr/local/www/nagios/&quot;&amp;gt;
    Options All

    Order allow,deny
    Allow from all

    Include etc/apache22/ldap-auth-base.conf
    require valid-user
&amp;lt;/directory&amp;gt;
&lt;/pre&gt;

ldap-auth-base.conf:
&lt;pre&gt;
# Don't want people to be allowed to authenticate insecurely
SSLRequireSSL

AuthType Basic
AuthBasicProvider ldap
AuthName &quot;ResTek Login&quot;
AuthLDAPURL &quot;ldap://ldap.restek.wwu.edu/ou=People,dc=restek,dc=wwu,dc=edu?uid??&quot; TLS
AuthLDAPBindDN &quot;cn=BINDUSER,dc=restek,dc=wwu,dc=edu&quot;
AuthLDAPBindPassword SUPERSECRETPASSWORD
# group members are short names (uid), not full distinguished names
AuthLDAPGroupAttributeIsDN off
AuthLDAPGroupAttribute memberUid
&lt;/pre&gt;

	&lt;p&gt;In other words, any valid user will be allowed to log in.  If we want to restrict it to members of the &amp;#8216;restek&amp;#8217; group (primary OR secondary, we would do the following instead:&lt;/p&gt;

&lt;pre&gt;
Include etc/apache22/ldap-auth-base.conf
require ldap-attribute gidNumber=5000
require ldap-group cn=restek,ou=Group
&lt;/pre&gt;

	&lt;p&gt;In other news, we&amp;#8217;ve moved our &lt;span class=&quot;caps&quot;&gt;IDS&lt;/span&gt;/monitoring tools off of our firewalls and onto a separate &lt;a href=&quot;http://www.openbsd.org&quot;&gt;OpenBSD&lt;/a&gt; server.  All of our &lt;span class=&quot;caps&quot;&gt;WAN&lt;/span&gt; traffic is &lt;a href=&quot;http://en.wikipedia.org/wiki/Port_mirroring&quot;&gt;mirrored&lt;/a&gt; from the router onto the second interface of that server, where the monitoring tools listen.  It&amp;#8217;s helping reduce the &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; load on our firewalls a bit, and is also probably a better practice security-wise.&lt;/p&gt;</description>
	<pubDate>Thu, 24 Apr 2008 20:22:08 +0000</pubDate>
</item>
<item>
	<title>Jenn Pritchard: Comcast or me?</title>
	<guid>http://jen3ral.wordpress.com/2008/04/23/comcast-or-me/</guid>
	<link>http://jen3ral.wordpress.com/2008/04/23/comcast-or-me/</link>
	<description>I've been arguing with comcast for months and months now because my connection at home drops multiple times a day for anywhere from a few seconds to 30 minutes to an hour.  They have not once sent a tech out to take a look at things, they just immediately ...</description>
	<pubDate>Wed, 23 Apr 2008 19:40:03 +0000</pubDate>
</item>
<item>
	<title>David Symons: University research projects</title>
	<guid>http://aozaki.com/?p=8</guid>
	<link>http://aozaki.com/?p=8</link>
	<description>&lt;p&gt;As I get further into my major, I find it interesting to see what research is being done by others in the same department. &lt;a href=&quot;http://www.networkworld.com/index.html&quot;&gt;Networkworld&lt;/a&gt; recently had a post about &lt;a href=&quot;http://www.networkworld.com/community/node/27057&quot;&gt;25 leading-edge IT research projects&lt;/a&gt; from universities across the nation.  Here are some of my personal favorites:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real Bandwidth Management&lt;/strong&gt;&lt;br /&gt;
Computer Scientists at the University of California at San Diego are looking at ways to have a TCP-based bandwidth management system that works across global networks.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;With our system, an organization with mirrored Web sites or other services across the globe could dynamically shift its bandwidth allocations between sites based on demand.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Universities could benefit from this technology greatly as they could have main campuses unused bandwidth of the evenings be shifted over to their residence halls and then reallocated in the morning. This would give students living on campus an extra boost of bandwidth and it wouldn&amp;#8217;t cost a thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Finding pictures of needles in haystacks&lt;/strong&gt;&lt;br /&gt;
Researchers at Penn State have created software that tags your images for you as you upload them to Yahoo&amp;#8217;s flickr. These automatically generated tags change depending on how users interact with your photos.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;Tagging itself is challenging as it involves converting an image&amp;#8217;s pixels to descriptive words,&amp;#8221; said James Wang, lead researcher and associate professor of information sciences and technology, in a statement. &amp;#8220;But what is novel with the &amp;#8216;Tagging over Time&amp;#8217; or T/T technology is that the system adapts as people&amp;#8217;s preferences for images and words change.&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;People have a lot of photos online and I think this would be a really neat solution to tagging all those photos. Uploading photos wouldn&amp;#8217;t be such a pain and searching for the photos you have uploaded would be even easier. Plus it would be interesting to see how people interact with your photos.&lt;/p&gt;</description>
	<pubDate>Wed, 23 Apr 2008 07:07:27 +0000</pubDate>
</item>
<item>
	<title>David Symons: AT&amp;T Pogo</title>
	<guid>http://aozaki.com/?p=7</guid>
	<link>http://aozaki.com/?p=7</link>
	<description>&lt;p&gt;No its not another cellphone, it&amp;#8217;s a new web browser. Thats right, AT&amp;amp;T has decided to enter the world of web browsers throwing a very 3Dish feel to the experience. The name is &lt;a href=&quot;http://www.pogobrowser.com/&quot;&gt;Pogo&lt;/a&gt; and while the Beta release is currently closed from the public, they have an &lt;a href=&quot;http://www.pogobrowser.com/demo.html&quot;&gt;interesting flash preview&lt;/a&gt; on their site. From the looks of it, it seems very resource intensive but depending now how its implemented it should be very exciting. The demo shows it running on Windows XP, no word about other operating systems though. Speaking of no word, their site has no system requirements listed either. It is still in Beta though so we shall see. Something to keep an eye on anyway.&lt;/p&gt;</description>
	<pubDate>Fri, 18 Apr 2008 01:28:42 +0000</pubDate>
</item>
<item>
	<title>David Symons: Finding Firefox plug-ins</title>
	<guid>http://aozaki.com/?p=6</guid>
	<link>http://aozaki.com/?p=6</link>
	<description>&lt;p&gt;I find it interesting how most operating systems (read: Windows/Mac) try to hide files. For example, when you install a new program, do you really know what is going on? Sure you can specify a path for the main components but the shared DLL (Dynamic Link Library) files are thrown all over the place, registry keys are added, and in the end you are just amazed the program actually works. Sometimes this is good as the novice computer user probably shouldn&amp;#8217;t be modifing these files, but if you are like me then it bugs you to not know where stuff is on your own computer.&lt;/p&gt;
&lt;p&gt;The good folks over on the &lt;a href=&quot;http://www.cnet.com/defensive-computing/&quot;&gt;Defensive Computing blog&lt;/a&gt; recently made an &lt;a href=&quot;http://www.cnet.com/8301-13554_1-9917431-33.html&quot;&gt;interesting post&lt;/a&gt; about how to find Firefox plug-ins. This is definitely good information when you are trying to uninstall a plug-in and it leaves files behind. I would also suggest taking a look at it even if you don&amp;#8217;t really need to modify these files. Knowing how to access key components in Firefox can only help your understanding of the browser.&lt;/p&gt;</description>
	<pubDate>Wed, 16 Apr 2008 01:30:37 +0000</pubDate>
</item>
<item>
	<title>David Symons: Vim</title>
	<guid>http://aozaki.com/?p=5</guid>
	<link>http://aozaki.com/?p=5</link>
	<description>&lt;p&gt;I&amp;#8217;ve had several people ask me what my favorite text editor is. For those that are new to the field, there is some what of an incessant war over &amp;#8220;the best text editor&amp;#8221; between those in the IT field. The two main contenders are &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; and &lt;a href=&quot;http://www.gnu.org/software/emacs/emacs.html&quot;&gt;Emacs.&lt;/a&gt; This post isn&amp;#8217;t meant to be a comparison between the two editors as there are plenty of those pages already on the internet. Instead I&amp;#8217;d like to take a minute and explain why I choose Vim, and hopefully enlighten those that are new to the topic.&lt;/p&gt;
&lt;p&gt;First of all, I&amp;#8217;m sure there are those that are wondering who cares. It&amp;#8217;s just a text editor after all. It&amp;#8217;s not like you are writing a paper or editing full blown documents right? To most people this may be very true but to a programmer it&amp;#8217;s not &amp;#8220;just a text editor&amp;#8221;. I do all my programming (no matter what language it is) in my text editor. This means almost all school work, ResTek work, and leisure programming. So for a program that is so often used, you might start to see how there could be some debate about which is better than the other.&lt;/p&gt;
&lt;p&gt;For me, I choose Vim. Vim does take a little getting use to, I wont lie. You move the cursor around by the H, J, K, and L buttons. There are editing modes, and more options than anyone could possibly memorize. I&amp;#8217;ve been using the program for over a year now and I probably know less than half the commands. The main thing I do like about it is that its terminal based (there is a GUI (Graphical User Interface) version if you are interested though). This means that I can open it and work when in SSH (Secure Shell) sessions. Vim also has syntax highlighting for most programming languages and a built in spell checker.&lt;/p&gt;
&lt;p&gt;Vim may not be the editor with the most friendly learning curve but if you are looking for a lightweight, powerful editor then you should give Vim a try.&lt;/p&gt;</description>
	<pubDate>Tue, 15 Apr 2008 02:07:19 +0000</pubDate>
</item>

</channel>
</rss>
