2014年12月25日木曜日

Ubuntu 14.04でL2TP/IPsec

ServersMan@VPSがL2TPサーバになれることは分りましたが、
カーネルの関係でIPsecはできないようで、
Android 4.4用のL2TP/IPsec PSK、L2TP/IPsec RSAなVPSサーバにはなれません。
そこでローカルのUbuntu 14.04をL2TP/IPsecにしてみました。

まずは必要なものを以下でインストールします。
# apt-get install xl2tpd
で、最初racoonを利用しようとしましたが、
うまくできなかったので途中でopenswanに乗り換えました。以下を実行します。
# apt-get install openswan
その際
このホスト用に X.509 証明書を自動的に生成あるいはインポートできます。他
のホストとの IPSec 通信での認証に利用可能で、セキュアな IPSec 通信を確立
する方法として好まれています。他に利用可能な方法としては共通鍵 (PSK、ト
ンネルの双方で同じパスワードを利用する) を通信の認証に利用するというのが
ありますが、多数の接続に対しては RSA 認証のほうが管理がより簡単でよりセ
キュアです。
または、この選択肢を選ばないでおいて、後ほど「dpkg-reconfigure
openswan」を実行して再度呼び出すこともできます。
このホストに対して X.509 証明書を利用しますか?
                    <はい>                      <いいえ>        
と表示されました。
[はい]ならL2TP/IPsec RSA、[いいえ]ならL2TP/IPsec PSKということになるのでしょうが、
私はここでデフォルトの[いいえ]を選びました。

そして設定です。
"/etc/ipsec.conf"は
protostack=auto
の行を
protostack=netkey
に変更し、
# Add connections here
の行の直後に
include /etc/ipsec.d/*.conf
を追加します。 "/etc/ipsec.secrets"には
: PSK "<IPSec事前共有鍵となる任意の文字列>"
を追加します。
"/etc/ipsec.d/l2tp-psk.conf"は内容を以下のようにします。
サンプルが"/etc/ipsec.d/examples/l2tp-psk.conf"にあります。
conn L2TP-PSK-NAT
        rightsubnet=0.0.0.0/0
        also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=%defaultroute
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
"/etc/xl2tpd/xl2tpd.conf" は以下のようにします。
[global]
auth file = /etc/xl2tpd/l2tp-secrets
[lns default]
name = l2tpd
local ip = <L2TPサーバのIPアドレス(例えば 172.30.40.1)>
ip range = <L2TPクライアントに配るIPアドレス群(例えば 172.30.40.100-172.30.40.200)>
require chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
"/etc/ppp/options.l2tpd"は以下のようにします。
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
noccp
nodefaultroute
auth
idle 1800
mtu 1280
mru 1280
debug
lock
proxyarp
connect-delay 5000
ms-dns <DNSサーバのIPアドレス>
netmask 255.255.255.0
logfile /var/log/xl2tpd.log
"/etc/xl2tpd/l2tp-secrets"にはアカウントごとに以下のような行を追加します。
ちなみに'#'から始まる行はコメントです。
<ユーザ名> * <パスワード>
これで
# /etc/init.d/xl2tpd restart
# /etc/init.d/ipsec restart
すれば完了です。
なお、@knok blogを参考にさせてもらいました。
あと実行時にリダイレクトがどうとか怒られるのですが、
"proc/sys/net/ipv4/conf/*/accept_redirects"と"proc/sys/net/ipv4/conf/*/send_redirects"を 無効にしていないのが原因のようです。
lowendtalkを見ると
他にも色々いじっていますが、
基本的にはaccept_redirectsとsend_redirectsを軒並み無効(0)にしておけば問題ないようです。
あとはルーティングテーブルやNATを適切にいじれば
他のサブネットやインターネットへもアクセスできるようになります。

ところで今回利用を途中やめしたracoonを使うならdebian
nikoforgeのページが参考になりそうですし、
l2tpでないIPSec Xauthなvpnを使いたければ
serverfaultが参考になるかもしれません。
あるいはアメコロガシもいいかもしれません。
インターネット上にはたくさんの知恵があるんです。

0 件のコメント:

コメントを投稿