OpenVPN on Mac OS X Leopard その3

OpenVPNではSSLを用いて通信経路の暗号化とクライアントの認証を行うので、これに用いる暗号鍵を作らないといけない。
この辺は本家のHow-toやら日本語でもたくさんの記事があるので、日本語のサイトを一つだけあげておく。
OpenVPNで構築するリモートアクセス環境
注意しないといけないのは、MacPortsにおけるeasy-rsaのディレクトリの場所で、
/opt/local/share/doc/openvpn2/easy-rsa
になっている。これ以外は基本的には多くのドキュメントでl…

OpenVPNではSSLを用いて通信経路の暗号化とクライアントの認証を行うので、これに用いる暗号鍵を作らないといけない。

この辺は本家のHow-toやら日本語でもたくさんの記事があるので、日本語のサイトを一つだけあげておく。

OpenVPNで構築するリモートアクセス環境

注意しないといけないのは、MacPortsにおけるeasy-rsaのディレクトリの場所で、

/opt/local/share/doc/openvpn2/easy-rsa

になっている。これ以外は基本的には多くのドキュメントでlinuxではこうやりなさいと書いてある通りにCA認証局の鍵を作成し、サーバー証明書・クライアント証明書・DH鍵を作成すればいい。

途中、パスフレーズを聞かれるが、これはパスフレーズを入力すると、OpenVPNが起動時に鍵を読み込む時にパスフレーズを要求する様になるので、必ず何も入力しない様にする。後、当然プライベートでしか使わない鍵なので、ローカルCA認証局で署名しておくこと。これは、鍵の作製の最後で署名するか聞かれるのでyesと答えればいい。今回は面倒なのでサーバー側の名前をServer、クライアント側の名前をClientとしておいた。

分かりにくいのがドキュメントにある変数設定のvarsの読み込みで

. ./vars

とあるのだが、これは二つの.の間にスペースがあるので注意。本来は

source ./vars

と書けば間違いがないんだがな。

サーバー側に場所を決めてopenvpn2で使う鍵を置いておく。置いておくべき鍵は

Server.crt
Server.key
ca.crt
dh1024.pem

これらを

/opt/local/etc/openvpn2/keys

というディレクトリを掘って置いておいた。

逆にクライアント側には

Client.crt
Client.key
ca.crt
dh1024.pem

の鍵が必要になる。出来る限りフロッピーの様な物理的手段で運搬しよう。ネット経由だと盗聴されるともともこもない。

OpenVPN on Mac OS X Leopard その2

さて、OpenVPNの導入だが、面倒なのでここはMac OS
X用のPortageの一つであるMacPortsを使う事にする。 MacPorts
インストールや最初の最新版への更新等はHow
toやwikiを参照すること。 MacPorts WikiJP
最新に更新したら、portコマンドをつかってopenvpn2をインストールする。基本的には以下のコマンドで完了。
sudo port install openvpn2
ただし、今の環境ではHTTPはプロクシ経由でしか出れないので、コマンドに失敗…

さて、OpenVPNの導入だが、面倒なのでここはMac OS X用のPortageの一つであるMacPortsを使う事にする。

MacPorts

インストールや最初の最新版への更新等はHow toやwikiを参照すること。

MacPorts WikiJP

最新に更新したら、portコマンドをつかってopenvpn2をインストールする。基本的には以下のコマンドで完了。

sudo port install openvpn2

ただし、今の環境ではHTTPはプロクシ経由でしか出れないので、コマンドに失敗する場合はコマンドラインでプロクシの為の環境変数を強制的に指示してあげればいい。

sudo env http_proxy=http://xxx.xxx.xxx.xxx:8080 port install openvpn2

MacPortsにはopenvpnとopenvpn2の二つのパッケージが存在するが、現行の最新版はopenvpn2の方なので間違えない様に。

OpenVPN on Mac OS X Leopard その1

さて、OpenVPNでVPNを作るにはtunデバイスをつかってIP over
IPのトンネルを作るか、あるいはtapデバイスをつかってLayer
2 over IPのブリッジを作るかなのだが、残念な事にMac OS
Xにはtunデバイスもtapデバイスも存在しない。
しかし、ちゃ〜んと用意してくれる人はいるもので、 TUNTAP
Virtual network interfaces for Mac OS X
なるプロジェクトでtunデバイスとtapデバイスを追加するkernel
extensio…

