OpenVPN on Mac OS X Leopard その5

さて、次は自動的にMac OS
X起動時にOpenVPNが起動される様に設定する。
本当はMacPortsのお作法的にはdaemondoにdaemonとして起動してもらう様な設定を書くのが正しいのだと思うが、どうにもdaemondoに関するドキュメントが見当たらないので、OS
Xのlaunchdを使って自動的に起動してもらうことにした。止めるときの事はあんまり考えない様にする。
これには、以下のファイルを用意する。
/Library/LaunchDaemons/org.macports.open…

さて、次は自動的にMac OS X起動時にOpenVPNが起動される様に設定する。

本当はMacPortsのお作法的にはdaemondoにdaemonとして起動してもらう様な設定を書くのが正しいのだと思うが、どうにもdaemondoに関するドキュメントが見当たらないので、OS Xのlaunchdを使って自動的に起動してもらうことにした。止めるときの事はあんまり考えない様にする。

これには、以下のファイルを用意する。

/Library/LaunchDaemons/org.macports.openvpn2


<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.macports.openvpn2</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/sbin/openvpn2</string>
<string>/opt/local/etc/openvpn2/server.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

後は、以下のコマンドで有効にする。

sudo launchctl load -w /Library/LaunchDaemons/org.macports.openvpn2

これで起動してるはず。

ps -ax | grep openvpn2
ifconfig -a

でプロセスが起動しているか、tunデバイスが設定されているかを確認しよう。これが動いていれば再起動しても自動的に起動する様になってるはず。

逆に止めたければ、先ほどのlaunchctlのコマンドでloadをunloadにすればいい。

OpenVPN on Mac OS X Leopard その4

設定ファイルは人それぞれだと思うが、とりあえず今回使った設定をのせておく。
/opt/local/etc/openvpn2/server.conf — port 1194 proto udp dev tun0 ca
/opt/local/etc/openvpn2/keys/ca.crt cert /opt/local/etc/openvpn2/keys/Server.crt
key /opt/local/etc/openvpn2/keys/Server.key dh /opt/local/…

設定ファイルは人それぞれだと思うが、とりあえず今回使った設定をのせておく。

/opt/local/etc/openvpn2/server.conf


port 1194
proto udp
dev tun0
ca /opt/local/etc/openvpn2/keys/ca.crt
cert /opt/local/etc/openvpn2/keys/Server.crt
key /opt/local/etc/openvpn2/keys/Server.key
dh /opt/local/etc/openvpn2/keys/dh1024.pem
server 192.168.50.0 255.255.255.0
push “redirect-gateway def1”
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /opt/local/etc/openvpn2/openvpn-status.log
verb 3

ミソはpushディレクティブで、これによりクライアントが接続後、自動的にOpenVPNを通して全ての通信を送る様にルーティング設定される。

さて、ここまで出来たら、一度

/opt/local/sbin/openvpn2 /opt/local/etc/openvpn2/server.conf

とやってちゃんと起動するかを確かめよう。

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を選択してもエラーが出なくなった。