レック・テクノロジー・コンサルティング株式会社TECH BLOG

PPPoE接続の検証(Vitual Box)

こんにちは!NW部のSです。

今回、Virtual Box上に構築したPPPoEサーバと別途用意したPC(外部PC)でPPPoE接続してIPアドレスの取得をしていきます!

今回用意した環境は、以下になります。

  • 仮想化ソフト:Vitual Box 7.1.10
  • OS:Ubuntu 24.04.3

PPPoEとは

PPPoE(Point-to-Point over Ethernet)は、インターネット接続方式の1つです。ユーザ名とパスワードで認証を行うことでグローバルIPアドレスが払い出され、インターネットにアクセスできています。

Virtual BoxでPPPoEの動作検証

まずは、Virtual Box上でPPPoEサーバとPPPoEクライアントをVM(Virtual Machine:仮想マシン)で動かして検証しました。

PPPoEサーバ側の準備

1. UbuntuをインストールしたVMのを用意
Virtual Box内での通信及びパッケージのインストールのために、以下のアダプタを使用します。
  • NAT
  • ホストオンリーアダプタ
1.png

2. パッケージのインストール
PPPoEのパッケージの前にTeratermから操作できるように、「openssh-serverパッケージ」をインストールします。
sudo apt install openssh-server -y
=== インストール完了後 ===
systemctl enable ssh.service
systemctl start ssh.service
=== Teratermで接続 ===

続けて、PPPoEパッケージをインストールしていきます。
sudo apt update
sudo apt install rp-pppoe
※rp-pppoeパッケージが見つからない場合、下記手順を実施
以下コマンドでパッケージの取得及びビルドします。
apt install build-essntial wget
wget https://downloads.uls.co.za/rp-pppoe/rp-pppoe-4.0.tar.gz
tar zxvf rp-pppoe-4.0.tar.gz
cd rp-pppoe/
./configure
make
make install

3. 設定ファイルの編集
/etc/ppp/pppoe-server-optionsを下記の内容を追記もしくはコメントアウト
refuse-pap # PAP認証を拒否する
require-chap # CHAP認証を要求する
lcp-echo-interval 60 # 60秒ごとにLCPエコーパケットを送信(死活監視)
lcp-echo-failure 2 # 2回エコー応答がなければ切断
mru 1492 # MRU(受信最大フレームサイズ)を1492バイトに設定
mtu 1492 # MTU(送信最大フレームサイズ)を1492バイトに設定
nopcomp # PPPヘッダ圧縮(Pcomp)を無効化
nodeflate # Deflate圧縮を無効化
nobsdcomp # BSD圧縮を無効化
novj # Van Jacobson TCPヘッダ圧縮を無効化
novjccomp # VJ圧縮の圧縮オプションを無効化
nopredictor1 # Predictor-1圧縮を無効化
ipcp-accept-local # ローカルIPアドレスの提案を受け入れる
ipcp-accept-remote # リモートIPアドレスの提案を受け入れる
nodefaultroute # PPP接続時にデフォルトルートを追加しない
ms-dns 8.8.8.8 # クライアントへDNSサーバのアドレスを通知
ms-dns 8.8.4.4 # クライアントへDNSサーバのアドレスを通知
usepeerdns # ピア(クライアント)から提案されたDNSを使用
noipdefault # デフォルトルートを設定しない
proxyarp # プロキシARPを有効にする
noipx # IPXプロトコルを無効化
debug # デバッグ情報をログに出力


/etc/ppp/chap-secretsに認証用のユーザ名とパスワードを追記
user1 * password1 *


PPPoEクライアント側の準備

1. PPPoEクライアント用のVMは、PPPoEサーバのクローンで作成します。
2.png


2. クライアント設定
/etc/ppp/peers/pppoe-clientを編集
noauth # 認証不要。ピア側から認証を行わない
defaultroute # PPP接続確立時にデフォルトルート(経路)を自動追加
replacedefaultroute # 既存のデフォルトルートをPPP接続のものに置き換える
hide-password # ログ等に接続パスワードを表示しない
persist # 接続が切断されても自動的に再接続を試みる
mtu 1492 # MTU(最大転送単位)を1492バイトに設定
plugin rp-pppoe.so <インターフェース名>   # rp-pppoe.soプラグインを利用し、<インターフェース名>でPPPoE接続
user "user1" # PPP認証時に使うユーザー名("user1")


/etc/ppp/chap-secretsもPPPoEサーバと同じ認証情報で設定
user1 * password1 *


PPPoE接続をテスト

1. サーバ側で待ち受けを開始
sudo pppoe-server -I enp0s8 -L 192.168.0.100 -R 192.168.0.10 -N 5
・ -I 待ち受けるインターフェース ※インターフェース名は、環境ごとに確認してください
・ -L PPPoEサーバ用のIPアドレス
・ -R 配布するIPアドレスの開始アドレス
・ -N 配布するIPアドレスの個数


2. クライアント側で接続
sudo pon pppoe-client


以下の文面が出ていれば正常に接続要求が出せています。
"Plugin rp-pppoe.so loaded."

3. クライアント側でIPアドレス取得できているか確認
ip address
3.png

「ppp0」のインターフェースが作られ、IPアドレス「192.168.0.12」が受け取れているので成功です!

以上で、VirtualBox上の2台のVM(サーバ&クライアント)間でPPPoE通信とIP配布の確認ができました。

外部PCとPPPoEで接続するテスト

次に、VirtualBox上のPPPoEサーバに、外部のPCからPPPoEで接続できるか試しました。


PPPoEサーバ側の追加設定

1. Vitual Box側からネットワークアダプタをの追加
今回PPPoEサーバが外部PCと接続するために、ネットワークアダプタに以下を使用します。
  • NAT          # 外部PCがインターネットに出るため
  • ブリッジアダプター  # 外部PCとVitual Box上のVMとで通信させるため

PCでは、インターネットに接続できなければPPPoEで取得したIPを保存してくれないみたいなので、インターネットへの経路として、「NATアダプタ」を使用します。
また、外部PCと接続するために「ブリッジアダプタ」で、該当ポートを指定しています。
ss001 - Oracle VirtualBox 繝槭ロ繝シ繧ク繝」繝シ.png

2. 外(インターネット)に出るためIP転送+NAT(フォワーディング)の設定を実施
sudo sysctl -w net.ipv4.ip_forward=1 # 一時的な有効化
sudo iptables -t nat -A POSTROUTING -o <外部IF> -j MASQUERADE

外部PCからの接続

1. PPPoEサーバで待ち受けを開始(前述コマンドと同じ)

2. 外部PC(Windowsなど)からPPPoE接続を実施

5-9.png

3. 外部PC側でIPアドレスを取得できているか確認(例:ipconfig /all)

10.png

これで、外部PCもインターネット接続ができるようになります。

以上で、VirtualBox上に構築したPPPoEサーバと外部PC間での接続検証は問題なく完了となります。ご参考になれば幸いです。

Careersキャリア採用

ページトップへ戻る