してみるテストロゴ
Apache 2.4系でHTTP/2サーバを構築してみるテスト。

IPv6スタティックアドレスの設定

さて、サーバのIPv6スタティックアドレスを決めたら、ホストに設定します。

世の中のIPv6解説の多くが、グローバルIPv6アドレスをデフォルトゲートウェイに設定する方法で溢れていますが、IPv6では、リンクローカルアドレスをデフォルトゲートウェイに設定することもできます。

NuroやUQ-WiMAX2+といったIPv6に対応したプロバイダも、リンクローカルアドレスをデフォルトゲートウェイとして利用しています。

IPv6では、ルータ広告(RA)のリンクローカルアドレスをデフォルトゲートウェイとして自動設定できます。

自動設定せずにデフォルトゲートウェイのグローバルアドレスを設定することもできますが、毎回デフォルトゲートウェイとしてグローバルアドレスを設定すると疲れたり、管理が難しくなります。

今回はルータの設定も自前で行ってることですし、修行中の身?というわけでもないと思いますので、ルータ広告(RA)の送信元アドレスのリンクローカルアドレスをデフォルトゲートウェイに設定する方法でいきます。

なお、デフォルトゲートウェイにリンクローカルアドレスを設定しても、ホストにグローバルアドレスが設定してあれば、そのホストは、他のグローバルスコープの機器と通信できますのでご安心を。

これなら管理するグローバルIPv6アドレスは、サーバのスタティックアドレスだけで済みます。

 

ここでは、こちらのページで設定したルータから、ルータ広告を受けて、送信元のリンクローカルアドレスを、デフォルトルートとして自動設定し、その後グローバルアドレスを、スタティックアドレスとして設定します。

 

以下、LinuxとSolarisの設定方法を記載します。

いずれのホストもIPv4の設定があり、IPv4経由のSSHなどで接続している想定です。

(IPv6の設定をいじる場合は、IPv6のネットワーク経由のSSHログインだと怖いので、IPv4経由を推奨します。)

 

こちらで設定したのネットワーク構成に、Webサーバを設置する例で説明します。

ルータ広告で降ってくるデフォルトゲートウェイアドレスはFE80::1/10

設定するグローバルアドレスは、240D:XXXX:XXXX:XX01::2/64

サーバのEUI-64のインタフェースIDはYYYY:YYff:feYY:YYYYと表記します。

といった構成を設定します。

Linuxの場合

CentOS(たぶんRed hatも同じ)の場合を書いてみます。

