IPv6 PPPoE 対応ルータ

投稿日: Leave a comment

FreeBSDでやっているIPv6トンネル over L2TPを引越し先でIPv6 PPPoEに変えようと思っていたけど、サーバ内でトンネル掘るとパケットフィルタのルールが複雑になってわけわからなくなりそう(というかすでにわけわからない)なので、IPv6 PPPoEに対応したルータを調べていたら、ヤマハのNVR500RTX810というのを見つけた。

前者はひかり電話機能付き、後者はVPN機能豊富なモデルで、付加機能が違うらしい。

ひかり電話対応というので色々調べていたら、こんなページを見つけた。
NTTから貸し出されるひかり電話ルータのONU出力を引っ張り出してつなげればひかり電話が使えるようになるとのこと。ただし、光ネクストのみ。Bフレッツと光ネクストとではひかり電話の仕組みが違うらしい。詳細不明。

じゃぁ、光ネクストでひかり電話使うならNVR500がいいかと思うと、SIPサーバ機能が無いらしく、スマートフォンをひかり電話の子機に出来ない。意外と便利で使っているだけにちょっと残念。あと、NTT指定ルータを使わないので何かあったときに困りそう。

では、ひかり電話のルータは活かしつつ、PPPoEブリッジのみにしておいて、NVR500なりRTX810からPPPoEv4/v6でつないであげれば、ひかり電話のルータのSIPは使えるはずで、あとはLANやひかり電話のルータとヤマハのルータがIPで繋げられるかどうかがポイント。

なんか、絵を描かないとわかりにくくなってきた。

ひかり回線–(1)–[ひかり電話ルータ]–(2)–[YAMAHA]–(3)–LAN

としたときに、LANからひかり電話ルータまでIPで到達できないとSIPで通信できないわけで、ポイントは

  • YAMAHAルータの(2)側にIPアドレスをふれるかどうか。
  • YAMAHAルータで(2)側・(3)側・WAN(PPPoE)でルーティングしてくれるかどうか。

ということになりそう。

まぁ、出来なきゃ出来ないで諦めるけど、VPNで外から入れるようにはしておきたいと考えると、VPNが充実しているRTX810が良さげ。

もうちょっと調べてみたら、装置を多段につなぐときはPPPoEを一番内側におけと書いているページを発見。自分の考えとだいたい合っていて安心した。

「ネットワークパスが見つかりません」対策

投稿日: Leave a comment

samba立ち上げのところでぶんちゃんから指摘もらったけど、結局VISTA機から名前でサーバにアクセス出来ない状態が続いている。正確にはスリープした後に問題が起きる。

\\tobyでアクセスすると「エラー コード: 0x80070035 ネットワーク パスが見つかりません。」と表示される。\\192.168.1.2ならOK。なので名前解決ができていないことまではわかったのだけど、sambaをWINSサーバにしてDHCPでWINSサーバを通知してもダメ、lmhostsに書いてもダメ、となにがなんだかわからん状態。

そして、よく分からないので、lmhostsのエントリに#PREをつけてみたり、hostsファイルにも書いてみたりしていたら名前でアクセスできるようになった。

何が良かったか一つずつ戻して探ってみようと思って、lmhostsとhostsのそれぞれのエントリをコメントアウトしてスリープさせてみたけど、何やっても\\tobyでアクセスできている。何が良かったのか謎。

一旦、lmhostsとhostsのtobyの行はすべてコメントアウトにしてしばらく様子を見て見ることにする。

(2011/10/21)
PCを起こしてみたらまたアクセスできなくなったので、lmhosts、hostsの順にtobyのエントリを追加したらhostsを書いた時点でアクセスできるようになった。というわけで、vistaはどうやらhostsファイルを見に行くらしい。何でDNS見に行かないんだろうか。もしかしたらAAAAを持ってるとダメなのかも?

(2011/10/24)
DNSサーバのzoneファイルのAAAAレコードをコメントアウトしたら、hostsに書かなくても\\tobyでアクセスできるようになった。AAAAを引いちゃうと自ホストもAAAAでアドレスを引けないとダメなのか。
ぶんちゃんコメントもあわせて考えると、自ホストのAAAAレコードが必要な気がしてきた。

DHCPv6-PDで付けられるアドレス

投稿日: Leave a comment

wide-dhcpv6のDHCPV6-PDでLAN側のインターフェースに付けられるアドレスが自動設定のアドレスで扱いにくいので、今まではaliasで prefix::1というアドレスをつけていたのだけど、ここパッチを参考にprefix::1をDHCPv6-PDでつけるようにしてみた。(不等号の向きが逆の気がする。。。)

