中治@鳥取です。

先日の勉強会でヒントを得た気がしたので、おうちルータで、さらに、

  ○ OCN の IPv6 トンネル接続サービスを使った IPv6 ルータ
     http://www.ocn.ne.jp/business/ipv6/tunnel/

までさせちゃおう作戦を決行しました。あらすじは以下の通りです。
誤りや改善点の指摘は歓迎します。

1. 準備

o OCNにトンネル接続サービスを申し込む
  - トンネルのこっち側は 60.32.13.198、あっち側は 61.207.9.252
  - 使える IPv6 アドレスは 2001:380:14b::/48

2. トンネル用の仮想環境を作る

   最初、FreeBSD の jail を使おうとしたが、そのままでは tunnel を作れな
   いようなので Solaris Zone にした。

2.1 Global Zone で仮想ネットワークインターフェース作成

global# dladm create-vnic -l rge0 vnic0

global# dladm show-link
LINK        CLASS     MTU    STATE    BRIDGE     OVER
bge0        phys      1500   up       --         --
rge0        phys      1500   up       --         --
e1000g0     phys      1500   up       --         --
vnic0       vnic      1500   up       --         rge0

2.2 zone 作成

global# zfs create rpool/export/home/zone-ocnipv6
global# zonecfg -z zone-ocnipv6
zonecfg:zone-ocnipv6> info
zonename: zone-ocnipv6
zonepath: /export/home/zone-ocnipv6
brand: ipkg
autoboot: true
bootargs: 
pool: 
limitpriv: 
scheduling-class: 
ip-type: exclusive
hostid: 
fs-allowed: 
[cpu-shares: 2]
net:
        address not specified
        allowed-address not specified
        physical: vnic0
        defrouter not specified
capped-memory:
        physical: 512M
        [swap: 1G]
rctl:
        name: zone.max-swap
        value: (priv=privileged,limit=1073741824,action=deny)
rctl:
        name: zone.cpu-shares
        value: (priv=privileged,limit=2,action=none)

(たぶん、cpu-shares 以下は余計)

2.3 zone に Solaris 環境をインストール

global# zoneadm -z zone-ocnipv6 install

2.4 zone を起動

global# zoneadm -z zone-ocnipv6 boot

ここで、

zone 'zone-ocnipv6': WARNING: The zone.cpu-shares rctl is set but
zone 'zone-ocnipv6': FSS is not the default scheduling class for
zone 'zone-ocnipv6': this zone.  FSS will be used for processes
zone 'zone-ocnipv6': in the zone but to get the full benefit of FSS,
zone 'zone-ocnipv6': it should be the default scheduling class.
zone 'zone-ocnipv6': See dispadmin(1M) for more details.

という警告が出るので、きっと、上記の zonecfg でなんか余計なことをしたに
違いないのです。

3. zone-ocnipv6 でネットワークの設定

3.1 vnic0 の設定

zone# ipadm create-if vnic0
zone# ipadm create-addr -T static -a 60.32.13.198/29 vnic0/v4
zone# ipadm create-addr -T addrconf vnic0/v6
zone# ipadm create-addr -T static -a 2001:380:14b::3/64 vnic0/v6add

3.2 トンネルの設定

3.3 IPv4 でトンネルを作る

zone# dladm create-iptun -T ipv4 -a local=60.32.13.198,remote=61.207.9.252 
tunnel0

3.4 できたトンネルにリンクローカルアドレスを割り当ててもらう

zone# ipadm create-addr -T addrconf tunnel0/v6

3.5 確認

zone# dladm show-link
LINK        CLASS     MTU    STATE    BRIDGE     OVER
vnic0       vnic      1500   up       --         ?
tunnel0     iptun     1480   up       --         --

zone# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
vnic0/v4          static   ok           60.32.13.198/29
lo0/v6            static   ok           ::1/128
vnic0/v6          addrconf ok           fe80::8:20ff:fefe:30aa/10
vnic0/v6add       static   ok           2001:380:14b::3/64
vnic0/?           addrconf ok           2001:380:14b:0:8:20ff:fefe:30aa/64
tunnel0/v6        addrconf ok           fe80::3c20:dc6->fe80::3dcf:9fc

3.6 デフォルトルートの設定(不要かも…)

zone# route -p add -inet6 default fe80::3dcf:9fc

4. IPv6 ルータとしての設定

4.1 routeadm コマンドで、zone-ocnipv6 で ipv6-forwarding と ipv6-routing
    を有効にする

zone# routeadm -e ipv6-forwarding -u
zone# routeadm -e ipv6-routing -u
zone# routeadm 
              Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   enabled              enabled
               IPv6 routing   enabled              enabled
            IPv4 forwarding   disabled             disabled
            IPv6 forwarding   enabled              enabled

           Routing services   "route:default ripng:default"

Routing daemons:

                      STATE   FMRI
                   disabled   svc:/network/routing/rdisc:default
                     online   svc:/network/routing/route:default
                     online   svc:/network/routing/ndp:default
                     online   svc:/network/routing/ripng:default
                   disabled   svc:/network/routing/legacy-routing:ipv4
                   disabled   svc:/network/routing/legacy-routing:ipv6

