Monitoring Station

This is a Dell laptop running Linux Fedora (config) with some packages:

Basic IPv6 configuration

/etc/sysconfig/network

NETWORKING=yes
HOSTNAME=www.cisconetworkers6.com
#
# Default IPv6 gateway, has higher priority to RA
IPV6_DEFAULTGW=2a01:3e0:3::1
#
# Don't listen to RA
IPV6_AUTOCONF=NO
IPV6FORWARDING=NO
#
# Automatic 6to4 tunnels?
IPV6_AUTOTUNNEL=NO

/etc/sysconfig/network-scripts/ifcfg-vlan...

The IPv6-enabled interface.
# Broadcom Corporation BCM4401 100Base-T
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=yes
IPV6ADDR=2a01:3e0:3::2/64
IPV6_DEFAULTGW=2a01:3e0:3::1
IPV6_AUTOCONF=no
IPV6_ROUTER=no
IPV6_MTU=1480
PEERDNS=yes
USERCTL=no

Apache Web Server

/etc/httpd/conf/httpd.conf

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the 
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 80
Here is the PHP script which displays an animated GIF whether you are using IPv6 :-) Thanks to KAME for the idea of this graphical element
if (strstr($_SERVER['REMOTE_ADDR'],":")) {
        print("<img src=dragonanime.gif>") ;
} else {
        print("<img src=dragon.gif>") ;
}
print("Your address is $_SERVER[REMOTE_ADDR].<br>") ;

DNS

/etc/named.conf

zone "cisconetworkers6.com" IN {
       type master;
       file "named.ipv6";
};

zone "3.0.0.0.0.e.3.0.1.0.a.2.ip6.arpa" IN {
        type master;
        file "named.rev.ipv6";
        allow-update { localnets; };
};

named.ipv6

$TTL 1d ; Default TTL (bind 8 needs this, bind 9 ignores it)

@       IN SOA www.cisconetworkers6. evyncke.cisco.com. (
                                        2008011102
                                        1H      ; refresh
                                        15M     ; retry
                                        1D      ; expiry
                                        3H      ) ; minimum

                IN      NS              www.cisconetworkers6.com.


@ 3600 IN A 1.2.3.4 
@ 3600 IN AAAA 2001:608:100:6::2 
@ 3600 IN AAAA 2001:608:100:7::2 
@ 3600 IN AAAA 2001:608:100:8::2 
@ 3600 IN AAAA 2001:608:100:9::2 

www 3600 IN A 1.2.3.4
www 3600 IN AAAA 2001:608:100:6::2 
www 3600 IN AAAA 2001:608:100:7::2 
www 3600 IN AAAA 2001:608:100:8::2 
www 3600 IN AAAA 2001:608:100:9::2 

isr 3600 IN A 1.2.3.4
isr 3600 IN AAAA 2001:608:100:6::1 
isr 3600 IN AAAA 2001:608:100:7::1 
isr 3600 IN AAAA 2001:608:100:8::1 
isr 3600 IN AAAA 2001:608:100:9::1 

named.rev.ipv6

$TTL 1d ; Default TTL (bind 8 needs this, bind 9 ignores it)

@       IN SOA www.cisconetworkers6. evyncke.cisco.com. (
                                        2009011200
                                        1H      ; refresh
                                        15M     ; retry
                                        1D      ; expiry
                                        3H      ) ; minimum

                IN      NS              www.cisconetworkers6.com.

;
;       Subnet 2a01:3e0:3:0::/64
;
$ORIGIN 0.0.0.0.3.0.0.0.0.e.3.0.1.0.a.2.ip6.arpa.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR             isr.cisconetworkers6.com.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR             www.cisconetworkers6.com.


* IN PTR        otherhosts.cisconetworkers6.com.

NDPMON

