SEIL/x86でIPv4 and IPv6 over PPPoEしてみた


そんなわけで、先日はSEIL/x86をALIXというマシンにインストールするところまで書きました。
今日はいよいよ、SEIL/x86を使って、IPv4とIPv6それぞれPPPoEを使ってISPに接続してみます。要はこんな感じでネットワークに繋ぎます。

PPPoEのセッションを、IPv4とIPv6でそれぞれ利用することになりますので、フレッツ光ネクストのマンションタイプなどを使っていると、2セッション全て使ってしまうためにフレッツスクエアに接続することができなくなったりします。

私、L2TPなどでトンネルを掘ってIPv6でのインターネット接続はしたことはありましたが、トンネル(PPPoEもトンネルですけどね)でv6接続してるのは未来じゃないなーと思ったので、IPv6 over PPPoEしてみることにしました。
PPPoEでのIPv6の接続をオマケ的に提供してくれているISPはちょっと少なくて、大人の事情で契約していたOCNは未対応でした。なので、IIJmioをさっさと申し込んで実験してみました。

続き↓

ルータにIPアドレスを付ける

インストールしたての状態のSEIL/x86は、LAN0インターフェースに192.168.0.1が付いています。なので、PCを接続してtelnetするか、シリアルコンソールでSEILにログインしてください。
デフォルトのUSERアカウントはadminですので、それでログインできます。
ログインしたら、

# interface lan0 add 192.168.10.1/24
# interface lan0 del 192.168.0.1/24


といった具合にコマンドを打つとIPアドレスを付け替えることができます。

あと、最初に起動キーをインストールしておきましょう。
起動キーはSEIL/x86をダウンロードする手順の間にメールに添付して送られてきます。

# install-key from stdin


とタイプしたあと、添付されていた起動キーをコピペして、最後の改行のあとに"."をタイプするとインストールできました。

また、

# httpd enable


というコマンドでWebコンソールを立ち上げることができます。

IPv4のPPPoEセッションを設定する

PPPoEするインターフェースは、LAN1にしました。また、IPv4のPPPoEセッションはPPPoE0にしておきます。
といっても、マニュアルを読んでコマンドを調べるのがダルかったので、私はWebコンソールから設定しちゃいました。
IPアドレスまで付けてあれば、ブラウザでさくっと接続できます。
SEIL/x86のWebコンソール
ここで、"簡易設定"-"基本設定"-"接続に PPPoE を使用する"を選んで項目を書き込んでいけば完了です。
IPパケットフィルタリングは、"おまかせフィルタB"がオススメです。

また、確認していませんが、このWebコンソールでPPPoEの設定をすると正しくないNAPTの設定がなされてました。

誤) nat napt add private 193.168.xx.0-191.168.xx.255 interface pppoe0
正) nat napt add private 192.168.xx.0-192.168.xx.255 interface pppoe0


ですので、コンソールから直しておきましょう。
これでIPv4では接続できるようになるはずです。

IPv6のPPPoEセッションを設定する

PPPoEするインターフェースは同様にLAN1で、PPPoE1というインターフェースをIPv6のほうに使うことにします。
まず、PPPoEの設定です。

ppp add ipv6 keepalive none ipcp disable ipcp-address off ipcp-dns off ipv6cp enable authentication-method chap identifier  passphrase  tcp-mss auto
interface pppoe1 ppp-configuration ipv6
interface pppoe1 over lan1
route6 add default pppoe1

IPv6 over PPPoEでは、PPPoE接続した際にdhcp6でIPアドレスを割り当ててもらうみたいです。

dhcp6 client enable
dhcp6 client interface pppoe1
dhcp6 client prefix-delegation subnet lan0 sla-id 0x1 enable

それからDHCPの設定です。といっても、IPv6ではv4みたいにクライアントのIPアドレスをDHCPで配りません。
今回はIPアドレスを配るのが目的ではなく、DNSサーバのIPアドレスを配るために使います。この設定では、DHCPv6クライアント機能でISPから取得したDNSサーバ情報を再配布する設定になっています。

dhcp6 server interface lan0 enable
dhcp6 server interface lan0 dns add dhcp6

IPv6でIPアドレスやデフォルトゲートウェイを配るのはRA (Router Advertisement)というものを使います。

rtadvd enable
rtadvd interface lan0 enable
rtadvd interface lan0 other-flag on
rtadvd interface lan0 advertise auto
rtadvd interface lan0 advertise add interface-prefix

セキュリティに気をつけましょう。

IPv6ではIPv4と異なりNATを使っていませんので、インターネット側から内部ホストに到達できる可能性が高くなっています。
LAN内だから安全だと思って何の対策もしていないと痛い目に遭うことになりますので、各ホストでのセキュリティ対策はしっかりしましょう。
デフォルトのパスワードが存在する機器などはネットワークに接続する前にしっかりとパスワードを付けるなどする必要があります。

とりあえず、こんな設定を書いて置くといいかもしれません。要は、IPv6のほうのPPPoEインターフェースに外側から入ってくるパケットを受け付けないようにしています。
普通にブロックするとdhcpのパケットもフィルタされてしまうので、特定のパケットだけ通すようにしてあります。

filter6 add OUTGOING interface pppoe1 direction out action pass state enable logging off enable
filter6 add dhcpv6 interface pppoe1 direction in action pass protocol udp srcport 547 dstport 546 state disable logging on enable
filter6 add BLOCK_IN interface pppoe1 direction in action block state disable logging on enable

実験してみよう

さて、設定できたらルータを繋げてみましょう :-)
あとは手元のマシンから、色々とWebブラウジングをすると新しい世界が見えます。
IPv6 reachableになったら、まずはkame.netですね。カメが踊っていたら成功です。
他にも、
IPv6 テストサイト
IIJ Webサイト
KDDI Webサイト
などがありますし、
IPv6専用のgoogleというのもあります。

スマホとかってどうなんだろう

Mac OS XとかWindowsがIPv6に対応していることは知っていました。
けど、iPhoneとかAndroidってどうなんだろうと思って実験してみました。結果はこんな感じです。どちらも対応していましたねー。
iPhoneもIPv6おっけー Androidもv6対応済み