Cuturnの適当日記

徒然なるままに適当に駄文を吐き出しております

vyattaのL2TPではまった

vyattaのVPN設定してるとき、再起動したら全然つながらなくなって今日1日を台無しにしたのでここに書いておく。

設定はこんなん。

vpn {
    ipsec {
        ipsec-interfaces {
            interface eth1
        }
        nat-networks {
            allowed-network 172.16.0.0/12 {
            }
        }
        nat-traversal enable
    }
    l2tp {
        remote-access {
            authentication {
                local-users {
                    username {ないしょ} {
                        password ****************
                    }
                    username {ないしょ} {
                        password ****************
                    }
                }
                mode local
            }
            client-ip-pool {
                start 192.168.1.160
                stop 192.168.1.180
            }
            ipsec-settings {
                authentication {
                    mode pre-shared-secret
                    pre-shared-secret ****************
                }
                ike-lifetime 3600
            }
            outside-address 172.31.93.159
        }
    }
}

これで再起動したら、何か全然つながらなくなった。で、はまったのは以下が理由なのかどうなのかよーわからんが…。

  1. 起動時なぜか/var/log/messagesにログが出ないのでちゃんとVPNサービス動いてないっぽい
  2. VPNサービスあげてもなぜかxl2tpdが動かない

なので、再起動したらこんな風に手動でたたいてあげて対応した。なおrootユーザへのスイッチが必須なので、rootユーザの有効化方法はここ参照。

> restart vpn
> su
# /etc/init.d/xl2tpd start

または、vyattaの設定からvpnの下のl2tpツリーを全部一旦削除してコミットして、設定を復旧すればいつのまにかxl2tpdが起き上がってます。

…なんでー。
ちなみに、Windows7とかで接続するとNATトラバーサル設定がないときと同じエラーコードなのでその辺で検索の罠にはまりやすい。っていうか事例少なかったしどうしてなんだろうなぁ。

(追記)あ、わかった。HAクラスタを組んでいるときは以下のように、クラスタサービスにipsecとxl2tpdを追加するとよい。ipsecだけでもいい気もするんだけど、付けても別にエラーにならなかったのでOK。

cluster {
    dead-interval 10000
    group vycl1 {
        auto-failback true
        primary dcdavrt01
        secondary dcdavrt02
        service 192.168.1.254/24/eth0
        service 172.31.93.159/24/eth1
        service 172.31.93.151/24/eth1
        service 172.31.93.152/24/eth1
        service ipsec
        service xl2tpd
    }
    interface eth0
    keepalive-interval 2000
    monitor-dead-interval 20000
    pre-shared-secret ****************
}