さて、OpenVPNでVPNを作るにはtunデバイスをつかってIP over IPのトンネルを作るか、あるいはtapデバイスをつかってLayer 2 over IPのブリッジを作るかなのだが、残念な事にMac OS Xにはtunデバイスもtapデバイスも存在しない。

しかし、ちゃ〜んと用意してくれる人はいるもので、

TUNTAP Virtual network interfaces for Mac OS X

なるプロジェクトでtunデバイスとtapデバイスを追加するkernel extensionが開発されている。

ここから最新版のファイルを落としてくるとインストールパッケージになっているので、指示通りにインストールして再起動する。

/dev/tun0~15,/dev/tap0~15

が追加されてればtunデバイスとtapデバイスの準備は完了。

OpenVPN on Mac OS X Leopard

とある事情があって、またしてもOpenVPNでトンネルを作ることになってしまった。しかも今回はサーバーにMac
OS X Leopardを使うことに。サーバー側がMac OS X
ServerならVPNなんぞ簡単に作れるのだが、ServerじゃないバージョンのMac
OS
Xなのでちょいと面倒だったけど、さすがFreeBSDベースのOSだけあって、ツールのお膳立てはかなりそろっていてなんとか動かす事ができた。
というわけで、忘れないうちに備忘録として作業内容を記録しておく。

とある事情があって、またしてもOpenVPNでトンネルを作ることになってしまった。しかも今回はサーバーにMac OS X Leopardを使うことに。サーバー側がMac OS X ServerならVPNなんぞ簡単に作れるのだが、ServerじゃないバージョンのMac OS Xなのでちょいと面倒だったけど、さすがFreeBSDベースのOSだけあって、ツールのお膳立てはかなりそろっていてなんとか動かす事ができた。

というわけで、忘れないうちに備忘録として作業内容を記録しておく。

OpenVPN解消

某所に設置していたOpenVPNをつかった秘密のトンネルを、年末にとうとう解消した。
2年ちょっとの間、ほぼまったくトラブルを起こすことなくトンネルが稼動し続けたのは、ちょっと驚きだった。OpenVPN、侮りがたし。
サーバーのOSが古くなってちょっとセキュリティ的に怖くなってきたので、ほどよい頃合かとも思うけれど、もうちょっと運用して見たかった。
残された人たちの不便なネットワークライフを思うとちょっと心が痛むけれど、まあ、それも流しのネット管理者の宿命というしかないかな。

某所に設置していたOpenVPNをつかった秘密のトンネルを、年末にとうとう解消した。

2年ちょっとの間、ほぼまったくトラブルを起こすことなくトンネルが稼動し続けたのは、ちょっと驚きだった。OpenVPN、侮りがたし。

サーバーのOSが古くなってちょっとセキュリティ的に怖くなってきたので、ほどよい頃合かとも思うけれど、もうちょっと運用して見たかった。

残された人たちの不便なネットワークライフを思うとちょっと心が痛むけれど、まあ、それも流しのネット管理者の宿命というしかないかな。

www/apache22 update

FreeBSD-6.2のwww/apache22を2.2.6_2にアップデートしたらトラブル。
なぜか、WITH_PROXY_MODULES=”YES”がついてるのにProxy関連のモジュールがmakeされない。
しかたないので、www/apache22/Makefile.optionsのProxy関連のオプションをONに書き換えて急場をしのぐ。
たぶんportsのバグだな。

FreeBSD-6.2のwww/apache22を2.2.6_2にアップデートしたらトラブル。

なぜか、WITH_PROXY_MODULES=”YES”がついてるのにProxy関連のモジュールがmakeされない。

しかたないので、www/apache22/Makefile.optionsのProxy関連のオプションをONに書き換えて急場をしのぐ。

たぶんportsのバグだな。

openSUSE 10.3

openSUSE 10.3がリリースされたので、とりあえずThinkPad
X20のLinuxパーティションを消去して新規インストールしてみた。
一番大きく前進した点は、WiFiドライバーがWPA対応になったことだろう。これで、KNetworkManagerだけでWPA接続が必要なAPにも接続を管理できるようになった。
後は、Install
Repositoryの指定が、いちいちURLを指定しなくても一覧から選べるYaSTのインターフェースが導入されたことか。最初、それに気がつかなくって手動で書…

