30 Days of Geek – Day 12 – What area do you want to expand your skills into?

This is an easy one. Data Communications.

The world we live in is pushing more and more demand on fast and reliable communication for computers and automation systems. Applications are pushing for 1GbE and even 10GbE speeds, which means backbone networks need to keep up and reach 100Gb and 1Tb. Reliable communication and address space exhaustion are currently number one issues for customers and new technologies are being implemented every day to combat this (IPv6, MPLS, HSRP).

More and more everyday tasks are being moved onto the internet, eg VoIP pushing the demand higher and higher.

Data communications is an ever growing field that is easy to be left behind in, and it’s something that I want to be apart of.

IPv6 on FreeBSD 7.2 (Tunnel Broker / HE)

So I moved from Gentoo (awesome distro, on a crappy kernel) to FreeBSD (awesome distro on an awesome kernel). So far I’m loving it. I’ve started to move away from bloated software as well like Openfire and basically anything else that runs on JAVA (eww).

At first IPv6 (tunnel with HE) seemed hard to setup on FreeBSD, I done little bits, but fell into a few pit holes along the way. When I look back it seems so simple.

First problem I found was that IPFW was blocking IPv6 traffic. Simple solution is to do,

00400 allow ip6 from any to any

The other issues I found was examples were a bit misleading in guides as to rc.conf setup. This is what I ended up with.

ipv6_enable=”YES”
ipv6_gateway_enable=”YES”
ipv6_router_enable=”YES”
ipv6_router=”/usr/sbin/route6d”
gif_interfaces=”gif0″
gifconfig_gif0=”218.214.124.179 66.220.18.42″
ipv6_ifconfig_gif0=”2001:470:c:411::2 2001:470:c:411::1 prefixlen 128″
ipv6_defaultrouter=”2001:470:c:411::1″
ipv6_ifconfig_vlan2=”2001:470:d:411::1/64″
rtadvd_enable=”YES”

218.214.124.179 was the IP address of where my tunnel came in.
66.220.18.42 is the server IPv4 address.
2001:470:c:411::1 is the server IPv6 address.
2001:470:c:411::2 is the client IPv6 address.
vlan2 is the interface I want IPv6 on.
2001:470:d:411::1 is an address from my routed IPv6 /64

Once you have this, reboot and you should have working IPv6 that announces to your LAN. Surprised me that all the configuration can be done in the one file.

For those interested, here is glasshouse.internaluse.net rc.conf

ateway_enable=”YES”
hostname=”glasshouse.internaluse.net”
keymap=”us.iso”
linux_enable=”YES”
sshd_enable=”YES”
firewall_enable=”YES”
firewall_script=”/usr/local/etc/ipfw.rules”
ifconfig_em0=”up”
cloned_interfaces=”vlan2 vlan3″
ifconfig_vlan2=”inet 172.27.2.1 netmask 255.255.255.0 vlan 2 vlandev em0″
ifconfig_vlan3=”inet 172.27.1.2 netmask 255.255.255.0 vlan 3 vlandev em0″
ifconfig_vlan2_alias0=”218.214.200.17 netmask 255.255.255.248″
ppp_enable=”YES”
ppp_mode=”ddial”
ppp_profile=”people”
dhcpd_enable=”YES”
dhcpd_ifaces=”vlan2″
named_enable=”YES”
mysql_enable=”YES”
lighttpd_enable=”YES”
inetd_enable=”YES”
jabberd_enable=”YES”
dovecot_enable=”YES”
saslauthd_enable=”YES”
sendmail_enable=”YES”
ntpd_enabled=”YES”
apcupsd_enable=”YES”
jabber_pymsn_enable=”YES”
transmission_enable=”YES”
transmission_download_dir=”/mnt/storage/incoming”
samba_enable=”YES”
enable_quotas=”YES”
check_quotas=”NO”
ircd_ratbox_enable=”YES”
ipv6_enable=”YES”
ipv6_gateway_enable=”YES”
ipv6_router_enable=”YES”
ipv6_router=”/usr/sbin/route6d”
gif_interfaces=”gif0″
gifconfig_gif0=”218.214.124.179 66.220.18.42″
ipv6_ifconfig_gif0=”2001:470:c:411::2 2001:470:c:411::1 prefixlen 128″
ipv6_defaultrouter=”2001:470:c:411::1″
ipv6_ifconfig_vlan2=”2001:470:d:411::1/64″
rtadvd_enable=”YES”

Australian IPv6 Tunnel Broker

Redhatter from ##australia on Freenode, was kind enough to walk me through the steps of setting up AARNet IPv6 tunnel for my Linux router. I have been using Hurricane Electric tunnel service for awhile, and have been quite pleased with the speed of that. Basically all you have to do to set this up on linux is, head over to http://broker.aarnet.net.au/ and make an account, register for a tunnel (it might throw an error about not being able to create a tunnel, just ignore this…

Prefix publishing interface is the port that you will be creating for ipv6. I set mine to sit0.
Local endpoint IPv4 address is your global IP
Local endpoint tunnel interface is the interface you use to connect to the internet. I used ppp0.

Download gw6c, compile and install. Also make sure your kernel has all the right options. That can be found in the gw6c documentation.

Below is my configuration. Bold’ed values will need to be changed.

userid=mwheeler
passwd=password
server=broker.aarnet.net.au
auth_method=any
host_type=router
prefixlen=56
if_prefix=vlan2 # This is your interface you will sharing your ipv6 with..., eg, eth1
dns_server=ns1.theskorm.net:ns2.theskorm.net
gw6_dir=/opt/ #This has to be where you install gw6c client.
auto_retry_connect=yes
retry_delay=30
retry_delay_max=300
keepalive=yes
keepalive_interval=30
tunnel_mode=v6anyv4
if_tunnel_v6v4=sit1
if_tunnel_v6udpv4=tun
if_tunnel_v4v6=sit0
client_v4=218.214.124.179 #The same ip you put in when you registered for a tunnel
client_v6=auto
template=linux
proxy_client=no
broker_list=tsp-broker-list.txt
last_server=tsp-last-server.txt
always_use_same_server=no
log_console=0
log_stderr=0
log_file=0
log_syslog=2
log_filename=gw6c.log
log_rotation_size=32
log_rotation_delete=no
syslog_facility=USER

Make sure you read through the config, and understand it. If you read the sample config provided it has comments for most things.

Once you have it configured, you can start the client. It shouldn’t say anything, and sit in the background. Have a look at ifconfig to see if an interface was created, and check netstat -r. If that all looks good try to use ping6 www.kame.net or ipv6.google.com. You should now have ipv6. Now try your computers, see if they got a proper address, and see if it can ping.

If you have any problems (I didn’t :) ) check the logs, or maybe try out wireshark.