2016年7月10日日曜日

L2TP/IPSecなサーバを立てたい(迷走メモ) Vol.1

作業記録。めちゃくちゃな走り書き。

★★★ Step.1 OpenWRTのディスクイメージから仮想ディスクを作る ★★★

まずはじめにOpenWRTのディスクイメージをVirtualbox仮想ディスクに変換

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe convertfromraw 
   c:\vm\openwrt-15.05.1-x86-generic-combined-ext4.img c:\vm\ow15051.vdi --format VDI
Converting from raw image file="c:\vm\openwrt-15.05.1-x86-generic-combined-ext4.img" 
to file="c:\vm\ow15051.vdi"...
Creating dynamic image with size 55050240 bytes (53MB)...

と。

★★★ Step.2 作った仮想ディスクでVMを作る ★★★

VirtualBoxマネージャ起動⇒新規⇒


次へ(N)⇒メモリーサイズ 256MB⇒ハードディスク すでにある仮想ハードディスクを使用する(U)
⇒一番最初に作成したVDIを使う。ow15051.vdi

~~↑VM作成終わり↑~~

★★★ Step.3 VMをカスタマイズする(シリアルポート編、スキップ可) ★★★

シリアルポート設定。(SSHが死んでもコンソールがバグったりKernelメッセージで洪水になってもシリアルポートが生きていれば安心。安定してきたら、ヘッドレス化も容易になる。
TeraTermで繋ぐことができるのでTextのコピペも簡単で、作業記録を残しやすい設定。
不要ならスキップ。
OpenWRT15.05.1(VPN_TEST_0)を選択⇒設定(S)⇒シリアルポート⇒ポート1
シリアルポートを有効化にチェック。
ポートモードを ホストにパイプに、
存在するパイプ/ソケットに接続(C)のチェックを外す。
パス/アドレスに \\.\pipe\vbox
を入力(Teraterm で TELNETでホストに\\.\pipe\vbox 指定すれば接続できる)
~~↑シリアルポート設定終わり↑~~

★★★ Step.4 VMをカスタマイズする(ネットワーク編) ★★★

ネットワーク設定
アダプタ1 ブリッジアダプター LANカード名を選択。
(ふと思ったがここでホストにwifi dongleしかないとちょっとここの部分は作業記録として実践できない。この作業記録の前提としてVirtualboxのホストマシンが有線LANでルータのNATにつながっていること)

アダプタ2
ネットワークアダプタを有効化(E)にチェック
割り当て⇒内部ネットワーク
(未割当にしようとするとネットワークハングが記録され続けてうっとうしい。ループバックコネクタは無いのかと思った)

この辺でスナップショット取って起動

 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05.1, r48532)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/# ls
bin         init        mnt         rom         sys         var
dev         lib         overlay     root        tmp         www
etc         lost+found  proc        sbin        usr
root@OpenWrt:/# ping www.yahoo.co.jp
ping: bad address 'www.yahoo.co.jp'
root@OpenWrt:/# passwd
Changing password for root
New password:
Bad password: too weak
Retype password:
Password for root changed by root
root@OpenWrt:/#

この辺でスナップショット取って起動。
パスワードを設定。
yahoo.co.jpにPINGを打ってみるもそれいぜんに、DNSが引けてない。

ネットワークの設定をちゃんとやらないといけない。
デフォルトでは家庭内WifiルータのIPアドレスをスタッティックで名乗ってしまう。
VirtualBox Hostとのeth0の接続がNATであれば問題ないのだが、
ブリッジなのでまずい。大急ぎで家庭内WifiルータからIPを割り当ててもらうように設定。
本来であればどこにもつながってないネットワークで先に設定確認してから家庭内LANにつなぐべきであった。まあ、家庭内だからいっか。

root@OpenWrt:/etc/config# cat network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'wan'
        option ifname 'eth0'
        option proto 'dhcp'

config interface 'lan'
        option ifname 'eth1'
