Magic eye りたーんず 

Magic eye りたーんず

意味深に振る舞っている。

table of contents

過去の日記

Akiary v.0.51

アクセス解析



数日にわたるイベント

19インチラックをぽちった

2018年7月25日(水)

そろそろ台風シーズン。土日の天気も予測しづらく、バイクもドローン遊びもなかなかやりづらくなってきた。部屋も稼働中・予備機材含めて少々手狭になってきたしー ってことで、19インチラックを今更導入することにした。3回欲しいと思ったら買う。大事。

2018-07-26T00:53:04+09:00 に書いたけど,こっそり2018-07-26T00:53:04+09:00に修正.

URI : https://www.misasagi.org/201807.shtml#date20180725

ドローンを買った

2018年7月5日(木)

買っちった。先月。

ちょっと金遣い荒いですねすいません。だって、先んじて買った Ryze TELLO が思ったより楽しかったし、初めて操縦した Phantom 4 Pro で安定性とか色々考えてたら DJI Mavic Pro が安くなってたんだもの。しかたがない。

RAW で安定して撮影できるのはいいが、動きが固すぎて、動画よりは RAW モードでスチル撮影がおもしろいかもしれない。まあスポーツモード使えばいいんだろうが、あんまりヒラヒラ飛ばすにはまだまだ。あと Mavic Pro は ATTI モードに手動変更できないから、練習には少々物足りないかもしれない。まあそこは TELLO で練習すればいいのではあるんだけど。

というわけで、型落ちとなった Phantom 3 Standard あたりを狙ってるんですよ。ええ。。

2018-07-05T23:35:57+09:00 に書いたけど,こっそり2018-07-05T23:40:04+09:00に修正.

URI : https://www.misasagi.org/201807.shtml#date20180705

ProLiant DL320e Gen8 V2 を買った

2018年6月11日(月)

自宅の仮想化母艦の老朽化とか、「久しぶりにメーカ純正のサーバが触りたいな」ってことで、色々と物色をしてた結果、買っちった。Xeon E3-1220 v3 で SmartArray P222 + FBWC 搭載の 2.5-inch SAS/SATA モデル。奥行き短くて取り回しやすい所がチャームポイント。BIOS を最新に上げれば FAN の騒音も大して気にならない。はず。

SmartArray というか ProLiant を Linux で使うのは色々久しぶりだったので、あれこれ模索。当初は手持ちの SAS 600GB 10krpm で RAID1 でも構築するかと思ったものの、FBWC の保守のこととかを考えて、まず SmartArray P222 は取り外し、on-board の SmartArray B120i も無効化、通常の SATA AHCI モードで Linux MD RAID から起動させる...という自宅標準構成に落ち着いた。なんというか、あまりに保守的。

いかんせんこの筐体はまだこの価格では余り出回っていないので、予備の確保はもう少し先になりそう。でもその前に Gen9 世代が...とかね。

2018-06-12T00:06:09+09:00 に書いたけど,こっそり2018-06-12T00:07:31+09:00に修正.

URI : https://www.misasagi.org/201806.shtml#date20180611

連休のすごし方

2018年5月6日(日)

GW は天気に恵まれず、あんまり遠出とかはせずに近所の山間部をクルマで走り回ったりしてた。目的はようやく個人でも入手・契約できるようになった SIGFOX モジュールの試験も兼ねてたりするのだけれど、「この山奥でも電波届くんか」と正直驚きを隠せない一方で、構築・展開とかを果たしてどうするのかとか色々思うところがあった。まあこれはまとまったら書くかもしれない。

以前から思うところがあって、自宅の共通基盤系(コンテンツDNSとかメール受けとか、そういうやつら) を自宅から VPS に逃したいなぁとぼんやり思ってた。

このあたりの設備は、引越とかで組替が面倒という側面もあったりしつつも、昨今の懐事情とかもあって手をつけられずにいた。そんな矢先、自宅を2時間近い大規模停電が直撃した。幸い、UPS を導入していたのでデータロスト等は発生しなかったものの、その UPS が電力を使い果たすレベルの停電は記憶にない。先の震災では東京都内在住だったが、ここまで長時間の停電は発生しなかったと記憶している。

というわけで、一部のサーバインスタンスを VPS 上に逃すことにした。VPS との接続は既に IPsec-VPN で地固めしてあるので、あとは VPS を契約してそこに再構築なり V2V すればいい。VPS は、長いことお世話になっている、さくらインターネット様の VPS サービスを1個契約。移行対象のいくつかは KVM で構築しているが、既に自宅等で LXC の検証を進めていたので、今回は LXC で分離を行う。

2018-05-07T00:42:19+09:00 に書いたけど,こっそり2018-05-07T00:44:02+09:00に修正.

