こんにちは!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
- ホストオンリーアダプタ
2. パッケージのインストール
PPPoEのパッケージの前にTeratermから操作できるように、「openssh-serverパッケージ」をインストールします。
sudo apt install openssh-server -y=== インストール完了後 ===systemctl enable ssh.servicesystemctl start ssh.service=== Teratermで接続 ===
続けて、PPPoEパッケージをインストールしていきます。
sudo apt updatesudo apt install rp-pppoe
※rp-pppoeパッケージが見つからない場合、下記手順を実施
以下コマンドでパッケージの取得及びビルドします。
apt install build-essntial wgetwget https://downloads.uls.co.za/rp-pppoe/rp-pppoe-4.0.tar.gztar zxvf rp-pppoe-4.0.tar.gzcd rp-pppoe/./configuremakemake 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. クライアント設定
/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
「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と接続するために「ブリッジアダプタ」で、該当ポートを指定しています。
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接続を実施
3. 外部PC側でIPアドレスを取得できているか確認(例:ipconfig /all)
これで、外部PCもインターネット接続ができるようになります。
以上で、VirtualBox上に構築したPPPoEサーバと外部PC間での接続検証は問題なく完了となります。ご参考になれば幸いです。
RELATED ARTICLE関連記事
RELATED SERVICES関連サービス
Careersキャリア採用
LATEST ARTICLE
CATEGORY
- AWS (66)
- Azure (24)
- Databricks (18)
- GCP (27)
- Nutanix (14)
- Oracle Cloud Infrastructure(OCI) (19)
- Oracle Cloud VMware Solution(OCVS) (4)
- Oracle DB (92)
- Oracle Linux KVM (19)
- Python (3)
- Snowflake (22)
- Veeam Backup & Replication (13)
- インフラ (76)
- クラウド (137)
- コンテナ技術 (17)
- セキュリティ (22)
- データエンジニアリング (64)
- ネットワーク (21)
- 仮想基盤 (37)
- 生成AI (18)





