HOME»ネットワークスペシャリスト掲示板»平成28年午後Ⅱ問2設問3(3)PPPoE/IP
投稿する

[0409] 平成28年午後Ⅱ問2設問3(3)PPPoE/IP

 きちさん(No.1) 
平成28年午後Ⅱ問2設問3(3)についてです。
解答では、
「①の通信でPCが取得するIPアドレス」が格納されるヘッダ→IPヘッダ1
「②の通信でPCが取得するIPアドレス」が格納されるヘッダ→IPヘッダ2
とのことでした。

・①の通信時(PC⇔PoEサーバの時点)におけるIPヘッダ2がどうなっていたかが分からず、質問させて頂きます。

通常、カプセル化を行う場合は
・第一に、最も内側のパケット等がある(本問の「PPP~データ」)
・第二に、そのパケットにヘッダを追加していく(「IPヘッダ1~L2TP」。本問でいう「LAC」であるPCの役目)
という順番だと思っており、
その場合、第一のパケットにIPヘッダがあるならば、既にIPアドレスが入っているのでは…と思ってしまいました。
例えば、送信元:PCのプライベートIP、宛先:VPN装置のグローバルIP、などでしょうか?

ところが、本問の解答で明らかになったこととして、
・最も内側のパケットのIPヘッダには、カプセルを剥がした後にIPアドレスを付与(原文「取得」)する
という仕組みということのようです。
もしかして、
・既にPCが入れた自分の送信元IPアドレスが入っていて、そこに対してVPN装置が書き換えた(=IPの「取得」)
ということもありますかね・・・

・ちなみに、IPヘッダ1については、
元々送信元IPアドレスは空欄?で、PPPoEサーバの役割としてグローバルIPを振ったという理解で合っていますか。
これはインターネット接続時にPPPoEサーバがIP付与すると聞いたことがあるので、そうかなと思ったのですが。

どなたか、未熟な私にご教授くださいますと幸いでございます。
2024.03.17 22:11
 きちさん(No.2) 
なお、前記の私の想像に基づいて、自分なりにパケットの流れを書き出してみました。
現状、このように考えてみましたが、より正しい解釈について、御指導よろしくお願いします。(本当に拙い発想で申し訳ございません…)

①PC⇔PPPoEサーバ
1 PC内部でPPPヘッダ~データのパケット作成
  (IPヘッダ2  送信元:PCのプライベートIP?、宛先:VPN装置のグローバルIP)
2 PC内部→カプセル化プログラム?に前述のパケット受け渡し
3 カプセル化プログラム?でIPヘッダ2~L2TPヘッダを付与
  (IPヘッダ1  送信元:PCのプライベートIP?、宛先:VPN装置のグローバルIP)
4 カプセル化プログラム?でPPPoEヘッダを付してPPPoEサーバへ発出。
5 PPPoEサーバ到達後、PPPoEヘッダ・PPPヘッダを取り外す。
6 PPPoEサーバがIPヘッダ1に対して、「PCが取得するIPアドレスを格納」する。
  (IPヘッダ1  送信元:PCのグローバルIP、宛先:VPN装置のグローバルIP)
②PPPoE⇔VPN装置
7 IPヘッダ1で通信
③VPN装置⇔サーバ
8 VPN装置がIPヘッダ1~PPPヘッダを取り外す
9 VPN装置が、IPヘッダ2に対して「PCが取得するIPアドレスを格納」する。
  (IPヘッダ2  送信元:PCのプライベートIP、宛先:該当サーバのプライベートIP)
10 IPヘッダ2で通信、サーバ到達
2024.03.17 22:16
hisashiさん(No.3) 
NW ゴールドマイスター
No1について

>「①の通信でPCが取得するIPアドレス」が格納されるヘッダ→IPヘッダ1
IPヘッダ1を得るまでは、パケットには、IPヘッダ1もIPヘッダ2もありません。

>最も内側のパケットのIPヘッダには、カプセルを剥がした後にIPアドレスを付与(原文「取得」)する
L2TPの設定をすると、PCに仮想インタフェースが生成されます。
L2TPによるVPN確立後、VPN装置から仮想IPアドレスがインタフェースに割り当てられます。

>元々送信元IPアドレスは空欄?で、PPPoEサーバの役割としてグローバルIPを振ったという理解で合っていますか。