diff -uNr wide-dhcpv6-20080615_orig/prefixconf.c wide-dhcpv6-20080615/prefixconf.c
--- wide-dhcpv6-20080615_orig/prefixconf.c      2007-03-21 18:52:55.000000000 +0900
+++ wide-dhcpv6-20080615/prefixconf.c   2011-10-12 17:33:50.000000000 +0900
@@ -483,8 +483,10 @@

        /* configure the corresponding address */
        ifpfx->ifaddr = ifpfx->paddr;
-       for (i = 15; i >= pconf->ifid_len / 8; i--)
-               ifpfx->ifaddr.sin6_addr.s6_addr[i] = pconf->ifid[i];
+       i = 15;
+       ifpfx->ifaddr.sin6_addr.s6_addr[i--] = 1;
+       for (; i >= 8; i--)
+               ifpfx->ifaddr.sin6_addr.s6_addr[i] = 0;
        if (pd_ifaddrconf(IFADDRCONF_ADD, ifpfx))
                goto bad;

ここはあまり深いことを考えずに、ifidでは無く0000:0000:0000:0001をつけるようにfor文を修正。

再起動して割り振られたアドレスをifconfigで見て prefix::1 になっていてOK。

 

 

DNS server と DHCP server 構築

投稿日: Leave a comment

ひかり電話のルータの機能を徐々に FreeBSD に移しつつあって、今日はDNSサーバとDHCPサーバを移してみた。DNSはbind9、DHCPはisc-dhcp4を使用。

bind9はforward onlyで構築。いわゆるキャッシュサーバ。上位(プロバイダ)にIPv4とIPv6のDNSサーバがちゃんといるので、それに聞くのが一番いいという考え。一応 Dual stack で構築。IPv6のアドレスがいっぱいあってどのアドレスでListenするのがいいのかよく分からないので、ここは適当に。

dhcpのIPv4の方は、ほとんどデフォルトの dhcpd.conf のまま。こちらはあっけなく設定終了。あ、DNSサーバを構築したので、ひかり電話ルータのDNSではなくtobyのIPv4アドレスを参照するように設定。

ついでにwide-dhcp6sでプロバイダのIPv6のname serverを配っていたのもisc-dhcpd6に変更。もちろんname serverはtobyのIPv6アドレスに変更。

どれもそうだけど、L2TPとDHCPv6_PDでIPv6のアドレスが分かるまで設定ファイルが作れず、当然ながら、デーモンも立ち上げられないのが面倒。これにPPPoEとか入ってきたらもっと面倒なことになりそう…

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を実行できるっぽいので、もう少し調べてみようと思う。

L2TPでIPv6をつなぐ (1)

投稿日: Leave a comment

ネイティブのIPv6作戦、auひかりもマンションタプはまだデュアルスタック対応していないみたいなので、自宅のFreeBSD機 (命名=toby) でトンネルを掘って、WindowsからのIPv6はFreeBSDのトンネルを通るようにしてみた。

まだまだ修正したいところはあるけど、以下の作業でが踊るようになった。

  • /usr/ports/net/mpd-l2tp-ipv6pd-client をインストール
  • dhcp6sを設定

もともとIIJmioのIPv6仮想アクセスの端末型というのをWindows機で使っていたのを、FreeBSD機経由のネットワーク接続型に変更する作業になる。

mpd-l2tp-ipv6pd-clientはもともとOCNのIPv6接続用だけど、同じL2TPを使うIIJmioのでもそのまま動いた。

ただ、そのままだとRAを受け取ったVista機がIPv6のアドレスを自動生成してくれないので、dhcp6sでアドレスとDNSサーバを配るように追加設定。そのとき、rtadvd.confでraflagsにm flagをセットするように設定を追加。

mpd-l2tp-ipv6pd-client で mpd接続からdhcp6cによるアドレス取得までは自動で動くけど、dhcp6sの起動はまだ手動の状態。アドレスプレフィックスも決め打ちしちゃっているので、なにかうまい方法が無いか考え中。

本当はrtadvdだけで済ませたいけど、そういうわけには行かないものだろうか。。。

http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/mpd-l2tp-ipv6pd-client/

光ネクスト断念

投稿日: Leave a comment

フレッツ 光ネクストの IPv6 IPoE でネイティブに(非トンネルで)IPv6が使えるようになっていて、今使っているプロバイダのみが今のところこのIPoEに対応しているらしいので、Bフレッツから手間なく切り替えられるか、NTT116に聞いてみた。以下、担当の方からの回答:

  • ルータを変更しなければいけない (RV-230SE→RV-S340xx, xxはメーカ記号で何になるか分からない)
  • Bフレッツマンションタイプ→光ネクストマンションタイプの切り替えには工事費 21,000 が必要

ということで、ルータ変更はちょっと嫌だけど手間だけの問題で、工事費が高くて断念した。

IPv4/v6 dual stackでサービスしているauひかりに変えようかと考えはじめてきた。