linux@l2tpでVPN環境構築

linux@l2tpでVPN環境構築

概要

外出先から自宅のサーバにVPN接続する為にVPN設定をした時のメモ。

環境

下記環境で行った方法です。他の環境では方法が異なる場合が多々あります。たぶん。

必要なパッケージをインストールする

下記コマンドでl2tpのサーバであるxl2tpdを、IPsecのstrongswanをインストール。
今はopenswanじゃないんだねぇ。
$ sudo apt-get install strongswan xl2tpd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libpcap0.8 libstrongswan libstrongswan-standard-plugins ppp
  strongswan-charon strongswan-libcharon strongswan-starter
提案パッケージ:
  libstrongswan-extra-plugins libcharon-extra-plugins
以下のパッケージが新たにインストールされます:
  libpcap0.8 libstrongswan libstrongswan-standard-plugins ppp strongswan
  strongswan-charon strongswan-libcharon strongswan-starter xl2tpd
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
1,860 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,996 kB のディスク容量が消費されます。
続行しますか? [Y/n]

IPsecを設定する

まず、/etc/ipsec.confに設定。最初は下記内容になっていた。
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
        # strictcrlpolicy=yes
        # uniqueids = no

# Add connections here.

# Sample VPN connections

#conn sample-self-signed
#      leftsubnet=10.1.0.0/16
#      leftcert=selfCert.der
#      leftsendcert=never
#      right=192.168.0.2
#      rightsubnet=10.2.0.0/16
#      rightcert=peerCert.der
#      auto=start

#conn sample-with-ca-cert
#      leftsubnet=10.1.0.0/16
#      leftcert=myCert.pem
#      right=192.168.0.2
#      rightsubnet=10.2.0.0/16
#      rightid="C=CH, O=Linux strongSwan CN=peer name"
#      auto=start

include /var/lib/strongswan/ipsec.conf.inc
上記のサンプルを元に下記を追記して設定。
conn L2TP-PSK-NAT
        auto        = add
        type        = transport
        left        = %any
        leftauth    = psk
        right       = 192.168.1.2
        rightauth   = psk
        rightsubnet = 192.168.1.0/24
config setup
とりあえず何も書かなくて良い模様。
conn
このセクションでは、IPsecを用いて行われるネットワークコネクションを定義するコネクション仕様を定義する。connに続くのはその定義の名前。
leftとrightが出てくるが、VPNで接続する側をleftとrightで表している。
left/right
leftまたはrightのIPアドレスまたはホスト名を設定し、leftが誰なのかrightが誰なのかを決める。基本的には一方を自分、相手は%any(スマホなどの移動端末は固定ではないので)とする。
subnet
その人のサブネットマスクを設定。これも基本的には、自分のサブネットマスク(例えば、192.168.1.0/24)だけ設定して、相手は設定しない。
auto=add
接続待ち状態で待機する事を設定。

次に、/etc/ipsec.secretsを設定。最初は下記内容。
# This file holds shared secrets or RSA private keys for authentication.

# RSA private key for this host, authenticating it to any other host
# which knows the public part.

# this file is managed with debconf and will contain the automatically created private key
include /var/lib/strongswan/ipsec.secrets.inc
ここに事前共通鍵の設定を追加。sample-keyはなんか適当に変える様に。
: PSK "sample-key"

l2tpを設定する

まず、/etc/xl2tpd/xl2tpd.confを下記のように設定。
[lns default]
name                   = l2tp
ip range               = 192.168.1.200-192.168.1.254
local ip               = 192.168.1.2
length bit             = yes
refuse pap             = yes
refuse chap            = yes
require authentication = yes
pppoptfile             = /etc/ppp/options.l2tpd.lns
name
認証に使用する名前。ppp設定時のnameと関連付ける(確か)
ip range
接続してきたユーザに設定するIPアドレス
local ip
サーバのローカルIPアドレス
length bit
l2tpヘッダのlengthフィールド有無の設定(かな?)
refuse pap
PAPの使用拒否
refuse chap
CHAPの使用拒否

pppを設定する

次に/etc/ppp/options.l2tpd.lnsを下記のように設定。
name l2tp
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
nodefaultroute
lock
nobsdcomp
mtu 1280
mru 1280
logfile /var/log/xl2tpd.log
name
認証時に使用する名前(らしい)
refuse-pap
PAPの使用を許可しない。
refuse-chap
CHAPの使用を許可しない。
refuse-mschap
MS-CHAPの使用を許可しない。
refuse-mschap-v2
MS-CHAPv2による自己証明を要求する。
nodefaultroute
ユーザにデフォルト経路を作成させない。
lock
排他アクセスを確実に行うために、ロックファイルを作成する。(良く分かってない…)
nobsdcomp
パケットのBSD-Compress圧縮を無効にする。
mtu
MTU値の設定。
mru
ネゴシエーション時のMRU値
logfile
ログファイルのパス

次に/etc/ppp/chap-secretsを下記のように設定。
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"username" * "password" *
これで、usernameとpasswordでログインとなる。

カーネルパラメータを設定する

次に/etc/sysctl.confの下記行のコメントアウトを解除。
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
ipv4のパケット転送を有効にする。

設定を反映する

下記コマンドで必要なデーモンの再起動を実施。
$ sudo service strongswan restart
$ sudo service xl2tpd restart
$ sudo sysctl -p

コメント

このブログの人気の投稿

プライバシーポリシー

git@よく使うコマンド早見表