グローバルIPアドレス付与についてはご認識のとおりです。
PPPoEサーバからグローバルIPアドレスを取得するまでは、IPヘッダはありません。

N03について
>PC⇔PPPoEサーバ
IPヘッダ1の送信元IPアドレスは、グローバルのIPアドレスです。
これはPCに割り当てられるIPアドレスであり、PPPoEサーバで書き換えはしません。

>PPPoE⇔VPN装置
>③VPN装置⇔サーバ
IPヘッダ2の送信元IPアドレスは、VPN装置によって割り当てられた仮想IPアドレスです。


その他については概ねご認識のとおりです。
2024.03.20 05:59
 きちさん(No.4) 
hisashi様

御回答ありがとうございます。
前述の通信の流れを修正してみました。
こういうことでしょうか。(疑問も出てきたので★で付しています)

①PC⇔PPPoEサーバ
1 PC内部でPPPヘッダ~データのパケット作成
  (IPヘッダ2  そもそも存在しない)
2 PC内部→カプセル化プログラム[仮]に前述のパケット送付
3 カプセル化プログラム[仮]でPPPoE~L2TPヘッダを付与
  (IPヘッダ1・2  そもそも存在しない)
4 カプセル化プログラム[仮]よりPPPoEサーバへ発出。
5 PPPoEサーバ到達後、PPPoEヘッダ・PPPヘッダを取り外す。
6 PPPoEサーバがIPヘッダ1に対して、「PCが取得するIPアドレスを格納」する。
  (IPヘッダ1  送信元:PCのグローバルIP、宛先:VPN装置のグローバルIP)
    ★ここで初めてIPヘッダを作成するということは、
      この時点で宛先IPアドレスもPPPoEサーバから?取得するということでしょうか?

②PPPoE⇔VPN装置
7 IPヘッダ1で通信

③VPN装置⇔サーバ
8 VPN装置がIPヘッダ1~PPPヘッダを取り外す
9 VPN装置が、IPヘッダ2を作成し、「PCが取得するIPアドレスを格納」する。
  (IPヘッダ2  送信元:PCの仮想IFのIP、宛先:該当サーバのプライベートIP)
    ★IPヘッダ1同様、この時点で宛先IPアドレスをVPN装置から?取得するということでしょうか?

10 IPヘッダ2で通信、サーバ到達

物分かりが悪く恐縮でございます。
もし御教授頂けたら大変ありがたく存じます。
よろしくお願いいたします。
2024.03.21 22:18
hisashiさん(No.5) 
NW ゴールドマイスター
>2 PC内部→カプセル化プログラム[仮]に前述のパケット送付
>3 カプセル化プログラム[仮]でPPPoE~L2TPヘッダを付与
  (IPヘッダ1・2  そもそも存在しない)
>4 カプセル化プログラム[仮]よりPPPoEサーバへ発出。

これらの処理は、少なくともインターネット接続確立後です。
未確立の状態では生成されません。


>★ここで初めてIPヘッダを作成するということは、
>      この時点で宛先IPアドレスもPPPoEサーバから?取得するということでしょうか?
>★IPヘッダ1同様、この時点で宛先IPアドレスをVPN装置から?取得するということでしょうか?

取得するのは送信元IPアドレスです。宛先IPアドレスは、PCが生成します。


インターネット接続確立前後、L2TPトンネル前後でパケットがごっちゃになっている印象があります。
インターネット接続確立前後、L2TPトンネル確立前後は中継機器で切り替えるのではありません。
各々、段階がありパケットの構造は異なっております。


「グローバルIPアドレスを経る過程」「インターネット上の機器との通信」
「L2TPトンネル確立後のサーバとの通信」に分けて考える必要があります。

ちなみに図5は、L2TPトンネル確立後のトンネル内の通信を示しています。

流れとしましては次のとおりです。

1.PCは、PPPoEサーバにネゴシエーションをする
2.ネゴシエーションの結果、PCは、グローバルIPアドレスを得る

※グローバルIPアドレスを得るまでIPヘッダはありません。

1.、2.を経て、PCはインターネットに接続可能となる。(グローバルIPアドレスを取得する)


3.PCは、L2TPトンネルを確立するため、VPN装置と通信する。
4.L2TPのトンネルが確立する。
5.PCからL2TPトンネルを通りサーバに通信する。