URI : https://www.misasagi.org/201805.shtml#date20180506

そろそろ出張も終盤

2018年4月11日(水)

仕事の方もだいぶ順調というか、残タスクがはっきりしてきた。何とかなりそう。お客さんも現場もだいぶ居心地の良いところだし、何やかんやでやってて楽しい。1日の半分近くを過ごすのだから、結局のところ「楽しい」「雰囲気が良い」とかの数値化が難しいところが、仕事における重要なファクターだと思う。

この長期出張、夜な夜な飲み歩くだけではなく、Raspberry Pi 3 で VPN を終端する無線LANルータのプロトタイプも実装できた。これは割と以前からぼんやり構想していたが、まさか緊急用機材と遊び用を兼ねて持ち込んでいた RPi をここまで作り込むとは思ってなかった。LCD/タッチボタン hat も組み付けてヘッドレス運用できるようにもう少し改良してみてもよさそう。あとは車載するのであれば 3G/LTE モデムや ACC 電源断を考慮した耐障害性能も必要か。

2018-04-11T23:39:16+09:00 に書いたけど,こっそり2018-04-11T23:39:16+09:00に修正.

URI : https://www.misasagi.org/201804.shtml#date20180411

Raspberry Pi 3 + Raspbian で L2TP/IPsec クライアントの設定をする

2018年4月5日(木)

やりたいこと: Linux で L2TP/IPsec リモートアクセス VPN クライアントの設定してぇ

今週月曜日から長期出張のためホテル住まい。夜はどうせ暇になるだろうということで、持ってきた Raspberry Pi 3 で L2TP/IPsec リモートアクセス VPN を終端してみることにした。最終目標は、VPN 終端した上で WiFi アクセスポイントとして動作すること (SSH や リモートアクセス VPN で自宅に接続してるけれど、PC や端末に個別に設定を仕込んでいくのは面倒なのよ..Android のファイルマネージャは over-VPN で CIFS にアクセスできないし)。

環境

L2TP/IPsec リモートアクセス VPN の設定を行い、point-to-point なトンネルを開通できることをゴールに設定する。static route や DNS resolver の設定は一旦考えない。

  • L2TP/IPsec サーバ : YAMAHA RTX810 F/W Rev.11.01.31
  • L2TP/IPsec クライアント : Raspbian GNU/Linux 9.4 (stretch)
    • IPsec : strongswan 5.5.1-4+deb9u1
    • L2TP : xl2tpd 1.3.8+dfsg-1
    • pppd : ppp 2.4.7-1+4

設定の流れ

設定手順としては次のとおり。

  1. IPsec トランスポートモードの設定
  2. L2TPv2 トンネルの設定
  3. PPP 関連の設定

先に IPsec トランスポートモードを開通できないと L2TPv2 + PPP による point-to-point が設定できないので、上記の順番で確認しながら設定を進める。

RTX810 側の VPN サーバ設定

L2TP/IPsec リモートアクセス VPN の設定を RTX810 にくべていく。YAMAHA 製品の日本語情報はとても多いので、詳細な説明は省略し(filter や NAT 等の設定は省略してある)、肝となる pp と tunnel のあたりの設定を示しておく。

ip loopback2 address 192.168.32.254


pp select anonymous
pp bind tunnel1
pp auth request chap
pp auth username
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type mppe-any
ppp ccp no-encryption accept
ip pp address 192.168.32.254/32
ip pp remote address pool 192.168.32.8-192.168.32.15
ip pp mtu 1258
pp enable anonymous


tunnel select 1
tunnel encapsulation l2tp
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 off
ipsec ike local address 1 192.168.32.254
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text PRE-SHARED-KEY
ipsec ike remote address 1 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 1

ipsec auto refresh on
ipsec transport 1 1 udp 1701

l2tp service on

設定としてはとてもプレーンなのだが、いくつか補足。しばしばみられる設定例では、LAN 側 DHCP サーバのプールから VPN クライアントにアドレスを払い出すことが多いのだが、VPN はセグメントを分けておきたかったため、ここでは LAN 側とは異なるセグメントのアドレスを払い出している。併せて VPN の始点アドレス設定 ipsec ike local address 1 192.168.32.254 と ip loopback2 address ... の設定を入れてある。

なお、PPP のユーザ認証が CHAP (ppp ccp type mppe-any を入れてあるが、任意つまり無効となる。) となっているのは、Android 7.x の L2TP/IPsec-PSK クライアントが MS-CHAP + MPPE に未対応という、あまり本題とは関係のない都合。そもそも機器認証の処理段階では IPsec PSK で point-to-point な通信が暗号化されてるんだから、そこまで強固な認証は必要ないですよね。そもそも MS-CHAP-V2 も既に堅牢とはいえないし。

