L2TPサーバ

投稿日:

IPv6のトンネルに使ったmpdでL2TPのサーバを組んでみた。

あまり頭を使わず、ググッてこんな設定にしてみた。

l2tp_server:
    set ippool add pool1 192.168.16.0 192.168.16.255
    create bundle template B1
    set iface idle 1800
    set iface enable proxy-arp
    set iface enable tcpmssfix
    set ipcp ranges 192.168.2.1/24 ippool pool1
    set ipcp dns 192.168.1.1
    create link template L1 l2tp
    set link action bundle B1
    set link enable multilink
    set link keep-alive 10 60
    set link disable chap eap
    set link enable chap-msv2
    set link mtu 1376
    set link mru 1376
    set auth authname l2tp@toby
    set link enable incoming

トンネルの相手側が192.168.16.0-192.167.16.255がわりあたり、サーバ側は192.168.2.1/24が割当たるようになる。

で、この状態で、kernelがパケット転送してくれないと困るので、

# sysctl net.inet.ip.forwarding=1

を実行。これは、rc.confにgateway_enable=”YES”とかいておけばboot時にやってくれるはず。

さらに、ひかり電話のルータで、192.168.16.0/24のゲートウェイを192.168.1.2(サーバのひかり電話ルータ側のアドレス)に設定してあげれば、トンネルの先からひかり電話のルータを経由して通信ができる。本当はroutedで経路を広めるほうがいいのかな。

最後に、ひかり電話のルータでUDP/1701に穴を開けて、Xperia arcからL2TPトンネルを張ってみる。

見事成功。サーバ側にはng1が出来た。

SIPでひかり電話の内線にもなれる。webで外にもつながっている。ただしwebはちょっと遅い。

ただ、spmodeのメールだけはダメ。tcpdump -i ng1 でトンネルから出てきたパケットを見てみたら、auth.spmode.ne.jpにhttpsでつなぎに行っている。spmodeってhttpsで最初につなぐらしい。

tcpdump -i ng1 して眺めていたら、たまにspmodeのAPNからもらったIPアドレスで通信している。こいつはさすがにルーティングできない。

出来れば、IPSecでトンネルを強化したいところだけど、こちらはまた今度。

ちなみに、トンネルからやってくる通信がL2TPサーバ自身がしゃべっている様に周りに見せてあげれば、ルーティングとか気にしなくていいはずで、それをやろうと思って、IPDIVERTとかIPFIREWALL_NATとかを入れてカーネルを再構築してみた。こちらもまた今度。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です