※IPヘッダ1
 送信元:PCが得たグローバルIPアドレス
 宛先:VPN装置のグローバルIPアドレス

  IPヘッダ2
 送信元:VPN装置からPCの仮想NICに割り当てられた仮想IPアドレス
 宛先:サーバのIPアドレス(ローカルIPアドレス)

※PPPoEサーバ通過後、PPPoEヘッダ、PPPヘッダが外れる

3.のパケットについて
・PC~PPPoEサーバ間
(PPPoEヘッダ)(PPPヘッダ)(IPヘッダ1)(TCP/UDPヘッダ)(データ)

・PPPoEサーバ~VPN装置
(IPヘッダ1)(TCP/UDPヘッダ)(データ)

※IPヘッダ1の宛先については、L2TPトンネル設定のプロファイル作成時に
  宛先アドレスを指定する際に用います。

5.のパケットについて
・PC~PPPoEサーバ間
(PPPoEヘッダ)(PPPヘッダ)(IPヘッダ1)(UDPヘッダ)(L2TPヘッダ)(PPPヘッダ)(IPヘッダ2)(TCP/UDPヘッダ)(データ)

・PPPoEサーバ~VPN装置
(IPヘッダ1)(UDPヘッダ)(L2TPヘッダ)(PPPヘッダ)(IPヘッダ2)(TCP/UDPヘッダ)(データ)


※IPヘッダ2内の宛先であるサーバのアドレスはL2TPトンネル確立後の実通信です。
  例えば、ブラウザでhttps://サーバのIPアドレス/index.htmlを指定する場合などに用います。
2024.03.22 00:25
hisashiさん(No.6) 
NW ゴールドマイスター
補足します。

①インターネット接続
PPPoEソフトでインターネットに接続
PPPoEソフトは、OSの機能または専用ソフトを用います。

②VPN接続(L2TP)
インターネット接続確立後、VPNソフトウェアで接続する。
VPNソフトウェアは、OSの機能または専用ソフトウェアを用います。

③サーバへのアクセス
サーバと通信。
ブラウザ、社内専用ツール、ファイルアクセスなど。

図5のパケットは、①②を経て③の通信発生時に生成されます。
2024.03.22 06:20
 きちさん(No.7) 
ご丁寧にお返事ありがとうございます。
これから確認させて頂きます。取り急ぎお礼を述べさせていただきます。
2024.03.24 19:21
 きちさん(No.8) 
hisashi様

>各々、段階がありパケットの構造は異なっております。
>「グローバルIPアドレスを経る過程」「インターネット上の機器との通信」
>「L2TPトンネル確立後のサーバとの通信」に分けて考える必要があります。

仰る通り、私はこの点を勘違いしていたようです。
初めから「(PPPoEヘッダ)(PPPヘッダ)(IPヘッダ1)(UDPヘッダ)(L2TPヘッダ)(PPPヘッダ)(IPヘッダ2)(TCP/UDPヘッダ)(データ)」
で通信していると思っておりましたが、これは図4でいう最終フェーズの「PCとサーバとの間の通信」のうちPC⇔PPPoEサーバの部分に相当するのですね・・・。
詳しい解説、本当にありがとうございます。ネット上や参考書のどこにも載っておらず理解に苦しんでおりました。

問題を解いた時点では、「カプセル化」とのことなので、PPPヘッダの付いたIPヘッダ2を、IPヘッダ1~L2TPヘッダで囲ったのかと思っていました。図5に「元のPPPフレーム」という言葉があり、これに引きずられて混乱していました。
しかし、L2TPの場合には、トンネリング確立時点で、既存のIPヘッダ1・UDPヘッダの配下のデータ部に、L2TPヘッダ・PPPヘッダを作り、その中にさらにIPヘッダを作るということなのですね。(・・・あっていますでしょうか?)
2024.03.31 16:48
hisashiさん(No.9) 
NW ゴールドマイスター
>しかし、L2TPの場合には、トンネリング確立時点で、既存のIPヘッダ1・UDPヘッダの配下のデータ部に、L2TPヘッダ・PPPヘッダを作り、その中にさらにIPヘッダを作るということなのですね。(・・・あっていますでしょうか?) 

概ねご認識のとおりですが、プロセスが少し異なるかもしれません。以下に説明いたします。

L2TPのトンネルが確立すると、仮想I/Fが生成されます。インターネット用のインタフェースとL2TPトンネル用のインタフェースのゲートウェイができます。PCにはルーティングテーブルが存在し、宛先に対しインタフェースを選択するようになっております。
(Windowsならroute printで確認できます。)