4.2 global zone の rge0 (zone-ocnipv6 の vnic0) と同一セグメントには
    zone-ocnipv6 で 2001:380:14b:0::/64 を広告する

zone# cat /etc/inet/ndpd.conf
ifdefault AdvSendAdvertisements on
prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on
if vnic0 AdvSendAdvertisements 1
prefix 2001:380:14b:0::/64 vnic0

4.3 global zone では bge0 のセグメントに 2001:380:14b:1::/64 を広告する

global# # cat /etc/inet/ndpd.conf 
ifdefault AdvSendAdvertisements on
prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on
if bge0 AdvSendAdvertisements 1
prefix 2001:380:14b:1::/64 bge0

5. global zone でやっている IPFilter の設定を、「60.32.13.198 を出入りす
   る ipv6 プロトコルを許可する」ように修正する

   これに気づくのに2時間ほど悩んだのはくれぐれもナイショです。(^^;

6. 周辺の機器を適宜設定変更する

7. www.v6.ntt.net への到達性を確認する

7.1 zone-ocnipv6 で

zone# traceroute -n -A inet6 www.v6.ntt.net
traceroute: Warning: Multiple interfaces found; using 2001:380:14b::3 @ vnic0:1
traceroute to www.v6.ntt.net (2001:218:2001:3005::8a), 30 hops max, 60 byte 
packets
 1  2001:380:80a0::d  21.863 ms  21.606 ms  21.556 ms
 2  2001:380:80a0:6::1  21.474 ms  54.569 ms  21.533 ms
 3  2001:380:8130:11::19  22.062 ms  22.113 ms  22.498 ms
 4  2001:380:0:2e05::2  21.950 ms  23.398 ms  22.109 ms
 5  2001:218:0:6000::189  86.397 ms  117.880 ms  22.033 ms
 6  2001:218:0:2000::1cd  21.823 ms  21.839 ms  24.276 ms
 7  2001:218:0:6000::52  25.950 ms  24.962 ms  25.008 ms
 8  2001:218:2001:17::2  24.947 ms  25.819 ms  24.914 ms
 9  2001:218:2001:3005::8a  24.891 ms  24.717 ms  24.926 ms

7.2 global zone で

# traceroute -n -A inet6 www.v6.ntt.net
traceroute: Warning: Multiple interfaces found; using 2001:380:14b::2 @ rge0:1
traceroute to www.v6.ntt.net (2001:218:2001:3005::8a), 30 hops max, 60 byte 
packets
 1  2001:380:14b::3  0.392 ms  0.118 ms  0.109 ms
 2  2001:380:80a0::d  21.590 ms  21.401 ms  21.562 ms
 3  2001:380:80a0:6::2  21.677 ms  38.622 ms  21.646 ms
 4  2001:380:8130:12::19  21.708 ms  21.906 ms  21.992 ms
 5  2001:380:0:2e05::2  127.427 ms  100.023 ms  21.747 ms
 6  2001:218:0:6000::189  47.606 ms  75.928 ms  43.703 ms
 7  2001:218:0:2000::1cd  22.230 ms  23.173 ms  24.662 ms
 8  2001:218:0:6000::52  24.854 ms  24.884 ms  29.377 ms
 9  2001:218:2001:17::2  25.025 ms  25.610 ms  24.963 ms
10  2001:218:2001:3005::8a  25.140 ms  25.034 ms  25.432 ms

7.3 他のマシンでも

pc98$ traceroute6 -n www.v6.ntt.net
traceroute6 to www.v6.ntt.net (2001:218:2001:3005::8a) from 
2001:380:14b:0:200:4cff:fe17:573c, 64 hops max, 12 byte packets
 1  2001:380:14b::3  0.842 ms  0.616 ms  0.592 ms
 2  2001:380:80a0::d  22.425 ms  23.376 ms  22.360 ms
 3  2001:380:80a0:6::1  22.470 ms  22.681 ms  59.194 ms
 4  2001:380:8130:12::19  22.835 ms  54.425 ms  22.744 ms
 5  2001:380:0:2e05::2  23.130 ms  23.344 ms  22.946 ms
 6  2001:218:0:6000::189  22.656 ms  22.860 ms  205.998 ms
 7  2001:218:0:2000::1cd  22.782 ms  22.912 ms  22.892 ms
 8  2001:218:0:6000::52  25.890 ms  54.523 ms  25.730 ms
 9  2001:218:2001:17::2  26.215 ms  25.854 ms  25.526 ms
10  2001:218:2001:3005::8a  25.817 ms  25.626 ms  25.952 ms

7.4 www.kame.net でカメ動いた!

8. まとめ

正しい使い方ができている自信を持てていないけれど、Zone って便利かも。

参考文献

[1] OCN IPv6トンネル接続サービス 詳細 技術情報 | OCN for ビジネス
    http://www.ocn.ne.jp/business/ipv6/tunnel/tech.html

[2] Solaris8:矢吹さまご作成 IPv6 on Solaris のページ
    http://www.optix.org/~dxy/solaris/ipv6/
-- 
NAKAJI Hiroyuki (中治 弘行)
_______________________________________________
ug-jposug mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/ug-jposug

メールによる返信