順調に始まったかに見えた自宅サーバの構築なのですが、ある目論見(そのうちネタに
しますしました!)のためにXウィンドウを追加しようとしたところ…。
ぜんぜんやり方が分かりません。(涙)非力なマシンなので
icewmを使おうかと思い導入してみましたがXが入っていないと怒られ、色々関係ありそうなものを入れてみたらとりあえずX自体は上がるようになったのですが、フォントはめちゃくちゃだしウィンドウマネージャはきちんと上がらないしで全く使い物になりませんでした。
仕方なく1から再インストール。今度は
GNOME含め必要そうなものはみんな導入してしまいました。GNOMEは重くて辛いのですがウィンドウマネージャの変更はもう少し理解度が上がってからですね。
やはり
linuxは難しい…。
(分かっている人が見たら笑っちゃうような事なんでしょうが)
比較的たくさんのものを入れてしまったので、起動するサービスが山のようになってしまいました。何が必須で何が上げとくとやばいのか今ひとつよく分からないのですが、
こちらなどを参考に起動するサービスを以下のとおりにしました。
apmd
autofs
crond
iptables
keytable
network
random
sshd
syslog
xfs
もう少し新しいPCを使う場合は
acipdと
cpufreqdも動かしたいところです。
で、
昨日記事にした手順を行ったあと、いよいよ
OpenVPNの導入を行います。参考にさせていただいたサイトはこちらです。
LinuxまたはFreeBSDでVPNを構築するための手順書 OpenVPN編http://www.artin.nu/server/vpn_openvpn.html導入手順は驚くほど簡単で、現在(2006/01/31)の最新版である2.0.5であれば以下のとおりです。(
OpenVPNと、圧縮に使うLZOライブラリの2つを導入しています)
cd /tmp
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
tar zxvf lzo-2.02.tar.gz
cd lzo-2.02
./configure
make
make install
cd ..
wget http://openvpn.net/release/openvpn-2.0.5.tar.gz
tar zxvf openvpn-2.0.5.tar.gz
cd openvpn-2.0.5
./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
make
make install
これ、手順自体は簡単なのですが、上記サイトに出会うまではLZO圧縮がどうやっても有効に出来ませんでした。ヘッダとライブラリの場所をオプション指定してやらないといけないとは…。ちなみにLZO圧縮を使わない場合は"
--disable-lzo"オプションをつけてコンパイルすればOKです。
ここから接続のための設定です。
まずは最も簡単な
『事前共有鍵での1対1接続』に挑戦します。
(個人で使うならこれで十分だったりするんですが)
想定している環境は以下のとおりです。
自宅セグメント :192.168.201/24
VPNセグメント :192.168.200/24
自宅ルータ :192.168.201.1
VPNサーバ(VPN側) :192.168.200.1
クライアント(VPN側):192.168.200.2
参考にさせていただいたのはこちら。
OpenVPN - 彼の野原http://kano.feena.jp/?OpenVPNまずは事前共有鍵を作成します。この鍵が認証のキモになるので、root以外でのアクセス権も剥奪します。
openvpn --genkey --secret /usr/local/etc/openvpn.key
chmod 600 /usr/local/etc/openvpn.key
次にサーバ側の設定ファイル(
/usr/local/etc/openvpn.conf)を作成します。内容はこちら。
proto udp
port 1194
dev tap
secret /usr/local/etc/openvpn.key
ifconfig 192.168.200.1 255.255.255.0
comp-lzo
あ、ポート番号を変えている方はそちらに設定あわせてくださいね。
でもって起動します。
openvpn --config /usr/local/etc/openvpn.conf
こんな感じに標準出力が出ればOKです。
Tue Jan 31 17:13:59 2006 OpenVPN 2.0.5 i686-pc-linux [SSL] [LZO] built on Jan 31 2006
Tue Jan 31 17:13:59 2006 LZO compression initialized
Tue Jan 31 17:13:59 2006 TUN/TAP device tap0 opened
Tue Jan 31 17:13:59 2006 /sbin/ifconfig tap0 192.168.200.1 netmask 255.255.255.0 mtu 1500 broadcast 192.168.200.255
Tue Jan 31 17:13:59 2006 UDPv4 link local (bound): [undef]:1194
Tue Jan 31 17:13:59 2006 UDPv4 link remote: [undef]
続いてクライアント側の設定。私はWindowsを使っているので先ほどの
OpenVPNのサイトからWindows用のインストールイメージを入手します。導入はダブルクリックすればおしまいなのでいたって簡単。
終わったらサーバ側で作成した事前共有鍵をコピーします。これは
ftpでもいいですし、サーバ側で鍵を
catした内容をコピーペーストでも構いません(私は簡単なので後者で行っています)。保存先は(デフォルトのままなら)"
C:\Program Files\OpenVPN\config\openvpn.key"としてください。
クライアント側でも設定ファイルを作成します。
remote xxxxx.mydns.jp
port 1194
dev tap
secret openvpn.key
ifconfig 192.168.200.2 255.255.255.0
route 192.168.201.0 255.255.255.0 192.168.200.1
comp-lzo
これを"
C:\Program Files\OpenVPN\config\openvpn.conf"として保存します。
いよいよ接続です。
エクスプローラで作成した設定ファイルを右クリックし、"
Start OpenVPN on this config fileを選択します。するとコマンドプロンプト風のウィンドウが開き、以下のような表示が出れば接続完了です。
Tue Jan 31 17:25:54 2006 OpenVPN 2.0.5 Win32-MinGW [SSL] [LZO] built on Nov 2 2005
Tue Jan 31 17:25:54 2006 LZO compression initialized
Tue Jan 31 17:25:54 2006 TAP-WIN32 device [VPN接続] opened: \\.\Global\{85277B82
-BEAC-4A85-BF6C-B97C9CBE4912}.tap
Tue Jan 31 17:25:54 2006 Notified TAP-Win32 driver to set a DHCP IP/netmask of 192.168.200.2/255.255.255.0 on interface {85277B82-BEAC-4A85-BF6C-B97C9CBE4912} [DHCP-serv: 192.168.200.0, lease-time: 31536000]
Tue Jan 31 17:25:54 2006 Successful ARP Flush on interface [3] {85277B82-BEAC-4A
85-BF6C-B97C9CBE4912}
Tue Jan 31 17:25:54 2006 UDPv4 link local (bound): [undef]:1194
Tue Jan 31 17:25:54 2006 UDPv4 link remote: xxx.xxx.xxx.xxx:1194
Tue Jan 31 17:25:59 2006 Peer Connection Initiated with xxx.xxx.xxx.xxx:1194
Tue Jan 31 17:26:00 2006 Initialization Sequence Completed
ちなみに最後の2行は出るまでちょっと時間かかります。そしてこの2行が出ないときちんと接続が確立されていないのでご注意ください。
サーバ側でも以下のメッセージが標準出力に出てきます。
Tue Jan 31 17:14:15 2006 Peer Connection Initiated with xxx.xxx.xxx.xxx:1194
Tue Jan 31 17:14:15 2006 Initialization Sequence Completed
確認のために、サーバおよびクライアントからお互いにpingを打ってみましょう。
とりあえずこれで自宅との接続に成功しました。ただこのままだとサーバとクライアントが直結しただけなので、自宅の資源を使うためにはルーティングを設定する必要があります。
…で、そのやり方が分からない、と。(汗)
というか
OpenVPNレベルでは問題ないのは確認出来ているのですが、
iptablesの設定が今ひとつ分かりません。
FORWARDチェーンを全て
ACCEPTにすればきちんとルーティングされるのですが、何かそれもどうかという気がしますし…。
tap0だけ
ACCEPTにすればOKなのかと思ったら違うんですね。もう少し勉強してみます。
−追記:2/10−FORWARDチェーンを全て
ACCEPTにしてもどうにもだめですね。ただ全く行かないわけでなく、あるIPはOKで別のIPはだめというわけ分からない状態です。(どちらのIPも同じセグメント内にいます)
根本的に
TCP/IPの勉強が必要ですね…やでやで。
−さらに追記:2/21−FORWARDチェーンを全て
ACCEPTでどうやら問題ないようです。うまくいかないのは通信相手の問題みたいです。