NAT64

NAT64 är en teknologi som används för att saker med bara IPv6 ska kunna nå saker med bara IPv4. Vi har därför skapat en virtuell maskin så ni kan testa NAT64 om ni vill. Ladda ner den virtuella NAT64-burken här, den är skapad i Virtualbox – logga in med nat64 och lösen nat64 men vill ni hellre köra den i t.ex Vmware så hittar ni en guide hur man konverterar mellan dem här.
Klicka här om du vill veta mer hur NAT64 fungerar tekniskt.

Så här gör du
Om du redan har ett konto och subnät från SIXXS så kan du hoppa över de två första punkterna som beskriver hur du gör.
Du kan så klart använda andra IPv6-tunnelbroker eller native IPv6, det viktiga är att du har en fungerade /48 routad till burken. ( Du kan klara dig på mindre än /48 men det kräver att du ändrar på mer ställen i nat64-scriptet och du behöver minst en /48 och en /96. )
I den virtuella maskinen är eth0 uppsatt som “uplink” och kör DHCP för att få IPv4-adress. eth1 är nätet där datorer ska anslutas och där får de adress och DNS via DHCPv6.

Testdator med bara IPv6 <----> eth1 <-- NAT64 ---> eth0 —->

1: NAT64-burken är anpassad till att köra IPv6 via SIXXS Aiccu så du behöver skapa ett konto där, alternativt använda ett du redan har. I /etc/aiccu.conf ändrar du username och password till det du har/sätter upp.
Se http://www.sixxs.net/faq/account/?faq=10steps för mer detaljer.

2: Nästa steg är att ansöka om subnät – “Request Subnet” – Du behöver ha din SIXXS-tunnel uppe en vecka innan du kan ansöka om det.

3: I filen /usr/local/bin/nat64 som du ser nedan ändrar du bara PREFIX till din /48 och IPV4 som du vill använda.

4: Om allt är rätt uppsatt och du kör nat64-scriptet så har du en fungerade NAT64-gateway.
nat64 skapar /etc/bind/named.conf.options, /etc/tayga.conf, /etc/radvd.conf och /etc/dhcp/dhcpd.conf, sätter upp IPv6 på eth1-interfacet och startar sedan bind, radvd, dhcpd och aktiverar tayga. Läs mer om tayga här.

#!/bin/sh
PREFIX=2001:16d8:ccc0
ETH1PREFIX=$PREFIX:666::
NAT64=${PREFIX}:64::/96
IPV4=10.222.222

ifconfig eth1 up
ip address add ${ETH1PREFIX}1/64 dev eth1

echo "tun-device nat64
ipv4-addr $IPV4.1
prefix $NAT64
dynamic-pool $IPV4.0/24
" > /etc/tayga.conf

echo "
options {
        directory \"/var/cache/bind\";
        auth-nxdomain no;
        listen-on-v6 { any; };
        allow-query { $PREFIX::/48; };
        dns64 $NAT64 {
                clients { $PREFIX::/48; };
        };
};" > /etc/bind/named.conf.options


echo "
authoritative; 
option dhcp6.name-servers ${ETH1PREFIX}1;
default-lease-time 600;
max-lease-time 1200; 
log-facility local7; 
subnet6 ${ETH1PREFIX}/64 {
	range6 $ETH1PREFIX ${ETH1PREFIX}ff;
}
">/etc/dhcp/dhcpd.conf
touch /var/lib/dhcp/dhcp6.leases
chmod 777 /var/lib/dhcp/dhcp6.leases
chown dhcpd.dhcpd /var/lib/dhcp/dhcp6.leases
chown dhcpd.dhcpd /var/run/dhcpd6.pid
dhcpd -6 -cf /etc/dhcp/dhcpd.conf

echo "
interface eth1 { 
        AdvSendAdvert on;
        MinRtrAdvInterval 3; 
        MaxRtrAdvInterval 10;
	AdvManagedFlag on;
        AdvOtherConfigFlag on;
        prefix $ETH1PREFIX/64 { 
                AdvOnLink on; 
                AdvAutonomous off; 
                AdvRouterAddr on; 
        };
};
"> /etc/radvd.conf


tayga --mktun
ip link set nat64 up
ip addr add $IPV4.1 dev nat64
ip addr add ${PREFIX}:64::1 dev nat64
ip route add $IPV4.0/24 dev nat64
ip route add $NAT64 dev nat64
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i nat64 -o eth0 -j ACCEPT
tayga --config /etc/tayga.conf

/etc/init.d/bind9 restart
/etc/init.d/radvd restart