1. はじめに
SoftLayer上のVyOSにL2TP/IPsecリモートアクセスの設定をして、Windows7 / 10クライアントから接続します。
<今回使用したVyOSは1.1.6(Heliun)です。VyOSのL2TPは「最初に接続したユーザが接続状態の時、別のユーザが接続できない」といった問題があります。(一人しか接続できない。)
過去のVyattaでも同じ問題があり、まだ解決していません。
複数ユーザでL2TP/IPsecリモートアクセスを使う場合は、OpenVPNやWindows2008/2012を検討したほうが良いと思います。
ちなみに、最初のユーザ(Aさん)が接続している状態で別のユーザ(Bさん)が接続しようとすると、下記メッセージが表示されBさんは接続できませんでした。
2. L2TPについて
L2TPはレイヤー2で動作するトンネリングプロトコルで、暗号化の機能はありませんので、レイヤー3のIPsec暗号化と合わせて使用します(L2TP/IPsec)。
L2のトンネリングプロトコルは他に、
・PPTP(Microsoft, 3Com, Lucentが開発)
・L2F (Ciscoが開発)
があり、L2TPはPPTPとL2Fを統合し、IETFで標準化( RFC2661 )されています。
3. 構成について
SoftLayerTokyoロケーションにL2TP/IPsecサーバを設定し、インターネット経由でWindows7 / 10クライアントを接続します。
クライアントIPプール用にSoftLayerのポータルより、Private Portable IPをオーダーしました。
IPプール: 10.132.42.52~10.132.42.62
※SoftLayerがインスタンスを作成する際に使用する「Private Primary」IPアドレスを使用すると、新たにインスタンスをオーダーした際にアドレスバッティングする事がありますので、PortableIPを使用してください。
4. VyOSのL2TPリモートアクセス設定(ssh接続用)
VyOSの導入は下記情報などを参考にしてください。
QIITA「SoftLayer仮想サーバにVyOSをインストールしました」
http://qiita.com/Mitsu-Murakita/items/d793250566a8e9f3562b
VyOSの設定はSoftLayerのKVMで行います。
操作につぃては、下記情報を参考にしてください。
QIITA「SoftLayerとvyosでネットワークの基礎を勉強1-(トンネルGRE編)」
http://qiita.com/Mitsu-Murakita/items/73d497b391664273174e
4-1. VyOS初期値
interfaces{
ethernet eth0{
hw-id 06:54:db:17:0e:60
}
ethernet eth1{
hw-id 06:6d:4a:3d:82:8e
}
system{
config-managemant{
commit-revision 20
}
console{
device ttys0{
speed 9600
}
}
login{
user vyos{
authentication{
encrypted-password S1S5FsQse2v$VQLh5eeEp4ZzGmCG/PRBA1
plaintext-password ""
}
level admin
}
}
ntp{
server 0.pool.ntp.org{
}
server 1.pool.ntp.org{
}
server 2.pool.ntp.org{
}
}
package{
repository community{
components main
distribution heliunm
url http://packages.vyos.net/vyos
}
}
syslog{
global{
facility protocols{
level debug
}
}
}
}
4-2. SSHで接続できるように設定
KVMでは操作しづらいので、SSH接続できるように設定を行います。
KVMでの操作です。
IP(interface)の設定
ここでは、eth0がプライベート、eth1がパブリックです。
# set interfaces ethernet eth0 address 10.132.52.225/26 ⏎
# set interfaces ethernet eth1 address 161.202.91.39/28 ⏎
# commit ⏎
# save ⏎
下記3行は再起動後、自動的に追加されますが、ここでは明示的に設定します。
・duplex auto
・smp_affinity auto
・speed auto
# set interfaces ethernet eth0 duplex auto ⏎
# set interfaces ethernet eth1 duplex auto ⏎
# set interfaces ethernet eth0 smp_affinity auto ⏎
# set interfaces ethernet eth1 smp_affinity auto ⏎
# set interfaces ethernet eth0 speed auto ⏎
# set interfaces ethernet eth1 speed auto ⏎
# commit ⏎
# save ⏎
ssh(service)の設定
クライアントPCからssh接続できるようにします。
# set service ssh port 22 ⏎
# commit ⏎
# save ⏎
Gatewayアドレス(system)の設定
パブリックのゲートウェイアドレスを設定。
# set system gateway-address 161.202.91.33 ⏎
# commit ⏎
# save ⏎
DNS(system)の設定
SoftLayerのDNS、
・10.0.80.11
・10.0.80.12 を設定します。
# set system name-server 10.0.80.11 ⏎
# set system name-server 10.0.80.12 ⏎
# commit ⏎
# save ⏎
ドメイン名(system)の設定
ここではドメイン名を「softlayer.com」にしました。
# set system domain-name softlayer.com ⏎
# commit ⏎
# save ⏎
ホスト名(system)の設定
ここではホスト名を「VyOS-TOK」にしました。
# set system host-name VyOS-L2TP ⏎
# commit ⏎
# save ⏎
タイムゾーン(system)の設定
ここではタイムゾーンを「Asia/Tokyo」にしました。
# set system time-zone Asia/Tokyo ⏎
# commit ⏎
# save ⏎
NTP(system)の設定
初期値で
ntp{
server 0.pool.ntp.org{
}
server 1.pool.ntp.org{
}
server 2.pool.ntp.org{
}
}
が設定されていますので、これを削除して
ntp.nict.jpを設定しました。
# delete system ntp ⏎
# commit ⏎
# save ⏎
# set system ntp server ntp.nict.jp⏎
# commit ⏎
# save ⏎
これでクライアントPCからssh接続できるようになりました。
これ以降はTeraTermで接続して、L2TP/IPsec設定を続けます。
5. VyOSのL2TP/IPsecリモートアクセス設定
TeraTermでの操作です。
※説明しやすいように行番号[xx]をつけてますが、実際に登録する際は行番号を入力しないでください。
[01] set vpn ipsec ipsec-interfaces interface eth1
[02] set vpn ipsec nat-traversal enable
[03] set vpn ipsec nat-networks allowed-network 0.0.0.0/0
[04] set vpn l2tp remote-access outside-address 161.202.91.39
[05] set vpn l2tp remote-access client-ip-pool start 10.132.42.52
[06] set vpn l2tp remote-access client-ip-pool stop 10.132.42.62
[07] set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
[08] set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret password
[09] set vpn l2tp remote-access authentication mode local
[10] set vpn l2tp remote-access authentication local-users username user01 password user01
[11] set vpn l2tp remote-access authentication local-users username user02 password user02
[12] set vpn l2tp remote-access authentication local-users username user03 password user03
【説明】
[01] ipsecのインターフェースをパブリックIPのeth1に設定。
[02] NATトラバーサルを設定
[03] ここでは、リモートからのアクセスをすべて(0.0.0.0)にしました。
[04] パブリック(eth1)のアドレス。
[05]-[06] クライアントIP用のIPプールの範囲を設定。
Privete PortableIPのIPアドレスを使用します。
ここでは10.132.42.52~10.132.42.62を設定しました。
[07] 認証に事前共有鍵方式を使用します。
[08] ここでは、事前共有鍵を"password"としました。
[09] クライアントPCの認証をローカル登録で使用します。
[10]-[12] ユーザID、パスワードの設定(ローカル登録)。
ここでは、3ユーザーを作成しました。
・ユーザーID:user01 / パスワード:user01
・ユーザーID:user02 / パスワード:user02
・ユーザーID:user03 / パスワード:user03
interfaces {
ethernet eth0 {
address 10.132.52.225/26
duplex auto
hw-id 06:54:db:17:0e:60
smp_affinity auto
speed auto
}
ethernet eth1 {
address 161.202.91.39/28
duplex auto
hw-id 06:6d:4a:3d:82:8e
smp_affinity auto
speed auto
}
loopback lo {
}
}
service {
ssh {
port 22
}
}
system {
config-management {
commit-revisions 20
}
console {
device hvc0 {
speed 9600
}
device ttyS0 {
speed 9600
}
}
domain-name softlayer.com
gateway-address 161.202.91.33
host-name VyOS-L2TP
login {
user vyos {
authentication {
encrypted-password $1$e3p8PPXh$kGXa8tOvqpnGkbJApLO4A/
plaintext-password ""
}
level admin
}
}
name-server 10.0.80.11
name-server 10.0.80.12
ntp {
server ntp.nict.jp {
}
}
package {
auto-sync 1
repository community {
components main
distribution helium
password ""
url http://packages.vyos.net/vyos
username ""
}
}
syslog {
global {
facility all {
level notice
}
facility protocols {
level debug
}
}
}
time-zone Asia/Tokyo
}
vpn {
ipsec {
ipsec-interfaces {
interface eth1
}
nat-networks {
allowed-network 0.0.0.0/0 {
}
}
nat-traversal enable
}
l2tp {
remote-access {
authentication {
local-users {
username user01 {
password user01
}
username user02 {
password user02
}
username user03 {
password user03
}
}
mode local
}
client-ip-pool {
start 10.132.42.52
stop 10.132.42.62
}
ipsec-settings {
authentication {
mode pre-shared-secret
pre-shared-secret password
}
}
outside-address 161.202.91.39
}
}
}
6. クライアントPC側の設定
クライアントPC側の設定において、Windows7と10ではディフォルト値が違いますので、注意して下さい。
Windows7では接続できるが、Windows10では接続できないといった事が発生します。
<Windows7/10デフォルト値の違い>
接続のプロパティのセキュリティタグ
(Windows7)
・データの暗号化:「暗号化が必要(サーバーが拒否する場合は切断します)」
・認証:「次のプロトコルを許可する」チェック済
(Windows10)
・データの暗号化:「暗号化は省略可能(暗号化なしでも接続します)」
・認証:チェックなし
接続エラーを起こさないためには、Windows10の設定を変更します。
・データの暗号化:「暗号化が必要(サーバーが拒否する場合は切断します)」
・認証:「次のプロトコルを許可する」チェック済
6-1. クライアントPC側の設定(Windows7)
<ネットワーク共有センター>
「新しい接続またはネットワークのセットアップ」
「職場に接続します」
"インターネットアドレス":VyOS構成のパブリックインターフェース(eth1)
"接続先の名称":
「今な接続しない。」チェックを外す
⇒「次へ」
"ユーザ名"、”パスワード”:VyOS構成で指定した設定値を入れる
⇒「接続」
”VPNの種類”:「IPsecを利用したレイヤー2トンネリングプロトコル(L2TP/IPsec」選択
⇒「詳細」
「認証に事前共有キーを使う(P)」選択
"キー":VyOS構成で指定した設定値を入れる
「リモートネットワークでデフォルトゲートウェイを使う(U)」チェックをはずす
6-2. クライアントPC側の設定(Windows10)
<ネットワーク共有センター>
「新しい接続またはネットワークのセットアップ」
"インターネットアドレス":VyOS構成のパブリックインターフェース(eth1)
"接続先の名称":
⇒「作成」
<セキュリティタグ>
”VPNの種類”:「IPsecを利用したレイヤー2トンネリングプロトコル(L2TP/IPsec」選択
⇒「詳細設定」
「認証に事前共有キーを使う(P)」選択
"キー":VyOS構成で指定した設定値を入れる
⇒「OK」
”データの暗号化”:「暗号化が必要(サーバーが拒否する場合は切断します)」選択
「次のプロトコルを許可する」選択
⇒「OK」
7. VyOSのL2TP/IPsecリモートアクセス接続確認
Teratermで接続したVyOSで確認します。
Windows10クライアントPCからL2TP接続
状況が接続済みになり、接続完了。
VyOSコマンドの "show vpn remote-access"で確認します。
8. おわりに
今回の設定のだけでは、セキュリティ上かなり脆弱な状態ですので、フィルター(ファイアーウォール)の設定で補強して下さい。