0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linux network namespace 上でPPPoE接続検証

Posted at

概要

pppoeの勉強用にLinux network namespace(ns)上でPPPoE接続検証を行う。

環境

  • osxのmultipass上で動作するUbuntu20.04
  • pppoe : 3.12-1.2ubuntu2
  • pppoeconf : 1.21ubuntu1

動作確認

  • 環境構築
    routerとwanの2つのnsを作成する。
    routerには仮想ネットワークインタフェースgw-veth1を作成し、
    wanには仮想ネットワークインタフェースwan-vethを作成する。
sudo ip netns add router
sudo ip netns add wan
sudo ip link add wan-veth0 type veth peer name gw-veth1
sudo ip link set wan-veth0 netns wan
sudo ip link set gw-veth1 netns router
sudo ip netns exec wan ip link set wan-veth0 up
sudo ip netns exec router ip link set gw-veth1 up
sudo ip netns exec wan ip a add 203.0.113.1/24 dev wan-veth0
  • pppoeのインストール
sudo apt-get install pppoe pppoeconf
  • pppoeサーバのchap有効化
    chap認証を行うために、/etc/ppp/optionsを開き、#+chap の#を削除する。

  • pppoeサーバのサーバの設定
    pppoe-server-optionsを開き、以下の記載を行う。

require-chap
lcp-echo-interval 60
lcp-echo-failure 5
logfile /var/log/pppd.log
  • pppoeサーバの認証情報の設定
    /etc/ppp/chap-secrets を開き、認証情報を記載する。
    以下の例は、ユーザtest01に対してパスワードpass01で認証を行い、IPアドレス10.0.0.10を払い出す設定である。
"test01" * "pass01" 10.0.0.10
  • pppoeサーバの起動
    以下例では、インタフェースwan-veth0にて、10.0.0.1のIPアドレスでpppoeサーバを起動する。
$ sudo ip netns exec wan pppoe-server -I wan-veth0 -L 10.0.0.1
  • pppoeクライアントの設定
    以下により設定画面が表示される。以下設定を行う。
$ sudo ip netns exec router pppoeconf gw-veth1
OKAY to MODIFY : yes
POPULAR OPTIONS : no
ENTER USERNAME : test01
ENTER PASSWORD : pass01
USE PEER DNS : yes
LIMTED MSS PROBLEM : yes
DONE : no
ESTABLISH CONNECTION : no
  • dsl-provideファイルの修正
    なぜか、ネットワークインタフェース名が"nic-gw-veth1-veth1"となるので、nic-gw-veth1に修正する。
sudo vi /etc/ppp/peers/dsl-provide
  • 認証情報ファイルの修正
    nsを使う場合ファイルがサーバとクライアントで共有となるため、pppoeクライアントの設定をすると、認証情報ファイルが更新されるため元に戻す。
sudo vi /etc/ppp/chap-secrets 
"test01" * "pass01" 10.0.0.10
  • PPPoE接続開始
sudo ip netns exec router pon dsl-provider
Plugin rp-pppoe.so loaded.
  • PPPoE接続確認
    以下の通り、wan、routerに、ppp0とppp1が作成され、PPPトンネルができていることが確認できる。
sudo ip netns exec router plog
Jun  5 08:47:31 pppoe pppd[4093]: pppd 2.4.7 started by ubuntu, uid 0
Jun  5 08:47:31 pppoe pppd[4093]: Using interface ppp0
Jun  5 08:47:31 pppoe pppd[4093]: Connect: ppp0 <--> /dev/pts/1
Jun  5 08:47:34 pppoe pppd[4092]: CHAP authentication succeeded: Access granted
Jun  5 08:47:34 pppoe pppd[4092]: CHAP authentication succeeded
Jun  5 08:47:34 pppoe pppd[4092]: peer from calling number 96:BE:58:42:B1:D5 authorized
Jun  5 08:47:34 pppoe pppd[4093]: local  IP address 10.0.0.1
Jun  5 08:47:34 pppoe pppd[4093]: remote IP address 10.0.0.10
Jun  5 08:47:34 pppoe pppd[4092]: local  IP address 10.0.0.10
Jun  5 08:47:34 pppoe pppd[4092]: remote IP address 10.0.0.1

