ix2015でIPSecを対向にトンネルモードで張るときの基本コンフィグ

ix2015でIPSecを対向にトンネルモードで張るときの基本コンフィグ。
トンネルが増えてくると名前付けの規則、ルーチン化されたコンフィグの流しが絶対必要なのでその例として。
この例ではスター型のトンネルを想定。フルメッシュとか所々でよそよそがつなぐ時にはそれぞれのセグメントの名称を二つ含める必要がある。(第三オクテットの小さい順に名前を並べるとか)

事前条件は下記の通り。該当する名称を置換して利用。

今回の状況は固定IPの待ち受け(?)側でありIPアドレスはxxx.xxx.xxx.xxx、動的IPのコネクションを張りに行く側を想定。
それぞれのIXルータはL3で橋渡しをしてやり、それをOSPFに乗せて情報交換する。
待ち受け側のネットワーク名称はsegment1、張りに行く側のネットワーク名称はsegment2、
segment1は192.168.11.0/24、segment2は192.168.22.0/24とする。
segment1のIXルータは192.168.11.1/24、segment2のIXルータは192.168.22.2/24とする。
待ち受け側のトンネルインタフェースはTunnel0.0、張りに行く側のトンネルインターフェースもTunnel0.0
カギ交換はIKEの事前共有鍵。IKEのセションIDはsegment2-vpnカギ自体は文字列”secret”。

それぞれのIXルータのFastEthernet1/0.0がLAN側への出入り口。
OSPFのrouter-idはLAN側でのIXルータに割り振られたIPアドレスとする。

 ike proposal ike-prop1 encryption 3des hash sha lifetime 3600

ike policy ike-segment2 peer any key secret mode aggressive ike-prop1
 ike commit-bit ike-segment2
 ike keepalive ike-segment2 10 3
 ike remote-id ike-segment2 keyid segment2-vpn

ipsec autokey-proposal ipsec-prop1 esp-3des esp-sha lifetime time 3600

ipsec dynamic-map ipsec-segment2 sec-list ipsec-prop1 ike ike-segment2
 ipsec commit-bit ipsec-segment2
 ipsec local-id ipsec-segment2 192.168.11.0/24
 ipsec remote-id ipsec-segment 192.168.22.0/24

ip router ospf 1
 router-id 192.168.11.1
 area 0
 network Tunnel0.0 area 0

watch-group host 10
 event 22 ip unreach-host 192.168.22.1 Tunnel0.0 source FastEthernet1/0.0

interface Tunnel0.0
 description segment1-segment2
 tunnel mode ipsec
 ip unnumbered FastEthernet1/0.0
 ip tcp adjust-mss auto
 ipsec policy tunnel ipsec-segment2 out
 no shutdown
 

張りに行く側segment2

 ike proposal ike-prop1 encryption 3des hash sha lifetime 3600

 

ike policy ike-segment1 peer xxx.xxx.xxx.xxx key secret mode aggressive ike-prop1
 ike keepalive ike-segment1 30 6
 ike local-id ike-segment1 keyid segment2-vpn

ipsec autokey-proposal ipsec-prop1 esp-3des esp-sha lifetime time 3600

ipsec autokey-map ipsec-segment1 sec-list peer xxx.xxx.xxx.xxx ipsec-prop1
 ipsec local-id ipsec-segment1 192.168.22.0/24
 ipsec remote-id ipsec-segment1 192.168.11.0/24

ip router ospf 1
 router-id 192.168.22.2
 passive-interface FastEthernet1/0.0
 area 0
 network Tunnel0.0 area 0
 network FastEthernet1/0.0 area 0

interface Tunnel0.0
 description segment1-segment2
 tunnel mode ipsec
 ip unnumbered FastEthernet1/0.0
 ip mtu 1382
 ip tcp adjust-mss auto
 ipsec policy tunnel ipsec-segment1 out
 no shutdown
 

FreeBSD8.2でmumbleサーバを利用しようとしたらエラーで怒られた

FreeBSD8.2でmumbleサーバを利用しようとしたらエラーで怒られた。

 shell> sudo /usr/local/etc/rc.d/murmur start
 Starting murmur.
 2011-07-26 22:01:50.741 Initializing settings from /usr/local/etc/murmur.ini (basepath /usr/local/etc)
 2011-07-26 22:01:50.799 Binding to address 0.0.0.0
 2011-07-26 22:01:50.815 OpenSSL: OpenSSL 0.9.8q 2 Dec 2010
 2011-07-26 22:01:50.880 SSL: Adding recommended CA UTN-USERFirst-Client Authentication and Email
 2011-07-26 22:01:50.943 ServerDB: Database driver QMYSQL not available
 

