VyattaでL2TPv3 ethernet pseudowire を使ってみる

Linux Kernel 2.6.35からL2TP Version 3 がサポートされています。
あとはiprouteがL2TPv3に対応していれば、Linuxでl2tpv3のトンネルを利用することができます。

Vyatta6.4のKernelは3.0.23でiprouteもL2TPv3に対応したものが入っています。
Vyatta6.4のマニュアルやコマンドを見た限りCLIには対応するコマンドがないので試験的に実装してみました。
2014/3/20 VyOS 1.1.0(Helium)でL2TPV3がサポートされるかもしれないのでそれを使用したほうが賢明です 🙂

上の図のようにL2TPトンネルを張る場合は、以下のようにコマンドを入力していきます。
※図のtunnel endpointはL2TPV3としては不要です。

<R1>
$configure
# set interfaces ethernet eth0 address 10.10.0.1/24
# set interfaces l2tpv3 l2tpeth0
# set interfaces l2tpv3 l2tpeth0 local-ip 10.10.0.1
# set interfaces l2tpv3 l2tpeth0 remote-ip 10.10.0.2
# set interfaces l2tpv3 l2tpeth0 tunnel-id 42
# set interfaces l2tpv3 l2tpeth0 peer-tunnel-id peer 45
# set interfaces l2tpv3 l2tpeth0 session-id local 128
# set interfaces l2tpv3 l2tpeth0 peer-session-id 256
# set interfaces l2tpv3 l2tpeth0 sport 5000
# set interfaces l2tpv3 l2tpeth0 dport 5001
# set interfaces bridge br0
# set interfaces bridge br0 set interfaces bridge br0 promiscuous-mode on
# set interfaces ethernet eth1 bridge-group bridge br0
# set interfaces l2tpv3 l2tpeth0 bridge-group brigde br0
# commit
# save

<R2>
$configure
# set interfaces ethernet eth0 address 10.10.0.2/24
# set interfaces l2tpv3 l2tpeth0
# set interfaces l2tpv3 l2tpeth0 local-ip 10.10.0.2
# set interfaces l2tpv3 l2tpeth0 remote-ip 10.10.0.1
# set interfaces l2tpv3 l2tpeth0 tunnel-id 45
# set interfaces l2tpv3 l2tpeth0 peer-tunnel-id peer 42
# set interfaces l2tpv3 l2tpeth0 session-id local 256
# set interfaces l2tpv3 l2tpeth0 peer-session-id 128
# set interfaces l2tpv3 l2tpeth0 sport 5001
# set interfaces l2tpv3 l2tpeth0 dport 5000
# set interfaces bridge br0
# set interfaces bridge br0 set interfaces bridge br0 promiscuous-mode on
# set interfaces ethernet eth1 bridge-group bridge br0
# set interfaces l2tpv3 l2tpeth0 bridge-group brigde br0
# commit
# save
$configure
# set interfaces ethernet eth1 mtu 1488
# set firewall modify AUTOMSS
# set firewall modify AUTOMSS rule 1 action modify
# set firewall modify AUTOMSS rule 1 modify tcp-mss pmtu
# set firewall modify AUTOMSS rule 1 protocol tcp
# set firewall modify AUTOMSS rule 1 tcp flags SYN
# set interfaces ethernet eth1 firewall out modify AUTOMSS
# commit
# save

安定動作は保証いたしませんが、興味のある方は以下にパッチに置きましたので、
お試しください。ダウンロード後、ファイル名の拡張子の.odtを削除してください。

vyatta-cfg-l2tpv3-20120923.patch
vyatta-cfg-system-l2tpv3-20120923.patch

コマンドの拡張だけなので、標準のVyatta6.4に以下のzip内のファイルを差し替えるだけでも
使えるかもしれません。ダウンロード後、ファイル名の拡張子の.odtを削除してください。

vyatta6.4-l2tpv3.zip

2014/3/20 L2TPV3としてはendpointの設定は不要でした。 以下のzipでは削除したので差し替えてください。

l2tpv3-20140320.zip

[参考URL]
Linux/Documentation/networking/l2tp.txt
Tutorial: Transparent VLAN tunneling through L2TPv3
Introduction to L2TPv3

VyattaでL2TPv3 ethernet pseudowire を使ってみる」への3件のフィードバック

  1. 初めまして。
    事後報告になってしまい申し訳ないのですが、このブログにアップされているパッチを元に show interfaces コマンド対応や最新の VyOS に対応するための修正を加えたものを、 VyOS Helium のリポジトリにプルリクエストを送ったところ、先ほどマージされました。
    もし、コントリビュータとしてどこかに記載されることがありましたら、連名にさせていただきたいと思いますので、ご連絡ください。

    • はじめまして、こんにちは。

      ここに記載されている実装内容で私が勘違いしてた箇所があります。
      特にendpointは完全に勘違いでl2tpv3としては必要ないはずです。
      higebuさんの判断にお任せしますが、出来ればBLOGにおいたl2tpv3-20140320.zipの中身とオリジナル差分を見てもらうと幸いです。

      l2tpv3-20140320.zipで変更されているのは3点ほどです。
      ・endpointのパラーメータの削除
       これは必要ないと思います。

      ・l2tpethXの決め打ちされているMTUを1500 -> 1488 変更
       そもそも決め打ちでいいのかというのもありますが、 1488は ip-l2tp(8)のドキュメントに準拠した値に修正してあります。
       
      ・local-ip remote-ipからIPv6を削除
       少なくともVyattaのときはiproute(および kernel)ではサポートされていませんでしたが、手抜きをしていました(汗
       VyOS HeliumでIPv6対応のiproute(および kernel)が入っているようでしたら、そのままでいいかもしれません。

      何かあれば、 @ftoyama もしくは ftoyamaあっとgmail.comまでご連絡ください。

      • 返信ありがとうございます。

        ・endpointのパラーメータの削除
         endpoint はたしかにいりませんので、削除しておきます。

        ・l2tpethXの決め打ちされているMTUを1500 -> 1488 変更
         回線のMTUサイズが1500とは限りませんので、MTUはデフォルトを1488にしておき、変更可能にしようと思います。

        ・local-ip remote-ipからIPv6を削除
         IPv6は最新のVyatta及びVyOSではサポートされているため、そのままにしておきます。

        また、上記MTU以外でこちらで修正している点は下記の通りです。
        ・show interfaces コマンド対応(vyatta-cfg、vyatta-op、vyatta-cfg-system)
        ・encapsulationをipにした際にl2tp_ipをロード(vyatta-cfg-system)

        詳しくは下記のリポジトリをご参照いただければと思います。
        https://github.com/vyos/vyatta-cfg
        https://github.com/vyos/vyatta-op
        https://github.com/vyos/vyatta-cfg-system

        twitterフォローいたしました。

higebu への返信 コメントをキャンセル