たとえば、宛先がイントラネットのIPアドレス範囲は、L2TPトンネルの仮想I/Fを選択、それ以外の経路(デフォルトルートなど)は、インターネット用のI/Fを選択するといったように経路が分けられております。

アプリケーションがイントラネット用のサーバにパケットを生成すると、宛先は、イントラネットのため、L2TPトンネルの仮想インタフェースが選択されます。この時点で、元のデータにIPヘッダ2を含め、L2TPによるヘッダが付加されます。付加されたパケットがインターネット上に出るためには、IPヘッダ1が必要となるため、外側に付加されるという流れになります。

少しややこしいですが、図5の元のpppフレームは、L2TPトンネル用のI/Fを使用し、L2TPでカプセル化される。L2TPでカプセル化されたパケットは、インターネット上を流れる必要があるため(VPN装置まで届ける)、インターネット用のI/Fを使用し、外側にIPヘッダ1が付加され、インターネット上に流れる。
2024.03.31 23:03
 きちさん(No.10) 
hisashi様

詳しい解説ありがとうございます。おかげ様で全容に近づけてきた気がします。

>少しややこしいですが、図5の元のpppフレームは、L2TPトンネル用のI/Fを使用し、L2TPでカプセル化される。L2TPでカプセル化されたパケットは、インターネット上を流れる必要があるため(VPN装置まで届ける)、インターネット用のI/Fを使用し、外側にIPヘッダ1が付加され、インターネット上に流れる。
この流れは、図6でいう「PCとサーバとの間の通信」におけるPC→サーバの通信のプロセスということですね。
私はここの流れについてと、図6「①PPPoE」「L2TPトンネル」「②PPPセッション」の流れとを混同していたかもしれません。

そこでさらに疑問が生じました。
「PPPセッション」まで完了し、IPヘッダ1・2の各送信元IPをPCが入手した後の「PCとサーバとの間の通信」においての話です。
PCが「L2TPトンネルの仮想IF」へパケットを送付する時に、パケットに「PPPヘッダ」を付した状態で送る仕組みというのは、仮想IFへパケットを送る前にPCがPPPoEソフトに対してパケットを渡しているということなのでしょうか?

つまり、PC自身の動きとしては
「①PPPoE」の段階においても「PCとサーバとの間の通信」の段階においても、
まず他に先んじてPCからPPPoEソフトへパケットを渡している、という点では動作に変わりはないということでしょうか?

そうだとすると、「PCとサーバとの間の通信」の段階においては、
①まず内側のPPPヘッダを付すためにPPPoEソフトにパケットを渡す
②L2TP仮想IFでL2TPヘッダがつく
③インターネットIFでIPヘッダ1がつく
④外側のPPPoE・PPPヘッダを付すために、再度PPPoEソフトにパケットを渡す
という流れなのでしょうか?
2024.04.01 21:54
hisashiさん(No.11) 
NW ゴールドマイスター
>PCが「L2TPトンネルの仮想IF」へパケットを送付する時に、パケットに「PPPヘッダ」を付した状態で送る仕組みというのは、仮想IFへパケットを送る前にPCがPPPoEソフトに対してパケットを渡しているということなのでしょうか?

L2TPのトンネリングでPPPヘッダが付与されますが、PPPoEとは別物とお考え下さい。No5のコメントの「5.のパケットについて  ・PC~PPPoEサーバ間」でPPPヘッダが2つあります。つまり、PPPoE接続の際に付与されるPPPヘッダとL2TPトンネリングで付与されるPPPヘッダは別物です。PPPヘッダは、認証プロセスで必要になります。PPPoE接続時の認証は勿論ですが、L2TPトンネリングでもIDとパスワードの認証されます。
2024.04.01 22:32
 きちさん(No.12) 
hisashi 様

お返事が遅れ大変恐縮でございます。
本当にありがとうございます。
何とか理解できた・・・ように思います。
とても複雑なので、再度自分で整理しようと思っております。
2024.04.14 19:42
返信投稿用フォーム

お名前

顔アイコン


本文(コミュニティガイドライン⇱を順守して適切な投稿を心がけましょう)

投稿削除用のパスワード(20文字以内)

投稿プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2015-2024 ネットワークスペシャリストドットコム All Rights Reserved.

Pagetop