linux@l2tpでVPN環境構築
概要
外出先から自宅のサーバにVPN接続する為にVPN設定をした時のメモ。環境
下記環境で行った方法です。他の環境では方法が異なる場合が多々あります。たぶん。- Debian 9.4.0 i386
- Linux version 4.9.0-6-686
- PCEngines ALIX 1e
必要なパッケージをインストールする
下記コマンドで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
コメント
コメントを投稿