Raspberry Pi 側の VPN クライアント設定

続けて、本命のクライアントの設定。L2TP で言えば LAC 側。まずパッケージを apt 経由でインストールしておく。

$ sudo apt-get install strongswan xl2tpd

Raspberry Pi VPN クライアント > IPsec トランスポートモード設定

まずは暗号化されたトンネルを設定する。クライアント側が、外出先ネットワークなり CGN なりの NAT 配下にいることを想定して、NAT-Traversal を前提とした設定とする。

$ sudo vim /etc/ipsec.conf
conn %default
   keyingtries=0

conn MYIPSEC0
   keyexchange=ikev1
   authby=secret
   ike=aes128-sha1-modp1024,3des-sha1-modp1024!
   esp=aes128-sha1-modp1024,3des-sha1-modp1024!
   auto=start
   leftfirewall=yes
   left=%defaultroute
   leftid=%any
   leftprotoport=17/1701
   right=HOSTNAME
   rightprotoport=17/1701
   rightid=%any
   type=transport
   dpddelay=20
   dpdtimeout=60
   dpdaction=restart
   closeaction=restart

$ sudo vim /etc/ipsec.secrets
%any : PSK "PRE-SHARED-KEY"

  • サービス起動と同時に自動で接続を開始し、切断時に自動再接続する設定を行っている。
  • には、VPN サーバとなる YAMAHA RTX810 の WAN 側に付くグローバルIPv4アドレスまたはホスト名を入力する。
  • YAMAHA RT シリーズでは IKEv1 のサポートとなるため、keyexchange には ikev1 を指定する。2018/04/16修正:IKEv1のみサポートと読める書き方になっていますが、IKEv2もサポートされます。
  • leftid=%any は、トンネルのエンドポイントアドレス(つまり実際には192.168.32.254) を設定するための値。このパラメータが無いと、VPN サーバの WAN 側アドレスが設定されてしまい、SA の確立ができない。
  • right=HOSTNAME には、RTX810 の WAN 側アドレスを指定する。hostname または IPv4 アドレスを入力する。なおダブルクォートで囲むと、IPv4 アドレスでも hostname として解釈されるとのことなので、注意が必要。
  • 17/1701 が、L2TPv2 が使用する UDP/1701 の設定となる。なお、YAMAHA RTX シリーズの L2TP/IPsec では、このポート番号は変更できないようである。

設定が完了したら、systemctl restart ipsec でサービスを再起動すると、接続が開始される。 ipsec status で状態をチェックできるので、SA が確立していることを確認する。

$ ipsec status
Security Associations (1 up, 0 connecting):
 MYIPSEC0[1]: ESTABLISHED 2 seconds ago, []...[192.168.32.254]
 MYIPSEC0{1}: INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: xxxxxxxx_i xxxxxxxx_o
 MYIPSEC0{1}: /32[udp/l2f] === /32[udp/l2f]

Raspberry Pi VPN クライアント > L2TPv2 トンネルの設定

PPP によるユーザ認証と P-to-P トンネルを確立するため、IPsec トランスポート上で、L2TPv2 トンネルを掘る。

# vim /etc/xl2tpd/xl2tpd.conf
[global]
auth file = /etc/ppp/chap-secrets

[lac MYIPSEC0]
lns = HOSTNAME
require chap = yes
pppoptfile = /etc/ppp/options.l2tpd.client
autodial = yes
redial = yes
redial timeout = 10
max redials = 6

L2TP では、LNS がサーバ(RTX810)、LACがクライアントすなわちイニシエータとなる。今回は LAC を構成するため、lac の設定を入れる。PPP 関連の設定が含まれるのは、L2TPv2 が PPP を実質的に通すためのプロトコルであるためである。ポイントとしては、今回 RTX810 側の認証に CHAP を必須としているために require chap = yes の設定を組み込んである。また、IPsec の自動接続設定と併せて、こちらでも自動接続と再接続の設定を入れてある。

Raspberry Pi VPN クライアント > PPP 関連設定

トンネルセッションを確立するため、 L2TPv2 トンネル上での PPP 設定を行う。通信は IPsec で暗号化できているが、ユーザ認証(PPPにおいては、機器同士の認証が本来の目的) は PPP に任せる。

# vim /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"USERNAME" "MY-TUNNEL-END" "PASSWORD" *

# vim /etc/ppp/options.l2tpd.client
name USERNAME
remotename MY-TUNNEL-END0
ipcp-accept-local
ipcp-accept-remote
lcp-echo-interval 30
lcp-echo-failure 4
require-chap
noccp
nobsdcomp
noauth
mtu 1258
mru 1258
nodefaultroute
usepeerdns
connect-delay 5000
persist
debug

