VirtualboxにPPPoEサーバを建て、BBルータとIP Unnumbered接続する
ブロードバンドルータについて、IP Unnumbered接続における試験環境を構築をする場合、PPPoEサーバが必要である。いきなりインターネットに接続するのは躊躇われたり、ISP契約がなかったりする場合には、自前でPPPoEサーバを構築する必要がある。
わたしの構築の例を掲載する。
0. 環境
- サーバ:Virtualbox Ver.4.3.14、CentOS-6.5-i386
- ブロードバンドルータ:WHR-1166DHP(有線ルータでも無線LANルータでも良いが、IP Unnumnbered設定ができること)
1. VirtualBoxにCentOSを入れる。
詳細な手順は省略する。
- CentOSはminimalでもOK。32bitでLiveでないものをダウンロードする。64bitでも良いが、BIOSの設定によってはインストールが出来ないため。手順が分からなければこれを参考にすれば良い。
- minimalの場合は、切り分けのためnmap, tcpdump, bind-utils, wiresharkあたりをyumでinstallしておく。
- 検証に限った環境ならば、iptablesとSELinuxはOFFしておく。
- 2014年に公開されたCentOSの7系はx86_64のみサポートなのだが、ドライバの相性が悪いのかネットワーク周りの認識がうまくいかない。minimalだとGUIが見られないこともありトラブルシュートが困難のため、しばらくは6系の32bit版を利用したい。
2. ブロードバンドルータの設定
BUFFALOの無線LANルータの場合は次のようにする。
電源投入前に本体裏面の切り替えSWを「ROUTER」にする。 PCの接続のプロパティより、TCP/IPv4のアドレス設定を「自動取得」にした上で、LANポートにPCを接続し、ブラウザで「192.168.11.1」にアクセス。「admin/password」でログインできることを確認する。 検証目的の場合は、「AirStation Settings」→「セキュリティ」→「ファイアウォール」→「Internet側からのpingに3応答しない」を無効にする。 「AirStation Settings」→「Internet/LAN」→「インターネット」→「IPアドレス取得方法」→「IP Unnumberedを使用する」にする。 「AirStation Settings」→「Internet/LAN」→「PPPoE」→「接続先の編集」より、接続先を新規追加する。接続先名称「test」、接続先ユーザ名「test」、接続先パスワード「test」、サービス名「(空欄)」を入力し「設定」。 「AirStation Settings」→「Internet/LAN」→「LAN」→「LAN側IPアドレス(IP Unnumbered用)」の「IPアドレス」に「(使いたいIPアドレス)」、「サブネットマスク」に「(使いたいマスク)」を入力。
3. PPPoEサーバの構築
Virtualboxの設定画面(ゲストOSのネットワーク設定)
ゲストOSが停止している状態で、Virtualboxの「設定」→「ネットワーク」→「アダプター2」を有効化し、「割り当て」を「ブリッジアダプター」にする。
当初はコレだけでL2のトラヒックがゲストOSに転送されるか不安だったが、tshark -i eth1で見るとちゃんとPADIが届いている。アダプター1については何でもよいが、yumができるようにデフォルトのNATのままでよい。ネットワーク試験のために分離をしたい場合は、アダプターを無効化するなり、ホストオンリーネットワークにするなりでよい。
ゲストOS
PPPoEのアプリケーションをインストールする。
# yum install rp-pppoe
インタフェースの設定をする。eth0は、あまり考えない場合においてdhcpにしておけばよい。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp
続いてeth1の設定。eth1はPPPoEの確立に用いるため、IPアドレスを振らないのがポイント。DHCPもnoneにしておく。
# vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none
他のIFにきたパケットをPPPoEトンネルに転送できるようにする。デフォルトは0。1にする。
# vi /etc/sysctl.conf (一部省略) # Controls IP packet forwarding net.ipv4.ip_forward = 1
設定が終わったら、
# service network restart
するとifcfgの設定内容が反映される。確認はifconfig。
いよいよPPPoEの設定をする。ファイルを2個編集する。
# vi /etc/ppp/pppoe-server-options # PPP options for the PPPoE server # LIC: GPL require-pap #login lcp-echo-interval 10 lcp-echo-failure 2
# vi /etc/ppp/pap-secrets
# Secrets for authentication using PAP
# client server secret IP addresses
"test" * "test" *
なお、pppoe-server-optionsに新たに行を追加してrequire-chapを書き込み、chap-secretsファイルに上記と同様の記述をしてもよい。するとPAP認証ではなくて、CHAP認証になる。
いよいよPPPoEサーバを起動させる。
# pppoe-server –I eth1 # ifconfig
pppoe-serverのログは/var/log/messagesに追加されるため、tail –fするといつ確立したかが分かる。なお、PPPoEサーバを停止させるには、ps aux | grep pppで確認したプロセスIDをkillすればよい。
PPPoEサーバを起動させたら、pingが飛ぶようにルートを追加する。このとき、Ifconfigで確認したpppのインターフェース名を利用する。
# route add –net {任意のIPアドレス} netmask {任意のネットマスク} ppp0