まずはデバイスを確認

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet XX.XX.XX.XX  netmask 255.255.255.0  broadcast XX.XX.XX.XX
        inet6 fe80::YYYY:YYff:feYY:YYYYprefixlen 64  scopeid 0x20>link>
        ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
        RX packets 350  bytes 99772 (97.4 KiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 397  bytes 64056 (62.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0というデバイス(LANポート)が存在しています。

ということで、まずは、IPv6の初期設定をして、ルータ広告を受け入れるように設定します。

# vi /etc/sysconfig/network
/etc/sysconfig/network
(…省略…)
NETWORKING_IPV6=yes	←追記
(…省略…)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes		←追記
IPV6_AUTOCONF=yes	←追記

これで、リブートします。

続いて、スタティックアドレスを割り当てます。

以降、Linuxの場合、ifconfigとipコマンドの2通りの方法があります。

どちらかというと、ipコマンドの方が推奨されているようです。

 

スタティックアドレスの設定(ipconfigコマンド)

 

IPv6アドレスの追加

/sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>

# /sbin/ifconfig eth0 inet6 add 240D:XXXX:XXXX:XX01::2/128

 

IPv6アドレスの削除は

/sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>

# /sbin/ifconfig eth0 inet6 del 240D:XXXX:XXXX:XX01::2/128

 

IPv6アドレスの確認は

# /sbin/ifconfig <interface>

# /sbin/ifconfig eth0
(…省略…)
inet6 addr: fe80::YYYY:YYff:feYY:YYYY/10 Scope:Link
inet6 addr: 240D:XXXX:XXXX:XX01::2/64 Scope:Global
(…省略…)

 

スタティックアドレスの設定(ipコマンド)

 

インタフェース名の列挙

/sbin/ip link

# /sbin/ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether YY:YY:YY:YY:YY:YY brd ff:ff:ff:ff:ff:ff

 

IPv6アドレスの確認

/sbin/ip -6 addr show dev <interface>

# /sbin/ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::YYYY:YYff:feYY:YYYY/64 scope link
       valid_lft forever preferred_lft forever

 

IPv6アドレスの追加

/sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface>

# /sbin/ip -6 addr add 240D:XXXX:XXXX:XX01::2/128 dev eth0

 

IPv6アドレスの削除

/sbin/ip -6 addr del <ipv6address>/<prefixlength> dev <interface>

# /sbin/ip -6 addr del 240D:XXXX:XXXX:XX01::2/128 dev eth0

 

DNSサーバのIPv6アドレスを設定

仕上げに、プロバイダの指定するDNSサーバのIPv6アドレスを設定します。

# vi /etc/resolv.conf
/etc/resolv.conf
(…省略…)
nameserver      240D:XXXX:XXXX:XXXX::XX
nameserver      240D:XXXX:XXXX:XXXX::XX

 

Solarisの場合

こちらも、なにはともあれ、まずは、LANポートのインタフェース名を調べます。

# ipadm show-if
IFNAME     CLASS    STATE    ACTIVE OVER
lo0        loopback ok       yes    --
net0       ip       ok       yes    --

net0 という名前のインタフェースがあるようです。

これに自動設定用(addrconf)のアドレスを割り当てます。

アドレスの管理は、アドレスオブジェクト名で行います。

アドレスオブジェクトは、/で区切られた2つの部分い分けられます。

/よりも前にインタフェース名(ここでは最初に調べたnet0)を入れます。

/の後には、重複が無いように、管理者が管理しやすい名前で命名します。

ここでは、net0/v6と命名しました。

# ipadm create-addr -T addrconf net0/v6

続いて、IPv6 デーモン in.ndpd を起動します。

# /usr/lib/inet/in.ndpd

これだけで、ルータ広告が受信できるようになります。

早速、アドレスを確認します。

# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/v4           static   ok           XXX.XXX.XXX.XXX/29
lo0/v6            static   ok           ::1/128
net0/v6           addrconf ok           fe80::YYYY:YYff:feYY:YYYY/10

ついでにデフォルトゲートウェイも設定されているか見てみます。

# netstat -r
(…省略…)
Routing Table: IPv6
  Destination/Mask            Gateway                   Flags Ref   Use    If
--------------------------- --------------------------- ----- --- ------- -----
localhost                   localhost                   UH      2     108 lo0
fe80::/10                   fe80::YYYY:YYff:feYY:YYYY U       3   28875 net0
default                     fe80::1                     UG      3  724972 net0

ルータ設定の通り、ルータのサーバ側VLANのリンクローカルIP(fe80::1)が設定されています。。

このように、ルータ広告を使った自動設定ができています。

 

スタティックアドレスの設定

ただ、これでは、グローバルアドレスが無いので、外部との通信はまだできません。

そこで、さらにアドレスオブジェクトを作成して、さきほど決めたグローバルアドレス(240D:XXXX:XXXX:XX01::2)をスタティックアドレスとして設定します。

アドレスオブジェクトは、net0/v6addと命名しました。

# ipadm create-addr -T static -a 240D:XXXX:XXXX:XX01::2/64 net0/v6add

出来たか確認します。

# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/v4           static   ok           XXX.XXX.XXX.XXX/29
lo0/v6            static   ok           ::1/128
net0/v6           addrconf ok           fe80::XXXX:XXXX:XXXX:XXXX/10
net0/v6           addrconf ok          240D:XXXX:XXXX:XX01:YYYY:YYff:feYY:YYYY/64	←EUI-64のアドレスが自動追加
net0/v6add        static   ok          240D:XXXX:XXXX:XX01::2/64	←スタティックアドレスが追加

ルーティングも確認します。

# netstat -r
(…省略…)
Routing Table: IPv6
  Destination/Mask            Gateway                   Flags Ref   Use    If
--------------------------- --------------------------- ----- --- ------- -----
localhost                   localhost                   UH      2     108 lo0
240D:XXXX:XXXX:XX01::/64  240D:XXXX:XXXX:XX01::2   U       2       0 net0
240D:XXXX:XXXX:XX01::/64  240D:XXXX:XXXX:XX01:YYYY:YYff:feYY:YYYY U       2       0 net0
fe80::/10                   fe80::YYYY:YYff:feYY:YYYY U       3       7 net0
default                     fe80::1                     UG      3      69 net0

アドレスオブジェクトの削除

スタティックアドレスや、自動設定されたアドレスを修正する場合は、いったん削除する必要があります。

# ipadm delete-addr net0/v6add

ルータから、間違ったルータ広告でグローバルアドレスを振ってしまった場合などは、net0/v6をいったん削除して、再度作成する必要があります。

このような場合は、IPv4経由のSSH接続をしていないと、ターミナルが死ぬのでご注意ください。

 

DNSサーバのIPv6アドレスを設定

仕上げに、プロバイダの指定するDNSサーバのIPv6アドレスを設定します。

# vi /etc/resolv.conf
/etc/resolv.conf
(…省略…)
nameserver      240D:XXXX:XXXX:XXXX::XX
nameserver      240D:XXXX:XXXX:XXXX::XX

 

IPv6のtracerouteで経路を確認

最後にtracerouteでも確認します。

ここでは、こちらのページで設定したトラフィックフィルタなら、tracerouteの戻りのパケットも受信できるはずです。

# traceroute -A inet6 www.facebook.com
traceroute to www.facebook.com (2a03:2880:f00f:1e:face:b00c:0:25de), 30 hops max, 60 byte packets
 1  240d:XXXX:XXXX:XXXX::XXXX  0.773 ms  0.737 ms  0.641 ms
 2  240d:YYYY:YYYY:YYYY::YYYY  3.400 ms  3.288 ms  3.388 ms
 3  240d:ZZZZ:ZZZZ:ZZZZ::ZZZZ  3.477 ms  2.637 ms  2.942 ms
(…省略…)
10  edge-star-mini6-shv-01-nrt1.facebook.com (2a03:2880:f00f:1e:face:b00c:0:25de)  2.912 ms  2.668 ms  2.662 ms

余談ですが、facebookのIPv6アドレスのインタフェースIDの上位32ビットは、face:b00cとなっています。0(ゼロ)をo(オー)、末尾のcをkと読ませるアナグラムといったところでしょうか。

NEXT >> IPv6対応ネームサーバのインストールと設定

©Copyrights 2015-2023, non-standard programmer

このサイトは、あくまでも私の個人的体験を、綴ったものです。 軽く参考程度にご利用ください。