IPv6

1. NAT64及びDNS64によるIPv6の導入
1.1 TaygaによるNAT64の導入


NAT64を利用してLAN内部にIPv6環境を導入し、インターネットへの通信はIPv4にプロトコル変換することでIPv6環境のままでIPv4及びIPv6の通信を実現する。

Tayga公式:TAYGA -NAT64 for Linux

apt-getによりTaygaをインストールする。
# sudo apt-get install tayga

  • 事前準備(Linux)
IPv6のNAT64を実施するために物理インタフェースに割当てるIPアドレスは以下とする
Interface: enp0s25

IPv4
Address: 192.168.254.1/24
Gateway: 192.168.254.254
DNS : 127.0.0.1

IPv6
Address: 2001:db8:1::1/64
Gateway: 2001:db8:1::ffff
DNS : ::1

IPv4及びIPv6アドレスを設定する
# sudo nmcli connection modify enp0s25 ipv4.method manual ipv4.addresses 192.168.254.1 ipv4.gateway 192.168.254.254 ipv4.dns 127.0.0.1
# sudo nmcli connection modify enp0s25 ipv6.method manual ipv6.addresses 2001:db8:1::1/64 ipv6.gateway 2001:db8:1::ffff ipv6.dns ::1

設定値入力の確認
# sudo nmcli connection show enp0s25

ipv4.method:                            manual
ipv4.dns:                               127.0.0.1
ipv4.addresses:                         192.168.254.1/24
ipv4.gateway:                           192.168.254.254

ipv6.method:                            manual
ipv6.dns:                               ::1
ipv6.addresses:                         2001:db8:1::1/64
ipv6.gateway:                           2001:db8:1::ffff

設定値の反映
sudo nmcli connection down enp0s25
sudo nmcli connection up enp0s25

設定値の適用確認
# sudo ip address show
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.1/24 brd 192.168.254.255 scope global enp0s25
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::****:****:****:****/64 scope link 
       valid_lft forever preferred_lft forever

  • IPv6のフォワーディング設定

Linuxのデフォルトでは、IPv6のフォワーディングが無効化されているため、これを有効化してルータとして動作させる。
# sudo vim /etc/sysctl.d/10-ipv6-privacy.conf
 net.ipv6.conf.all.forwarding=1
# sysctl --system

設定の反映確認
# sudo sysctl -a | grep net.ipv6.conf.all.forwarding
 net.ipv6.conf.all.forwarding = 1

  • 事前準備(ルータ)
ルータにIPv6のゲートウェイ及びルーティングの設定を行う。
この時、Vlan100はIPv6用のWindows端末、Vlan254はLinuxサーバとする。
また、DNS64にてIPv4がアサインされるIPv6アドレスプールは2001:db8:1:ffff::/96とする。

Vlan100
IPv6 Address: 2001:db8::ffff/64
IPv6 Link-Local: fe80::ffff

Vlan254
IPv4 Address: 192.168.254.254/24
IPv6 Address: 2001:db8:1::ffff/64
IPv6 Link-Local: fe80::ffff

DNS64変換用のIPv6アドレスプール
2001:db8:1:ffff::/96

以下、Ciscoルーターの例
Router# configure terminal
Router(config)# ipv6 unicast-routing
Router(config)# ipv6 cef
Router(config)# 
Router(config-if)# interface Vlan100
Router(config-if)#  ipv6 address FE80::FFFF link-local
Router(config-if)#  ipv6 address 2001:DB8::FFFF/64
Router(config-if)#  ipv6 enable
Router(config-if)#  ipv6 nd other-config-flag
Router(config-if)# exit
Router(config)# 
Router(config)# interface Vlan254
Router(config-if)#  ip address 192.168.254.254 255.255.255.0
Router(config-if)#  ip nat inside
Router(config-if)#  ipv6 address FE80::FFFF link-local
Router(config-if)#  ipv6 address 2001:DB8:1::FFFF/64
Router(config-if)#  ipv6 enable
Router(config-if)#  ipv6 nd other-config-flag
Router(config-if)# exit
Router(config)# 
Router(config)# ipv6 route 2001:DB8:1:FFFF::/96 Vlan254 2001:DB8:1::1
Router(config)# end

  • Taygaのconfig設定

Taygaで使用するNAT64のIPv4アドレス、及びNAT64変換用IPv4, IPv6プールは以下とする。
Config: /etc/tayga.conf

