Setup L2TP over IPSec VPN Client on gentoo
Tech > Distoribution > gentoo
とくにgentooとは限らないですが、LinuxでVPNクライアントを設定する方法が難しいので貼っておきます。
クライアントで必要なデーモン
他の方法でもVPN接続可能だとは思いますが、このエントリでは以下の2つのデーモンを使って接続します。
strongswanでIPSecを張って、xl2tpdでIPSec上でL2TPを利用してpppフレームを流すというものです。
カーネル設定
IPSecを行うので、カーネルでハッシュアルゴリズムを利用可能にし、ネットワークデバイスでは ppp (Point to Point Protocol)などは有効またはモジュールでビルドしたカーネルで起動しておく。
暗号化・ハッシュアルゴリズム設定
Cryptographic options --->
[*] Cryptographic API
[*] HMAC support
[M] MD5 digest algorithm
--- SHA1 digest algorithm
[M] SHA256 digest algorithm
[M] SHA384 and SHA512 digest algorithms
[M] DES and Triple DES EDE cipher algorithms
[M] ARC4 cipher algorithm [M] Deflate compression algorithm
ネットワークデバイス設定
Device Drivers --->
Networking support --->
<M> PPP (point-to-point protocol) support
<M> PPP BSD-Compress compression
<M> PPP Deflate compression
[*] PPP filtering
<M> PPP MPPE compression (encryption)
[*] PPP multilink support
<M> PPP over Ethernet
<M> PPP over IPv4 (PPTP)
<M> PPP over L2TP
<M> PPP support for async serial ports <M> PPP support for sync tty ports
パッケージのインストール
必要なパッケージをインストールする、他のディストリビューションの場合、適切読み替えるか、調整してください。
strongswan
ご利用の環境に合わせて、USEを決めてインストールしてください。
shell(root)> USE="dhcp networkmanager gcrypt strongswan_plugins_blowfish strongswan_plugins_ipseckey" emerge net-vpn/strongswan
xl2tpd
shell(root)> emerge net-dialup/xl2tpd
ppp
shell(root)> USE="dhcp eap-tls gtk ipv6 pam" emerge net-dialup/ppp
念のため、pptpclientも入れておく。
shell(root)> emerge net-dialup/pptpclient
networkmanager-l2tp
GUIを利用して接続設定を作成したりする場合はインストールを推奨。
shell(root)> USE="gnome" emerge -pv net-vpn/networkmanager-l2tp
remmina
そして、接続したあとに利用する、GUIクライアント。
shell(root)> emerge net-misc/remmina
VPNクライアントの設定
VPNの接続設定ですが、L2PTをつかうとの、相手がYamaha系ルータのエンドポイントに接続するので、トランスポートモードで接続する設定になります。
strongswanの設定
ルータとのIPSecよる接続の設定になります、事前にネットワーク管理者へルータ情報を提供してもらい設定を行う。
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn vpn-sample-conn # 接続名
auto=start # Service起動でIPsecトンネルを張る
type=transport # L2TPでトランスポート設定
authby=secret # 認証方法はPSK
keyexchange=ikev1 # 鍵交換アルゴリズムはIKE ver 1
ike=aes128-sha1-modp1024 # IKE暗号化アルゴリズム
esp=aes128-sha1 # ESP暗号化アルゴリズム
left=%defaultroute # クライアントがdefault router
right=aaa.bbb.ccc.ddd # 接続先ルータIP
rightid=192.168.55.1 # 接続先ローカルIPアドレス
rightsubnet=192.168.55.0/24 # 接続先ローカルネットワーク
compress=no
ikelifetime=8h # IKEライフタイム(8時間)
lifetime=8h # SAライフタイム(8時間)
keyingtries=%forever
leftprotoport=17/1701 # クライアント側のトランスポート番号(L2TP -> UDP:1701)
rightprotoport=17/1701 # 接続先ルータ側のトランスポート番号(L2TP -> UDP:1701)
dpddelay=20 # 20秒ごとにdpdパケットを送信
dpdtimeout=120 # タイムアウトは120
dpdaction=restart # DPDがタイムアウトしたらトンネルを貼り直し
closeaction=restart # トンネル切断したらトンネルを貼り直し
ルータとの接続に利用するPSK(Pre Shared Key)の設定です。
%any aaa.bbb.ccc.ddd : PSK "PSKパスワード"
xl2tpdの設定
L2TPを利用するための設定。
[lac name777]
lns = aaa.bbb.ccc.ddd
name = name777
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd.router
length bit = yes
require chap = yes
refuse pap = yes
require authentication = yes
redial = yes
redial timeout = 15
max redials = 6
name name777
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth # 認証を設定しない。
idle 1800
mtu 1410 # 最大転送単位 (MTU)
mru 1410 # 最大受信単位 (MRU)
nodefaultroute # 接続先ルータをdefrouterにしない
usepeerdns
debug
connect-delay 5000
name zzzzzzzzzz # L2TPのユーザ名
password vvvvvvvvvvvv # L2TPのパスワード
起動する
デーモンを起動する。
shell(root)> systemctl restart strongswan
shell(root)> systemctl start xl2tpd
IPSecを張る。
shell(root)> ipsec start
ppp0ネットワークデバイスを作成し、L2TPでトンネルしてpppで認証する。
shell(root)> xl2tpd-control connect name777
パケットをルーティングして、VPNのパケットはppp0から出るようにする。
shell(root)> ip route add 192.168.55.0/24 via 192.168.55.1 dev ppp0
ggg.hhh.0.1の向こうにいる、マシンにpingを打って帰ってくればVPN接続は完了です、問題が或る場合は journalctl -f しながら検証すると良いかもしれません。
Remminaの設定
接続が完了すれば、RemminaなどのクライアントでWindowsへRDPできます。
Windows10へ接続
ここのログインIDとパスワードはWindowsで定義されるものです。
用語
横文字の用語が多くて大変ですが簡単にまとめると
横文字 | 説明 |
---|---|
AES | Advanced Encryption Standard 共通鍵暗号化方式、ビット数が大きい方が強度はあるが計算コストは高い |
IPSec | IPパケット単位で暗号化と改竄検知をなどを提供するプロトコル、トンネルモードとトランスポートモードがある |
IKE | Internet Key Exchange 鍵交換プロトコル SAを構築するための鍵を交換するプロトコル、バージョン1とバージョン2がある |
SA | Security Association ピア間に張る単方向コネクション、そのため双方向通信には2本張る |
ESP | Encapsulated Security Payload ペイロードの暗号化と認証(改竄検出のためのもの) |
L2TP | Layer2 Tunneling Protocol データリンク層でピア間を接続するトンネルプロトコル暗号化機能がないのでL3のIPSecなどと併用される |
PPP | Point to Point Protocol 2点間を接続して通信を行うプロトコル |
説明が足りませんが、主にこんなところです、LinuxでVPNをやる場合はある程度理解した上で利用しましょう、面倒くさいので、WindowsかMacで接続したほうがいいと思います。
Posted on 2021-01-05 21:23:43