VirtualboxにPPPoEサーバを建て、BBルータとIP Unnumbered接続する

BUFFALO QRsetup 11n/g/b 300Mbps 無線LAN親機 WHR-300HP2/N (ワンルームマンションの一人暮らし向け)
ブロードバンドルータについて、IP Unnumbered接続における試験環境を構築をする場合、PPPoEサーバが必要である。いきなりインターネットに接続するのは躊躇われたり、ISP契約がなかったりする場合には、自前でPPPoEサーバを構築する必要がある。
わたしの構築の例を掲載する。

0. 環境

1. VirtualBoxCentOSを入れる。

詳細な手順は省略する。

  • CentOSはminimalでもOK。32bitでLiveでないものをダウンロードする。64bitでも良いが、BIOSの設定によってはインストールが出来ないため。手順が分からなければこれを参考にすれば良い。
  • minimalの場合は、切り分けのためnmap, tcpdump, bind-utils, wiresharkあたりをyumでinstallしておく。
  • 検証に限った環境ならば、iptablesSELinuxは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