dhcp6s自動設定

投稿日: 2 Comments

またまたここの続き。dhcp6cで入手したIPv6のDNSサーバをdhcp6sで配るようにここを参考に設定してみた。

/usr/ports/net/mpd-l2tp-ipv6pd-client を入れると、mpd5に加えてdhcp6cの設定スクリプトを設定してくれるのだけど、このスクリプトで呼ばれる設定ファイルのテンプレート dhcp6c.conf.in にdnsサーバを聞きに行く設定と、それで得られたdnsサーバアドレスをresolv.confとdhcp6s.confに書く設定を追加。

ついでに、dhcp6cのstart/stopに同期して、dhcp6sも動くように設定。止める方はdhcp6c_pd.shのstopのスクリプト内に記載。

#!/bin/sh

mv /etc/resolv.conf /etc/resolv.conf.bak
cp /etc/resolv.conf.in /etc/resolv.conf

mv /usr/local/etc/dhcp6s.conf /usr/local/etc/dhcp6s.conf.bak

for nameserver in $new_domain_name_servers; do
      echo nameserver $nameserver >> /etc/resolv.conf
      echo option domain-name-servers $nameserver \; >> /usr/local/etc/dhcp6s.conf
done

/usr/local/etc/rc.d/dhcp6s start

L2TPでIPv6をつなぐ (2)

投稿日: Leave a comment

ここの続き。

rtadvdのpidにSIGUSR1を投げて状態をダンプさせてみると、RAにプレフィックスが入っていないことが判明。rtadvdのマニュアルを見ると

設定ファイル中でインタフェースに対する記述が存在しない、または設定ファイルが存在しない場合には、rtadvd は全てのパラメータに対してデフォルト値を設定します。特に、rtadvd は全てのインタフェースの経路を経路表より取得し、リンク上のプレフィックスとして通知します。

とあるので、経路表(ルーティングテーブル)がおかしいと考えて、アドレスとにらめっこしてみた。

普通IPv6アドレスのプレフィックス長は64ビットのはずだけど、fxp0に割り当てられたアドレスは56になっている。もしかしたら、dhcp6cが付けたアドレスがおかしいのかもと思い、sla-lenを64-56=8に設定し、ついでにsla-idをここにあるように1に変更した。ちなみに、デフォルトではsla-id, sla-lenともに0になっていた。

すると、RAがプレフィックスを流すようになったので、rtadvd.confでMフラグを指定してIPv6アドレスをdhcp6sで配るようにしていたのを、Oフラグに変えてdhcp6sからはDNSサーバ情報だけを流すように変更したら、VistaでIPv6アドレスを自動生成してくれるようになった。もちろん亀も踊っている。

dhcp6sで配るDNSサーバ情報は相変わらず決め打ちにしちゃっているので、何とかdhcp6cで受け取ったアドレスを配るようにしたいところ。dhcp6c.confでscriptを実行できるっぽいので、もう少し調べてみようと思う。