<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tyk.wiki/index.php?action=history&amp;feed=atom&amp;title=IPv6_router_with_6to4_and_pf</id>
	<title>IPv6 router with 6to4 and pf - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tyk.wiki/index.php?action=history&amp;feed=atom&amp;title=IPv6_router_with_6to4_and_pf"/>
	<link rel="alternate" type="text/html" href="https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;action=history"/>
	<updated>2026-05-10T15:24:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=128&amp;oldid=prev</id>
		<title>Tykling at 19:55, 6 September 2009</title>
		<link rel="alternate" type="text/html" href="https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=128&amp;oldid=prev"/>
		<updated>2009-09-06T19:55:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:55, 6 September 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l74&quot;&gt;Line 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[tykling@fw1 ~]$ grep -E &amp;quot;(stf|proto 41)&amp;quot; /etc/pf.conf&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[tykling@fw1 ~]$ grep -E &amp;quot;(stf|proto 41)&amp;quot; /etc/pf.conf&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stf_if=&amp;quot;stf0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stf_if=&amp;quot;stf0&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stf_prefix=&quot;2002:59e9:2b42::&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;&quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;stf_prefix=&quot;2002:59e9:2b42::&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pass out quick on ext_phys_if proto 41 from $carp_gateway_address to any&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pass out quick on ext_phys_if proto 41 from $carp_gateway_address to any&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pass in quick on ext_phys_if proto 41 from any to $carp_gateway_address&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pass in quick on ext_phys_if proto 41 from any to $carp_gateway_address&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tykling</name></author>
	</entry>
	<entry>
		<id>https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=125&amp;oldid=prev</id>
		<title>Tykling: 6to4 IPv6 router with pf moved to IPv6 router with 6to4 and pf</title>
		<link rel="alternate" type="text/html" href="https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=125&amp;oldid=prev"/>
		<updated>2009-09-06T19:52:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/6to4_IPv6_router_with_pf&quot; class=&quot;mw-redirect&quot; title=&quot;6to4 IPv6 router with pf&quot;&gt;6to4 IPv6 router with pf&lt;/a&gt; moved to &lt;a href=&quot;/IPv6_router_with_6to4_and_pf&quot; title=&quot;IPv6 router with 6to4 and pf&quot;&gt;IPv6 router with 6to4 and pf&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:52, 6 September 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Tykling</name></author>
	</entry>
	<entry>
		<id>https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=123&amp;oldid=prev</id>
		<title>Tykling: 6to4 IPv6 firewall with pf and CARP moved to 6to4 IPv6 router with pf</title>
		<link rel="alternate" type="text/html" href="https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=123&amp;oldid=prev"/>
		<updated>2009-09-06T19:52:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/6to4_IPv6_firewall_with_pf_and_CARP&quot; class=&quot;mw-redirect&quot; title=&quot;6to4 IPv6 firewall with pf and CARP&quot;&gt;6to4 IPv6 firewall with pf and CARP&lt;/a&gt; moved to &lt;a href=&quot;/6to4_IPv6_router_with_pf&quot; class=&quot;mw-redirect&quot; title=&quot;6to4 IPv6 router with pf&quot;&gt;6to4 IPv6 router with pf&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:52, 6 September 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Tykling</name></author>
	</entry>
	<entry>
		<id>https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=122&amp;oldid=prev</id>
		<title>Tykling: New page: This page is about IPv6 enabling an existing pf gateway. I will show the changes I have done to the setup to v6 enable the firewall and the network behind it. The current setup has worked ...</title>
		<link rel="alternate" type="text/html" href="https://tyk.wiki/index.php?title=IPv6_router_with_6to4_and_pf&amp;diff=122&amp;oldid=prev"/>
		<updated>2009-09-06T19:34:20Z</updated>

		<summary type="html">&lt;p&gt;New page: This page is about IPv6 enabling an existing pf gateway. I will show the changes I have done to the setup to v6 enable the firewall and the network behind it. The current setup has worked ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page is about IPv6 enabling an existing pf gateway. I will show the changes I have done to the setup to v6 enable the firewall and the network behind it. The current setup has worked fine for a while, and I decided to v6-enable the network mostly for the learning experience.&lt;br /&gt;