IPv4 Address: 192.168.255.1
IPv4 Pool: 192.168.255.0/24
IPv6 Pool: 2001:db8:1:ffff::/96

Taygaのコンフィグ設定
# sudo vim /etc/tayga.conf
 ipv4-addr 192.168.255.1
 prefix 2001:db8:1:ffff::/96
 dynamic-pool 192.168.255.0/24

  • TaygaのNAT64インタフェース作成

TaygaのNAT64インタフェースを作成し、IPv4, IPv6アドレス及びルーティングを関連付ける。また、iptables設定よりIPv4変換後のNAPT設定を行う。
# sudo tayga --mktun
# sudo ip link set up dev nat64

# sudo ip address add 192.168.254.1 dev nat64
# sudo ip address add 2001:db8:1::1 dev nat64
# sudo ip route add 192.168.255.0/24 dev nat64
# sudo ip route add 2001:db8:1:ffff::/96 dev nat64

# sudo iptables -t nat -I POSTROUTING 1 -o enp0s25 -j MASQUERADE
# sudo iptables -I FORWARD 1 -i enp0s25 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
# sudo iptables -I FORWARD 2 -i nat64 -o enp0s25 -j ACCEPT

  • Taygaの起動

Taygaを起動し、ゲートウェイに通信が可能か確認する。
# sudo tayga
# ping6 2001:db8:1:ffff::192.168.254.1
PING 2001:db8:1:ffff::192.168.254.1(2001:db8:1:ffff::c0a8:fe01) 56 data bytes
64 bytes from 2001:db8:1:ffff::c0a8:fe01: icmp_seq=1 ttl=63 time=0.365 ms
64 bytes from 2001:db8:1:ffff::c0a8:fe01: icmp_seq=2 ttl=63 time=0.198 ms

  • NAT64動作の確認

IPv6の端末より通信を行い、NAT64変換が行われていることを確認する。

Win端末側(IPv6: 2001:db8::1/64)
C:\>ping 2001:db8:1:ffff::192.168.254.1
Pinging 2001:db8:1:ffff::c0a8:fe01 with 32 bytes of data:
Reply from 2001:db8:1:ffff::c0a8:fe01: time<1ms

Linux側(IPv6: 2001:db8:1::1/64)
cat /var/spool/tayga/dynamic.map
192.168.255.53	2001:db8::1	1474736673

上記ログより、Win端末がNAT64変換で2001:db8::1 ⇔ 192.168.255.53と変換されていることが確認できる。





1.2 bind9によるDNS64の導入

DNS64によりIPv4アドレスをIPv6アドレスにマッピングし、IPv6端末からのAAAAのDNSクエリをマッピングしたAAAAレコードで応答する。

  • bind9のconfig設定

Taygaで使用するNAT64のIPv4アドレス、及びNAT64変換用IPv4, IPv6プールは以下とする。
Config: /etc/bind/named.conf.options

マッピング先IPv6: 2001:db8:1:ffff::/96
再帰クエリ: yes
DNSSEC応答: yes

bind9のコンフィグ設定
# sudo vim /etc/bind/named.conf.options
 acl rfc1918 { 10/8; 192.168/16; 172.16/12; };
 dnssec-validation no;
 listen-on-v6 { any; };
 	allow-query { 
 		::1;
 		127.0.0.1;
 		192.168/16; 
 		2001:db8::/64;
 	};
 allow-transfer { none; };
 allow-recursion { rfc1918; 127.0.0.1; ::1; 2001:db8::/64; };
 
 dns64 2001:db8:1:ffff::/96 {
 	clients { any; };
 	mapped { !rfc1918; any; };
 	exclude { 2001:db8:1:ffff::/96; ::ffff:0000:0000/96; };
 	suffix ::;
 	recursive-only yes;
 	break-dnssec yes;
 };
 dns64-server "dns64.example.jp.";
 dns64-contact "hostmaster.example.jp.";

IPv6クライアント端末よりAAAAクエリ確認
C:\>nslookup
Default Server:  UnKnown
Address:  2001:db8:1::1

> www.google.co.jp.
Server:  UnKnown
Address:  2001:db8:1::1

Non-authoritative answer:
Name:    www.google.co.jp
Addresses:  2001:db8:1:ffff::acd9:1a63
          172.217.26.99

上記ログよりAAAAレコードがIPv4よりIPv6にマッピングされ、AAAAレコードで応答していることが確認出来る。


最終更新:2016年09月25日 04:10
添付ファイル