sudo ip netns exec router ip a
1: lo:  mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: gw-veth1@if4:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 42:18:0b:ae:fb:67 brd ff:ff:ff:ff:ff:ff link-netns wan
    inet6 fe80::4018:bff:feae:fb67/64 scope link 
       valid_lft forever preferred_lft forever
30: ppp0:  mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp 
    inet 10.0.0.10 peer 10.0.0.1/32 scope global ppp0
       valid_lft forever preferred_lft forever
Jun  5 08:45:38 pppoe pppd[3954]: remote IP address 10.0.0.1

sudo ip netns exec wan ip a
1: lo:  mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4: wan-veth0@if3:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 96:be:58:42:b1:d5 brd ff:ff:ff:ff:ff:ff link-netns router
    inet 203.0.113.1/24 scope global wan-veth0
       valid_lft forever preferred_lft forever
    inet6 fe80::94be:58ff:fe42:b1d5/64 scope link 
       valid_lft forever preferred_lft forever
8: ppp0:  mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp 
    inet 10.0.0.1 peer 10.0.0.10/32 scope global ppp0
       valid_lft forever preferred_lft forever
  • pppoe切断
sudo ip netns exec router poff -a
  • パケット確認
〜Discoveryステージ〜
17:54:17.418940 PPPoE PADI [Service-Name]
17:54:17.419061 PPPoE PADO [AC-Name "pppoe"] [Service-Name] [AC-Cookie 0x58DB3576F43DF4B50CC5DF9712C186B3BC0C0000]
17:54:17.419084 PPPoE PADR [Service-Name] [AC-Cookie 0x58DB3576F43DF4B50CC5DF9712C186B3BC0C0000]
17:54:17.419303 PPPoE PADS [ses 0x1d] [Service-Name]
〜PPPセッションステージ〜
17:54:17.420451 PPPoE  [ses 0x1d] LCP, Conf-Request (0x01), id 1, length 16
17:54:18.479848 PPPoE  [ses 0x1d] LCP, Conf-Request (0x01), id 1, length 21
17:54:18.479915 PPPoE  [ses 0x1d] LCP, Conf-Ack (0x02), id 1, length 21
17:54:20.441121 PPPoE  [ses 0x1d] LCP, Conf-Request (0x01), id 1, length 16
17:54:20.441392 PPPoE  [ses 0x1d] LCP, Conf-Ack (0x02), id 1, length 16
17:54:20.441464 PPPoE  [ses 0x1d] LCP, Echo-Request (0x09), id 0, length 10
17:54:20.441506 PPPoE  [ses 0x1d] LCP, Echo-Request (0x09), id 0, length 10
17:54:20.441537 PPPoE  [ses 0x1d] LCP, Echo-Reply (0x0a), id 0, length 10
17:54:20.441566 PPPoE  [ses 0x1d] CHAP, Challenge (0x01), id 127, Value c53c4dba966be5c4de02efdbece2a5f5b1, Name pppoe
17:54:20.441674 PPPoE  [ses 0x1d] CHAP, Response (0x02), id 127, Value 4d8e942727aeed6d7a715d1296f4d37d, Name test01
17:54:20.441825 PPPoE  [ses 0x1d] LCP, Echo-Reply (0x0a), id 0, length 10
17:54:20.442321 PPPoE  [ses 0x1d] CHAP, Success (0x03), id 127, Msg Access granted
17:54:20.443604 PPPoE  [ses 0x1d] IPCP, Conf-Request (0x01), id 1, length 24
17:54:20.443653 PPPoE  [ses 0x1d] CCP, Conf-Request (0x01), id 1, length 17
17:54:20.443689 PPPoE  [ses 0x1d] CCP, Conf-Request (0x01), id 1, length 6
17:54:20.443700 PPPoE  [ses 0x1d] CCP, Conf-Reject (0x04), id 1, length 17
17:54:20.443729 PPPoE  [ses 0x1d] IPCP, Conf-Request (0x01), id 1, length 18
17:54:20.443761 PPPoE  [ses 0x1d] IPCP, Conf-Reject (0x04), id 1, length 12
17:54:20.443856 PPPoE  [ses 0x1d] IPCP, Conf-Reject (0x04), id 1, length 18
17:54:20.443895 PPPoE  [ses 0x1d] IPCP, Conf-Request (0x01), id 2, length 12
17:54:20.443975 PPPoE  [ses 0x1d] CCP, Conf-Ack (0x02), id 1, length 6
17:54:20.444072 PPPoE  [ses 0x1d] CCP, Conf-Request (0x01), id 2, length 6
17:54:20.444107 PPPoE  [ses 0x1d] CCP, Conf-Ack (0x02), id 2, length 6
17:54:20.444190 PPPoE  [ses 0x1d] IPCP, Conf-Request (0x01), id 2, length 12
17:54:20.444226 PPPoE  [ses 0x1d] IPCP, Conf-Ack (0x02), id 2, length 12
17:54:20.444304 PPPoE  [ses 0x1d] IPCP, Conf-Nack (0x03), id 2, length 12
17:54:20.444340 PPPoE  [ses 0x1d] IPCP, Conf-Request (0x01), id 3, length 12
17:54:20.445519 PPPoE  [ses 0x1d] IPCP, Conf-Ack (0x02), id 3, length 12
17:54:40.499030 PPPoE  [ses 0x1d] LCP, Echo-Request (0x09), id 1, length 10
17:54:40.499171 PPPoE  [ses 0x1d] LCP, Echo-Reply (0x0a), id 1, length 10
〜Ping疎通〜
17:54:57.387617 PPPoE  [ses 0x1d] IP 10.0.0.10 > 10.0.0.1: ICMP echo request, id 4352, seq 1, length 64
17:54:57.388148 PPPoE  [ses 0x1d] IP 10.0.0.1 > 10.0.0.10: ICMP echo reply, id 4352, seq 1, length 64
17:54:58.440321 PPPoE  [ses 0x1d] IP 10.0.0.10 > 10.0.0.1: ICMP echo request, id 4352, seq 2, length 64
17:54:58.440462 PPPoE  [ses 0x1d] IP 10.0.0.1 > 10.0.0.10: ICMP echo reply, id 4352, seq 2, length 64
17:54:59.529147 PPPoE  [ses 0x1d] IP 10.0.0.10 > 10.0.0.1: ICMP echo request, id 4352, seq 3, length 64
17:54:59.529306 PPPoE  [ses 0x1d] IP 10.0.0.1 > 10.0.0.10: ICMP echo reply, id 4352, seq 3, length 64
〜切断〜
17:55:00.523978 PPPoE  [ses 0x1d] LCP, Echo-Request (0x09), id 2, length 10
17:55:00.524150 PPPoE  [ses 0x1d] LCP, Echo-Reply (0x0a), id 2, length 10
17:55:03.173093 PPPoE  [ses 0x1d] LCP, Term-Request (0x05), id 2, length 18
17:55:03.173430 PPPoE  [ses 0x1d] LCP, Term-Request (0x05), id 2, length 18
17:55:03.173467 PPPoE  [ses 0x1d] LCP, Term-Ack (0x06), id 2, length 6
17:55:03.173532 PPPoE  [ses 0x1d] LCP, Term-Ack (0x06), id 2, length 6
17:55:03.186272 PPPoE PADT [ses 0x1d] [AC-Cookie 0x58DB3576F43DF4B50CC5DF9712C186B3BC0C0000]
17:55:03.186977 PPPoE PADT [ses 0x1d] [Generic-Error "Received PADT"]

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?