やってまいりました。
これがやりたかったw
Routerboard
でL2TP/IPSecやってみた
ここで
確認できたもの
Windows7
OSX
iPad
Android
IPSecは難しいとです。。。
追記
通信の調子が悪かったのは、
L2TPのMTUが大きかったからでした・・・
1)Logの設定
ipsecのログを出力するように
「ipsec」「l2tp」を追加します。
[admin@MikroTik] > /system logging print detail Flags: X - disabled, I - invalid, * - default 0 * topics=info prefix="" action=memory 1 * topics=error prefix="" action=memory 2 * topics=warning prefix="" action=memory 3 * topics=critical prefix="" action=echo 4 topics=ipsec prefix="" action=memory 5 topics=l2tp prefix="" action=memory
「action」を追加してそこに出すようにしたほうが、
見やすいかもです。
でも、Telnet経由で見ないと重すぎ。。。
2)Proposalの設定
[admin@MikroTik] > /ip ipsec proposal print detail Flags: X - disabled, * - default 0 * name="default" auth-algorithms=md5,sha1 enc-algorithms=3des,aes-128-cbc,aes-256-cbc lifetime=30m pfs-group=modp1024
ここの「default」以外を使う方法がよくわからん。。。
アルゴリズムはOSによって違うので、ログを見ながらw
3)Peerの設定
[admin@MikroTik] > /ip ipsec peer print detail Flags: X - disabled 0 address=0.0.0.0/0 local-address=0.0.0.0 passive=no port=500 auth-method=pre-shared-key secret="jizendayo" generate-policy=port-override exchange-mode=main-l2tp send-initial-contact=yes nat-traversal=yes hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 lifetime=1d dpd-interval=2m dpd-maximum-failures=5
ここで気をつけるのは
auth-method=pre-shared-key(事前共有キー)
secret=パスワード
exchange-mode=main-l2tp
nat-traversal=yes(NATしないなら要らない)
とくらいでしょうか。
アルゴリズムは「sha1」「3des」を使うようにしました。
4)クライアントの割り当てアドレス
[admin@MikroTik] > /ip pool print detail 0 name="192.168.1.50-60" ranges=192.168.1.50-192.168.1.60 1 name="L2TP-pool" ranges=10.10.10.2-10.10.10.14
「L2TP-pool」というのを作りました。
5)ppp profileの作成
名前が「L2TP」というものを作成
ここで作ったものをL2TPサーバとユーザプロファイルで指定します
[admin@MikroTik] > /ppp profile print detail Flags: * - default 0 * name="default" remote-ipv6-prefix-pool=none use-ipv6=yes use-mpls=default use-compression=default use-vj-compression=default use-encryption=default only-one=default change-tcp-mss=yes address-list="" 1 name="L2TP" local-address=10.10.10.1 remote-address=L2TP-pool remote-ipv6-prefix-pool=none use-ipv6=yes use-mpls=default use-compression=default use-vj-compression=default use-encryption=default only-one=default change-tcp-mss=default address-list="" dns-server=192.168.1.25 2 * name="default-encryption" remote-ipv6-prefix-pool=none use-ipv6=yes use-mpls=default use-compression=default use-vj-compression=default use-encryption=yes only-one=default change-tcp-mss=yes address-list=""
local-address=ルータアドレス(これをローカルと同じにしちゃうと。。。)
remote-address=L2TP-pool(DCHP-poolで作ったものや、静的アドレスもOK)
dns-server=10.10.10.1(ローカルネットワーク内のDNSなどを指定)
6)L2TPサーバの設定
[admin@MikroTik] > /interface l2tp-server server print enabled: yes max-mtu: 1280 max-mru: 1280 mrru: disabled authentication: mschap2 keepalive-timeout: 30
default-profile: L2TP
「mschap2」を使うようにしました。
「default-profile」はppp profileで作ったものを使用。
注意:デフォルトだと「max-mtu: 1280」なのですばらしく通信が不安定になりますw
7)接続ユーザの設定
[admin@MikroTik] > /ppp secret print detail Flags: X - disabled 0 name="hogeuser" service=l2tp caller-id="" password="UserPass" profile=L2TP routes="" limit-bytes-in=0 limit-bytes-out=0 last-logged-out=mar/22/2014 15:39:55
service=l2tp
profile=L2TP(ppp profileで作ったもの)
あとはクライアントから繋ぎに行ってみて
[admin@MikroTik] > /log print follow-only 22:09:52 ipsec,debug rejected hashtype: DB(prop#1:trns#1):Peer(prop#1:trns#1) = MD5:SHA 22:09:52 ipsec,debug no suitable proposal found. 22:09:52 ipsec,debug failed to get valid proposal. 22:09:52 ipsec,debug failed to pre-process ph1 packet (side: 1, status 1). 22:09:52 ipsec,debug phase1 negotiation failed.
この場合は、peerのハッシュアルゴリズムおかしいよーと。
あとは、phase1でエラーしてたら、 proposal周りを見てみたり。
以下の場合は、ユーザ名が違うよと。
2:20:04 l2tp,info first L2TP UDP packet received from 192.168.1.52 22:20:04 l2tp,ppp,error <192.168.1.52>: user userhoge authentication failed
きっとここまできたら、あとは出来ると思います!
Routeは勝手に乗るので、FirewallやRoteで適宜設定して下さい。
[admin@MikroTik] > /ip route print detail Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 0 ADS dst-address=0.0.0.0/0 gateway=*.*.*.*/ gateway-status=*.*.*.*/ reachable via pppoe-out distance=1 scope=30 target-scope=10 1 ADC dst-address=10.10.10.11/32 pref-src=10.10.10.1 gateway=<l2tp-hogeuser> gateway-status=<l2tp-hogeuser> reachable distance=0 scope=10 2 ADC dst-address=192.168.1.0/24 pref-src=192.168.1.1 gateway=bridge-local gateway-status=bridge-local reachable distance=0 scope=10 3 ADC dst-address=*.*.*.*/32 pref-src=*.*.*.*/ gateway=pppoe-out gateway-status=pppoe-out reachable distance=0 scope=10
番外)VPNサーバをゲートウェイしたい場合
NATの設定を
[admin@MikroTik] > /ip firewall nat print detail Flags: X - disabled, I - invalid, D - dynamic chain=srcnat action=masquerade src-address=10.10.10.1-10.10.10.14 out-interface=pppoe-out
みたいな感じでやるとVPNサーバ経由で外に出られます。
ここをDHCPのプールが使えるようになると捗る気がします。
SHA1はまだいいとして、3DESは…
もうちょっとセキュアなアルゴリズムを使ったほうがいいのでは