RouterBoardでL2TP/IPSec

やってまいりました。
これがやりたかった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のプールが使えるようになると捗る気がします。

RouterBoardでL2TP/IPSec」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。

Enter code * Time limit is exhausted. Please reload CAPTCHA.