&lt;br /&gt;
The firewall in question is one in a pair of redundant pf/pfsync/carp firewalls, but I will leave out the redundancy stuff to keep this article about IPv6 and not confuse things. I will be assigning IPv6 addresses to the carp interfaces rather than to the physical interfaces though.&lt;br /&gt;
&lt;br /&gt;
I decided to use [http://en.wikipedia.org/wiki/6to4 6to4] even though a tunnel provider like [http://www.sixxs.net/ SixXS] is preferred by most people. &lt;br /&gt;
&lt;br /&gt;
The disadvantages with 6to4 are: &lt;br /&gt;
* No promises of uptime and stability&lt;br /&gt;
* There appears to be routing issues with 6to4 in some places/some providers, which (among other things) means that I can&amp;#039;t see the &amp;#039;&amp;#039;dancing turtle&amp;#039;&amp;#039; on [http://www.kame.net/ the KAME website] because the connection falls back to v4. &lt;br /&gt;
* There are several security issues with 6to4 since it is an open-ended tunneling method. In practice this means that even though you send all your traffic to the non-6to4 part of the IPv6 internet to the anycast gateway at 192.88.99.1, reply traffic can come from the normal v4 address of the anycast server instead of 192.88.99.1. Also, IPv6 traffic from other 6to4 networks will come directly from the IPv4 address of the 6to4 network, and not from the anycast server. These two facts effectively prevent any filtering of the encapsulated traffic.&lt;br /&gt;
&lt;br /&gt;
The advantages are:&lt;br /&gt;
* No registration is required, and it is free like the tunnel providers.&lt;br /&gt;
* I only need a public (preferrably static) IP address. &lt;br /&gt;
* I get automatic gateway failover since 6to4 uses an anycast gateway. &lt;br /&gt;
&lt;br /&gt;
If you are located close (bgp-wise) to an anycast 6to4 gateway, and you are ok with the security issues, 6to4 is worth considering. You can check your pingtimes and route to your &amp;quot;local&amp;quot; 6to4 tunnel server by pinging or tracerouting the IP &amp;#039;&amp;#039;&amp;#039;192.88.99.1&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw2 ~]$ ping 192.88.99.1&lt;br /&gt;
PING 192.88.99.1 (192.88.99.1): 56 data bytes&lt;br /&gt;
64 bytes from 192.88.99.1: icmp_seq=0 ttl=254 time=1.801 ms&lt;br /&gt;
64 bytes from 192.88.99.1: icmp_seq=1 ttl=254 time=1.751 ms&lt;br /&gt;
64 bytes from 192.88.99.1: icmp_seq=2 ttl=254 time=1.825 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 192.88.99.1 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 1.751/1.792/1.825/0.031 ms&lt;br /&gt;
[tykling@fw2 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your pingtimes are relatively low, like under 50ms, you should be able to get decent v6 connectivity using 6to4. The main selling point for 6to4 is how easy it is to configure. The main problem is security (spoofed IPv6 packets), but since I am playing around and not running a bank here I will take my chances. &lt;br /&gt;
&lt;br /&gt;
== Getting the firewall IPv6 connected ==&lt;br /&gt;
The first step is getting the firewall connected with a tunnel to the 6to4 tunnel server. I added the following lines to &amp;#039;&amp;#039;/etc/rc.conf&amp;#039;&amp;#039; and rebooted the firewall. The steps to apply the same settings without rebooting are included below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#ipv6 6to4 stuff&lt;br /&gt;
ipv6_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
stf_interface_ipv4addr=&amp;quot;89.233.43.66&amp;quot;&lt;br /&gt;
ipv6_defaultrouter=&amp;quot;2002:c058:6301::&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Line-by-line, the first option enables IPv6 and sets the sysctl values needed for basic operation. The next line enables the stf tunneling device, which takes care of encapsulating IPv6 packets in IPv4 and sending them off to the default gateway, specified in the third line. Due to the anycast address, the ipv6_defaultrouter will always be &amp;#039;&amp;#039;&amp;#039;2002:c058:6301::&amp;#039;&amp;#039;&amp;#039;, which translates to the v4 address 192.88.99.1.&lt;br /&gt;
&lt;br /&gt;
To enable this configuration without rebooting, I need to manually calculate my 6to4 prefix from my public IP address. It is pretty simple, I just stick the hex form of the public v4 address on the end of the 6to4 prefix &amp;#039;&amp;#039;&amp;#039;2002::&amp;#039;&amp;#039;&amp;#039; and that is it. In this case, the v4 address is &amp;#039;&amp;#039;&amp;#039;89.233.43.66&amp;#039;&amp;#039;&amp;#039;, the individual octets of the IP converted to hex are &amp;#039;&amp;#039;&amp;#039;59 e9 2b 42&amp;#039;&amp;#039;&amp;#039;, so the 6to4 IPv6 prefix for &amp;#039;&amp;#039;&amp;#039;89.233.43.66&amp;#039;&amp;#039;&amp;#039; is &amp;#039;&amp;#039;&amp;#039;2002:59e9:2b42::/48&amp;#039;&amp;#039;&amp;#039;. First I create the stf0 interface, then I give it an address in the prefix, then I add the default inet6 gateway. Note that I need to specify the prefix length for the stf0 interface as /16 as I want this to be an IPv6 gateway (eventually), according to this bit from the [http://www.freebsd.org/cgi/man.cgi?query=stf&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+7.2-RELEASE&amp;amp;format=html stf man page]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     If you would like the node to behave as a relay router, the prefix length&lt;br /&gt;
     for the IPv6 interface address needs to be 16 so that the node would con-&lt;br /&gt;
     sider any 6to4 destination as ``on-link&amp;#039;&amp;#039;. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, on to the commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw2 ~]$ sudo ifconfig stf0 create up&lt;br /&gt;
[tykling@fw2 ~]$ sudo ifconfig stf0 inet6 2002:59e9:2b42::1 prefixlen 16&lt;br /&gt;
[tykling@fw2 ~]$ ifconfig stf0&lt;br /&gt;
stf0: flags=1&amp;lt;UP&amp;gt; metric 0 mtu 1280&lt;br /&gt;
        inet6 2002:59e9:2b42::1 prefixlen 16&lt;br /&gt;
[tykling@fw2 ~]$ sudo route add -inet6 default 2002:c058:6301::&lt;br /&gt;
add net default: gateway 2002:c058:6301::&lt;br /&gt;
[tykling@fw2 ~]$ sudo sysctl net.inet6.ip6.accept_rtadv=1&lt;br /&gt;
net.inet6.ip6.accept_rtadv: 0 -&amp;gt; 1&lt;br /&gt;
[tykling@fw2 ~]$ sudo sysctl net.inet6.ip6.auto_linklocal=1&lt;br /&gt;
net.inet6.ip6.auto_linklocal: 0 -&amp;gt; 1&lt;br /&gt;
[tykling@fw2 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stf interface is up and running. I need to add a few things to pf.conf to allow:&lt;br /&gt;
* Traffic from 2002:c058:6301:: needs to be out on stf0&lt;br /&gt;
* IPv4 traffic using protocol 41 needs to and from all destinations. The nature of 6to4 and anycast prevents any filtering here, this is the main security concern with IPv6.&lt;br /&gt;
&lt;br /&gt;
I added the following lines to the existing pf.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw1 ~]$ grep -E &amp;quot;(stf|proto 41)&amp;quot; /etc/pf.conf&lt;br /&gt;
stf_if=&amp;quot;stf0&amp;quot;&lt;br /&gt;
stf_prefix=&amp;quot;2002:59e9:2b42::1&amp;quot;&lt;br /&gt;
pass out quick on ext_phys_if proto 41 from $carp_gateway_address to any&lt;br /&gt;
pass in quick on ext_phys_if proto 41 from any to $carp_gateway_address&lt;br /&gt;
pass out on $stf_if inet6 from $stf_prefix to any&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After reloading pf.conf I tested basic IPv6 connectivity:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw1 ~]$ ping6 ipv6.google.com&lt;br /&gt;
PING6(56=40+8+8 bytes) 2002:59e9:2b42::1 --&amp;gt; 2001:4860:a005::68&lt;br /&gt;
16 bytes from 2001:4860:a005::68, icmp_seq=0 hlim=54 time=33.483 ms&lt;br /&gt;
16 bytes from 2001:4860:a005::68, icmp_seq=1 hlim=54 time=33.621 ms&lt;br /&gt;
16 bytes from 2001:4860:a005::68, icmp_seq=2 hlim=54 time=33.445 ms&lt;br /&gt;
^C&lt;br /&gt;
--- ipv6.l.google.com ping6 statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/std-dev = 33.445/33.516/33.621/0.076 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far so good. The next step is changing the setup to get auto configuration working for the network behind the firewall, and route IPv6 traffic to and from the network.&lt;br /&gt;
&lt;br /&gt;
== Configuring the firewall to route IPv6 traffic ==&lt;br /&gt;
First things first: For the firewall to be able to speak to the network using IPv6 it needs to have an IP address on the inside interface. &lt;br /&gt;
&lt;br /&gt;
=== Assigning IPv6 addresses from the 6to4 prefix ===&lt;br /&gt;
I choose a /64 subnet for the inside and the outside interfaces and then assign the firewall an IP within them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw1 ~]$ grep ipv6_ifco /etc/rc.conf&lt;br /&gt;
ipv6_ifconfig_carp0=&amp;quot;2002:59e9:2b42:0:1::/64&amp;quot;&lt;br /&gt;
ipv6_ifconfig_carp1=&amp;quot;2002:59e9:2b42:1:1::/64&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The outside interface is &amp;#039;&amp;#039;&amp;#039;carp1&amp;#039;&amp;#039;&amp;#039; and the inside interface is &amp;#039;&amp;#039;&amp;#039;carp0&amp;#039;&amp;#039;&amp;#039;. Given this, the subnet that the network behind this firewall will be using is &amp;#039;&amp;#039;&amp;#039;2002:59e9:2b42:1:1::/64&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Enabling rtadvd for stateless autoconfiguration ===&lt;br /&gt;
I also enable &amp;#039;&amp;#039;rtadvd&amp;#039;&amp;#039; in rc.conf, and specify the interface I want to advertise the prefix on. [http://www.freebsd.org/cgi/man.cgi?query=rtadvd&amp;amp;sektion=8 rtadvd] is the FreeBSD routing advertisement deamon. It works out of the box with no configuration other than telling it which interface to use. &lt;br /&gt;
&lt;br /&gt;
Enabling rtadvd will enable the network behind this firewall to use [http://en.wikipedia.org/wiki/IPv6#Stateless_address_autoconfiguration stateless auto configuration], which basically means that the firewall will periodically broadcast router advertisements using ICMPv6. Clients can also request a router advertisement by using their auto configured [http://en.wikipedia.org/wiki/IPv6#Link-local_addresses_and_zone_indices link-local] IPv6 address. The firewall will respond with a router advertisement, which contains the prefix in use on the network. The clients will then stick their mac/hardware address in something called [http://en.wikipedia.org/wiki/MAC_address modified EUI-64] format on the end of the prefix, to generate a valid globally unique IPv6 address. I add the following to &amp;#039;&amp;#039;/etc/rc.conf&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tykling@fw1 ~]$ grep rtadvd /etc/rc.conf&lt;br /&gt;
rtadvd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
rtadvd_interfaces=&amp;quot;carp1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I reboot the firewall again (to avoid rebooting, set the IP addresses on the interfaces and then start rtadvd manually), and I can see with tcpdump that rtadvd is doing its job of transmitting router advertisements to the network:&lt;br /&gt;
&lt;br /&gt;
... to be continued...&lt;/div&gt;</summary>
		<author><name>Tykling</name></author>
	</entry>
</feed>