/usr/local/etc/ndpmon/config_ndpmon.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="config.xsl" ?>
<!DOCTYPE config_ndpmon SYSTEM "/usr/local/etc/ndpmon/config_ndpmon.dtd">
<config_ndpmon>
        <ignor_autoconf>1</ignor_autoconf>
        <syslog_facility>LOG_LOCAL1</syslog_facility>
        <admin_mail>evyncke@cisco.com</admin_mail>
        <actions_low_pri>
                <sendmail>0</sendmail>
                <syslog>1</syslog>
                <exec_pipe_program>/usr/local/ndpmon/demopipeprogram.pl</exec_pipe_program>
        </actions_low_pri>
        <actions_high_pri>
                <sendmail>1</sendmail>
                <syslog>1</syslog>
                <exec_pipe_program>/usr/local/ndpmon/demopipeprogram2.pl</exec_pipe_program>
        </actions_high_pri>
        <use_reverse_hostlookups>1</use_reverse_hostlookups>
        <routers>
                <router>
                        <mac>0:1a:2f:87:56:24</mac>
                        <lla>fe80:0:0:0:021a:2fff:fe87:5624</lla>
                        <prefixes>
                                <prefix mask="64">2A01:03E0:0003:0:0:0:0:0</prefix>
                        </prefixes>
                        <addresses/>
                </router>
        </routers>
</config_ndpmon>

RAMOND

/etc/ramond.conf

<?xml version="1.0" encoding="ISO-8859-15"?>
<ramond logfile="/var/log/ramond.log">

  <!-- Normal PREFIX -->
  <rule prefix="2a01:3e0:3::/64" lifetime="0" interface="eth0">
   <execute>/root/ramond/demo.pl native-router-killed</execute>
  </rule>

  <!-- Normal prefix -->
  <rule prefix="2a01:3e0:3::/64" interface="eth0">
   <!-- do nothing -->
  </rule>

  <!-- 6to4 PREFIX -->
  <rule prefix="2002::/16">
   <execute>/root/ramond/demo.pl 6to4-advertised</execute>
   <clear/>
  </rule>

  <!-- ASSIGNED, BUT NOT HERE -->
  <rule prefix="2000::/3">
   <execute>/root/ramond/demo.pl unknown-assigned-prefix</execute>
  </rule>

  <!-- UNKNOWN PREFIX -->
  <rule prefix="::/0">
   <execute>/root/ramond/demo.pl unknown-prefix</execute>
   <clear/>
  </rule>

</ramond>

MRTG

/etc/mrtg/mrtg.cfg

# run 'sh snmp mib ifmib ifindex' to get the ifindex values
Target[tunnel]: 1:hidden@[2001:608:100:6::1]
MaxBytes[tunnel]: 12500000
Options[tunnel]: bits
Title[tunnel]: IPv6 Tunnel Traffic Analysis
PageTop[tunnel]: <H1>Stats for IPv6 Traffic to the Internet</H1>
WithPeak[tunnel]: ymw

Target[neighbours]: `/root/getipv6neighbors_bcn`
MaxBytes[neighbours]: 1000
Options[neighbours]: nopercent,gauge
Title[neighbours]: IPv6 Neighbours
PageTop[neighbours]: <H1>IPv6 Neighbours</H1>
YLegend[neighbours]: Number of IPv6 Neighbours
Legend2[neighbours]: Globally Routable neighbours
Legend1[neighbours]: Total number of neighbours (incl. link local)
LegendO[neighbours]:  global:
LegendI[neighbours]:  global+ll:
ShortLegend[neighbours]: addr
WithPeak[neighbours]: ymw

/root/getipv6neighbors

#!/usr/bin/perl
use Net::Appliance::Session;

my $s = Net::Appliance::Session->new(Host => '....',
       Transport => 'SSH');

$s->connect(Name => 'user', Password => 'password');
@output = $s->cmd('show ipv6 neighbor');
$s->end_privileged;

$s->close;

$total=0 ;
$global=0 ;
$size = scalar @output ;

foreach (@output) {
       $total++ if (m|^.*:.*:|) ;
       $global++ if (m|^2001:|) ;
}
print "$total\n$global\nunknown\nIPv6 Router\n";