PPP の認証とは、PPP トンネルの両端の機器を認証するための仕組みであることから、chap-secrets には、client と server の両端の識別子が必要となっている。PPPoE やモデムの PPP の設定を行う際にはあまり意識することはないものの、xl2tpd + pppd では両端の設定が必要になる。つまり、client に USERNAME を、server に options.l2tpd.client の remotename を設定する。

ここでは PPP らしい(?)設定を行う。require-chap, ipcp-accept-local, ipcp-accept-remote は必須として、LCP keepalive 等の設定は任意で行う。

今回は別途 static route 等で経路制御を行うので、nodefaultroute を明示し、デフォルトルートの上書きはさせない。usepeerdns についても動作確認程度である。

あと、L2TP/IPsec 固有の設定として、connect-delay 5000 を入れておくといいだろう。IPsec と L2TPv2 トンネルが確立できる(と期待される)一定時間経過してから、接続処理を開始する。MTU/MRU 設定は一例で、最初は 1210 bytes 等の小さな値から始めて、様子を見ながら調整してみるといい。

テスト

ここまできたら、systemctl restart ipsec ; systemctl restart xl2tpd 等で接続シーケンスをやり直してみる。IPsec SA が確立し、トランスポートモードで UDP/1701 が IPsec で暗号化され、PPP over L2TPv2 で Point-to-Point が確立し、pppX インタフェースができるはずである。できれば、IPsec パケットを転送する eth0 等で tcpdump を行って、本当に通信が暗号化されているのかを確認するべきである。

おわりに

冒頭にも書いたが、ここではいわばボーダーを開通したにすぎない。実は今まで Linux で L2TP/IPsec の設定をしたことがなかったので、半分暇つぶしにトライしてみた経緯がある。実際には ファイアウォール、static route、NAT、DHCPサーバ、DNS フォワーダ等の設定を追加していかないと、実用にはならない。また、今回は VPN を終端するルータとして構築したが、Linux クライアント PC で同様のことをしようとすると経路設定や DNS の振り向けをどう組み込んでいくかなど、いろいろと考えることが多くなる。

DNS はけっこう悩ましいところで、resolvconf によって /etc/resolv.conf に自動で付け消しされるものの、ぶっちゃけ zone "." が全てだったら既に持っている DNS サーバで引けば良い。しかし、VPN を張るということは自身の閉域網内のゾーンを参照したいことが多いわけで、となると resolv.conf にセカンダリ DNS として設定されても、ちょっと困る。 となると、ubound なりの DNS フォワーダをインストールして別途そちらで調整した方がいいのだが、ということは usepeerdns の意味って実はあんまり無いのでは・・・という。

VPN はとにかくデフォルトルートと DNS をどう味付けするかで悩む。いやまあそれはそれで楽しいのだけれど。

2018-04-06T00:05:26+09:00 に書いたけど,こっそり2018-04-25T22:13:27+09:00に修正.

URI : https://www.misasagi.org/201804.shtml#date20180405

RTX810を買った

2018年3月31日(土)

日増しに春めいてきて、ようやっとバイクが気持ちいい季節になると思いきや、来週から2週間ほど関東圏に出張。長いし目的もはっきりしないし困る...せっかくなので情報収集してこようかなと思ったり。

仕事でも何かと YAMAHA のルータは触ることがあるので、思い切って RTX810 を買った。もともと RTX1100 は部屋に転がってるんだけれど、せっかくなら新しい機種を使ってみようかなと。

自宅環境は SEIL/x86 で IPoE + DSLite を終端・メイントラフィックを乗せている。一方、外部から IPv4 でアクセスを受け付けるために、もう1台別のルータが従来どおり IPv4 PPPoE を終端していた。今回はこの IPv4 PPPoE 終端装置を RTX810 にリプレースしながら、設定に慣れていこう。ということで、ここ半月ほどガチャガチャやってた。

YAMAHA 製品は日本語情報が充実しており、というか多すぎてやや混乱してしまうこともあったりするのだけれど、それはともかくとして、概ね自分の意図した通りに設定できた気がする。RTX810 なら LTE モデム接続にも対応できるので、車載ルータとかとしても使い道があるかもしれない。

ちなみに去年買った Juniper SRX300 は、ソフトウェアの保守を受けられない子なので、あくまで実験用途のみ。実網に晒されるところはちゃんとしておかないと。

2018-04-01T00:10:58+09:00 に書いたけど,こっそり2018-04-01T00:13:25+09:00に修正.

URI : https://www.misasagi.org/201803.shtml#date20180331

バックナンバー | トップ | 日記管理