#        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.254.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan6'
        option ifname 'eth1'
        option proto 'dhcpv6'

config globals 'globals'
        option ula_prefix 'fd2a:82cf:1d52::/48'

yahooにPINGが通るようになる。

root@OpenWrt:/etc/config# ping yahoo.co.jp
PING yahoo.co.jp (■.□.△.○): 56 data bytes
64 bytes from ■.□.△.○: seq=0 ttl=52 time=86.698 ms
64 bytes from ■.□.△.○: seq=1 ttl=52 time=42.318 ms
64 bytes from ■.□.△.○: seq=2 ttl=52 time=87.604 ms
64 bytes from ■.□.△.○: seq=3 ttl=52 time=55.463 ms

ここで VirtualBoxの外につながってるブリッジ上のDHCPからゲストeth0に割り当てられた
 http://192.168.1.202/
にアクセスしてみると、接続できない(拒否される)
これはeth0がWANとして扱われているからfirewall にはじかれてるっぽい。
よく考えると当たり前か。
firewall の設定をするよりりはLAN側にも VirtualBox ホストが接続できるようにする方が正しい。

面倒なので eth1を内部ネットワークではなくホストオンリーネットワークに変更する。
VirtualBox環境設定⇒ネットワーク⇒ホストオンリーネットワーク(H)⇒+追加
ホストオンリーネットワークの詳細 IPアドレスを192.168.254.2に変更

ping 192.168.254.1が通るようになる。
192.168.254.1 からの応答: バイト数 =32 時間 =1ms TTL=64

リブート後
http://192.168.254.1/
へのアクセスも可能に。LUCIが出るようになった。



★★★ Step.5 OpenWRTにStrongSwanを入れてみる ★★★

L2TP/IPSec を実現するにはxl2tpd と strongswan のセットアップが必要っぽい。
ひとつずつやった方が良さそう。strongswan は L2TP/IPSec のうち IPSec 部分を
実現するソフトっぽく、L2TPに手を出す前に StrongSwan単体で行うIPSecというものがどういうモノ
なのか体験しておいた方が良さそう。

「OpenWRT StrongSwan」でググる
 関係のドキュメント漁る。
vpn.ipsec.basics まずはコレだけを押さえとくヤツっぽい
vpn.ipsec.roadwarrior こっちは設定のハナシなので↑先っぽい
strongswan.howto 必要パッケージがこっちの方が多い記述。情報ソースが新しいかどうかAndroidにも使えるハナシなのか。

vpn.ipsec.basicsをまず最初にやるべきのような気がする。

opkg update
...(略



opkg list | grep strongswan

なんかいっぱいあるなあ。



opkg install strongswan
...(略
/etc/rc.common: line 143: ipsec: not found

ぐぬぬ。
既知問題っぽい。
https://dev.openwrt.org/ticket/20336

root@OpenWrt:/# opkg remove strongswan
Removing package strongswan from root...
/etc/rc.common: line 143: ipsec: not found
You can force removal of packages with failed prerm scripts with the option:
        --force-remove
No packages removed.
Collected errors:
 * pkg_run_script: package "strongswan" prerm script returned status 127.
 * opkg_remove_pkg: not removing package "strongswan", prerm script failed

ぐぬぬ。
アンインストールはできない=インストールされているとも言い切れない微妙な状態。
このまま突き進んでさらに謎に遭遇しそうで怖い。
opkg install strongswan-default
root@OpenWrt:~# which ipsec
/usr/sbin/ipsec
root@OpenWrt:~#

なんか依存関係が変なのかな?
strongswan package require --> /usr/sbin/ipsec
but, strongswan does not have the command.
strongswan-default has the command.

strange dependency......

What, which should i install??????????????????????????


(後記:strongswan パッケージは無視して、strongswan-full をインストールすべし、strongswanパッケージは-fullを入れれば勝手に入る。入れないとコンフィギャ失敗する)

0 件のコメント:

コメントを投稿