openSUSE 10.3がリリースされたので、とりあえずThinkPad X20のLinuxパーティションを消去して新規インストールしてみた。

一番大きく前進した点は、WiFiドライバーがWPA対応になったことだろう。これで、KNetworkManagerだけでWPA接続が必要なAPにも接続を管理できるようになった。

後は、Install Repositoryの指定が、いちいちURLを指定しなくても一覧から選べるYaSTのインターフェースが導入されたことか。最初、それに気がつかなくって手動で書いてしまったよ。

reStructuredText

reStructuredTextを使って、エントリーボディーに書き込んだURLを自動的にハイパーリンクを引かせようとして、最近のZopeではUnicodeDecodeErrorが出てしまうことに気付いた。:-P
/usr/local/www/Zope29/lib/pythonに以下のファイルを置く。
sitecustomize.py —内容始まり— import sys sys.setdefaultencoding(“utf-8”)
—内容終わり— これで、EntryにreSt…

reStructuredTextを使って、エントリーボディーに書き込んだURLを自動的にハイパーリンクを引かせようとして、最近のZopeではUnicodeDecodeErrorが出てしまうことに気付いた。:-P

/usr/local/www/Zope29/lib/pythonに以下のファイルを置く。

sitecustomize.py

—内容始まり—
import sys
sys.setdefaultencoding(“utf-8”)
—内容終わり—

これで、EntryにreStructuredTextを選択してもエラーが出なくなった。

サーバー再構築覚書 -X.org 7.2-

というわけで、インストール時にX.orgを入れなかったので、
/usr/ports/x11/xorg をインストールすれば、素直にX.org
7.2が導入される。 実は、X.org
7.2に変更時にXのインストールベースが/usr/X11R6から/usr/localに変更されたので、/usr/X11R6が/usr/localのシンボリックリンクになっている。
で、FreeBSDは起動時にローカルrc.dを探すパスに/usr/local/etc/rc.dだけでなく/usr/X11R6/etc/r…

というわけで、インストール時にX.orgを入れなかったので、

/usr/ports/x11/xorg

をインストールすれば、素直にX.org 7.2が導入される。

実は、X.org 7.2に変更時にXのインストールベースが/usr/X11R6から/usr/localに変更されたので、/usr/X11R6が/usr/localのシンボリックリンクになっている。

で、FreeBSDは起動時にローカルrc.dを探すパスに/usr/local/etc/rc.dだけでなく/usr/X11R6/etc/rc.dも含まれているので、/usr/local/etc/rc.dを二度呼び出そうとすることになる。

これを防ぐために、/etc/rc.confに以下の記述を加える。

local_startup=”/usr/local/etc/rc.d”

これで、一度しか呼び出さない様になる。

サーバー再構築覚書 -Zope-

COREBlog
1.2.3を使うためにZopeをインストールしないといけないのだけど、portsからzope-coreblogを入れるとpythonの古いバージョンである2.3を入れた上にさらにzopeも古いバージョンの2.7を入れようとしてセキュリティの問題があるからと拒否される。
というわけで、zope29を入れておいて、手作業でCOREBlogを導入する。
zope29をportinstallで導入後、/usr/ports/www/zope29でmake
instanceでinstanc…

COREBlog 1.2.3を使うためにZopeをインストールしないといけないのだけど、portsからzope-coreblogを入れるとpythonの古いバージョンである2.3を入れた上にさらにzopeも古いバージョンの2.7を入れようとしてセキュリティの問題があるからと拒否される。

というわけで、zope29を入れておいて、手作業でCOREBlogを導入する。

zope29をportinstallで導入後、/usr/ports/www/zope29でmake instanceでinstanceと初期ユーザーを作成する。この時、errorが出るが、これはReadmeを表示しようとして失敗してるだけなので、無視する。

zope29は標準ではiso-8859-5のcharsetを勝手につけてくれやがるので、/usr/local/www/Zope29/etc/zope.conf(zope.conf.sampleからコピー)に

default-zpublisher-encoding utf-8

を追加して、utf-8で出力する様にしてあげる。

後は、http://takanory.net/に沿ってzopeの設定をしてあげる。で、ProductsにCOREBlogとejSplitterを展開してzopeを再起動してあげた後、exportしておいたブログをImportしてあげればいい。この時、Importする内容のownershipを保持する様にしてあげること。