configの中でMySQLをユーザとかのデータベースとして利用するような設定になってた。

ここでエラーメッセージにある、”QMYSQL”が見つかりませんよ、とのことだったけど、そんなパッケージは見つからず困り果てた。

しばらくこのまま放置しておいたんだけれども、再度必要に迫られてもう一度いろいろとググってみた。

するとQMYSQLっていうのはqtのプラグインだ、ってことが判明。portsでの名前は

 databases/qt4-mysql-plugin A plugin for QT to connect to MySQL-Databases
 

ということらしい。早速これを入れて動作させてみる。

shell> sudo portinstall -c databases/qt4-mysql-plugin

... 中略 ...

shell> sudo /usr/local/etc/rc.d/murmur start
Starting murmur.
<W>2011-08-09 13:49:52.382 Initializing settings from /usr/local/etc/murmur.ini (basepath /usr/local/etc)
<W>2011-08-09 13:49:52.382 Binding to address 0.0.0.0
<W>2011-08-09 13:49:52.382 OpenSSL: OpenSSL 0.9.8q 2 Dec 2010
<W>2011-08-09 13:49:52.388 SSL: Adding recommended CA UTN-USERFirst-Client Authentication and Email
<F>2011-08-09 13:49:52.405 SQL Prepare Error [CREATE TABLE IF NOT EXISTS `murmur_meta`(`keystring` varchar(255) PRIMARY KEY, `value` varchar(255)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin]: No database selected QMYSQL3: Unable to prepare statement

今度は別のエラーで怒られてしまった。どうやらデータベースの選択がされてないらしい。

デフォルトでくっついてきたコンフィグを見てもそれらしき項目は見当たらない。

そもそもこのバージョンのmurmurをlinux (ubuntu)で利用したときにはユーザ名=DB名となっていた。そのまま移行というか併用するつもりだったのでこの辺の設定はlinuxのmurmurdと同じものにしていたのだがどうやらFreeBSD版のmurmurdは設定をしてくれないらしい。

さっくりググってみると公式フォーラム? IRC?で質問をしている人がいるがそれらしき答えにはたどり着けない。

と思ったら日本人の方で答えを持っている人を発見。

最後の行に、データベース名入れるのがコツです。コメントアウトしてあるやつだけ設定すればMySQLで使えるのかと思いきや、普通に database キー の設定も必要だという罠です。

このdatabase キー、デフォルトはNULL値で初期化されているので、このキーの値設定しないと絶対にデータベースに繋がりません。database キー設定しないで起動すると。「No database selected QMYSQL3: Unable to prepare statement」ってエラー出てアボーン。しかも、この説明は公式サイトにまったく書かれていないという鬼仕様。
mumble mumble – 死者のページ

この設定を記述して再度試す。

# If you wish to use something other than SQLite, you'll need to set the name
# of the database above, and also uncomment the below.
# Sticking with SQLite is strongly recommended, as it's the most well tested
# and by far the fastest solution.
#
dbDriver=QMYSQL
dbUsername=mumbleuser
dbPassword=password
dbHost=db.l2tp.org
dbPort=3306
dbPrefix=murmur_
database=mumbleuser
dbOpts=

ココまで書いて、以前このdatabaseっていう値は書き込んだ気がしてきた・・・。

で、ちゃんといけた!!!

Magic Packetはルータを越えるか

インターネット越しのWake On LanのMagic Packetについて、Magic Packetはルータを越えるかどうかについて、ちょっと疑問をもってみた。

そもそもMagic Packetとは、Wake On Lan(WOL)のために送出されるパケットであり、特定の中身をして対象のホストを起動させる。でもこれパケットって言ってるけど実際はフレームな気がするんだよね。
ただし今回の問題では、このMagic Packetをルータ越しに到達させようっていうんだから立派なちゃんとしたパケットであることは間違いなかったり。

で、Magic PacketはデフォルトではUDPの2304を利用する。なのでルータでコレをフォワードしてやる。
ここで問題となるのがルータにおけるARPテーブルの削除の問題。

これはたとえば送信先のIP’アドレス、起動させたいホストAのIPアドレスが192.168.1.1だった場合、ルータとホストAの通信は
送信元MAC: ルータのMAC、 送信先MAC: ホストAのMAC
送信元IP: ルータのIP、 送信先IP: ホストAのIP
となるようなフレームが送出される。またこのフレームの送出に先立ってARPによりホストAのMACアドレスが解決されている。
このときホストAがダウンしているとホストAのMACアドレスの解決ができないらしい。なるほど
なのでアドレス変換を行う際に、

ルータの受けUDP 2403 -> 192.168.1.255:2403
とやってやるといいみたい。なるほどね!