お疲れ様です。S-denです。
今回は題名の通りルータとラズパイ間でVPNを張ろうとしたときに、
色々分かったこと、分からなかったことを残していきます。
ラズパイ側のセッティングとして、Ingenious様の記事
Raspberry Pi L2TP/IPsec VPNクライアントの構築 | Ingenious
を参考にさせて頂きました。
この場をお借りしてお礼申し上げます。
利用想定の一例として、
本社-支社間で何かしらのトラブルによって通信不可となったときに
本社の人間が支社に設置済みのラズパイにリモートで接続、
ラズパイ本体から支社のネットワーク機器にシリアル/telnet等で状態確認を行える。
といった環境を作ってみようと思っています。
〇環境------------------------------------------------
ラズパイ
・機種:Raspberry Pi 3 Model B Plus Rev 1.3
・OS:Raspbian GNU/Linux 9.13(stretch) armv7l
・Kernel:4.19.66-v7+
--------------------------------------------------------
・パッケージのインストール
ラズパイにstronGswan,xl2tpd,ike-scanをそれぞれインストールします。
pi@raspberrypi:~ $sudo apt install strongswan xl2tpd ike-scan
私の環境での各パッケージのversionはそれぞれ下記のとおりです。
pi@raspberrypi:~ $ ipsec --version
Linux strongSwan U5.5.1/K4.19.66-v7+
Institute for Internet Technologies and Applications
University of Applied Sciences Rapperswil, Switzerland
See 'ipsec --copyright' for copyright information.
pi@raspberrypi:~ $ xl2tpd -v
xl2tpd version: xl2tpd-1.3.8
pi@raspberrypi:~ $ ike-scan --version
ike-scan 1.9.4
Copyright (C) 2003-2009 Roy Hills, NTA Monitor Ltd.
ike-scan comes with NO WARRANTY to the extent permitted by law.
You may redistribute copies of ike-scan under the terms of the GNU
General Public License.
For more information about these matters, see the file named COPYING.
$Id$
$Id$
$Id$
$Id$
$Id$
ここまでの操作は参考記事とほぼ同じでしたが、
参考記事と私の環境とで差があったせいか
この後の手順にてエラーがありましたので、それを中心にまとめます。
内容は参考記事と同じなので割愛します。
・シェルスクリプトの実行(エラー発生その1)
作成したシェルスクリプトを実行すると以下の表示が・・・
pi@raspberrypi:~ $ sudo ./ike-scan.sh 1.1.1.1 | grep SA=
sudo: unable to execute ./ike-scan.sh: No such file or directory
エラーの内容を検索してみると「改行文字がLinux環境に適していない」とのことだったため、
改めて手打ちしてみたが結果変わらず。
さらに調べるとどうやらシェルスクリプトの指定場所?が間違っていたらしく、
シェルスクリプトの内容を
#!/usr/bin/sh
から
#!/bin/bash
に変更することで何とか動作しました。
Linux初心者のため何故これで動作できるようになったかは不明です・・・。
/bin/bashに変更したのも何となくてきとうにやっただけなので、
詳しい方いましたら教えてください・・・。
・シェルスクリプトの実行(エラー発生その2)
シェルスクリプトを実行すると、以下の結果が表示されました。
ike-scan --trans=7/256,7,3,21 -M 1.1.1.1
ERROR: Could not bind network socket to local port 500
Only one process may bind to the source port at any one time.
ERROR: bind: Address already in use
ここで、「1.1.1.1」は自宅で作ったクローズの検証環境で割り当てた
VPNサーバ想定のアドレスです。
エラーの内容を見るとどうやらVPNで張るためのポート500番が既に使用されている様子でした。
しかし、「netstat」で結果を見てもポート500は表示されず・・・。
ただ、ポート500はIPsecでISAKMPで使用されるポートなので、
もしかしてラズパイがIPsecを張ろうとしているのでは?と思い
色々コマンドをtabキーを駆使して探してみると
sudo ipsec stop
なるものを発見。
pi@raspberrypi:~ $ sudo ipsec stop
Stopping strongSwan IPsec...
実行後に再度スクリプトを実行するとエラーを吐かずに無事に実行できました。
「netstat」でポート500が使われているように見えなかった理由が分からない・・・。
Linux勉強しなきゃ・・・。詳しい人いましたら教えてください・・・。
次回からはVPNサーバ側のセッティングを進めたいと思います。
というより、VPNサーバ側のほうがかなり難しそう・・・多分無理かも?
以上、S-denでした。