この文章は、やっぱり Debian GNU/Linux(unstable) をベースに書かれています。 RedHat など、他の distribution をお使いの方は、適切に読みかえるなり、 他の文書を当たるなりしてください。
いうまでもないですが、設定をするのは自己責任で。 特に Internet にグローバル接続をするわけですから、 他の人に迷惑をかけぬようお気をつけください。
natcracker とは Mobile Internet Services, Inc. の提供するトンネリングサービスです。 仮想トンネルを介して固定のグローバル IP をもらうことができます。
以下の設定を行う前に、契約が済んでおり、 また natcracker 側での設定 *1 が済んでいる必要があります。
natcracker はトンネリングを行うために、 VTun を利用しています。 そのため、事前に vtun が install されている必要があります。 VTun は debian package として 登録されている ので、
% apt-get install vtun
とするだけで、install することができます。
今回手元で利用した vtun は次のバージョンのものです。
% dpkg -l vtun Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii vtun 2.5-4 Virtual Tunnel over TCP/IP Networks
また、VTun は linux kernel の "Universal TUN/TAP device driver support(CONFIG_TUN)" という機能を 利用してトンネリングを行います。 この機能を kernel 組み込みもしくは module にしておきましょう。
VTun の設定は
の二つで行います。 *2
vtund.conf は natcracker 登録時に例として表示されたものを参考に、 何カ所か変更を加えるだけで、流用することができます。
options { port 5000; # コマンドのフルパスは環境により異なります ifconfig /sbin/ifconfig; route /sbin/route; } NC00**** { pass *************; up { ifconfig "%% 210.***.***.*** pointopoint 210.***.***.***"; # 現在の default route (192.168.0.***)を # natcracker のサーバへの route として設定します。 route "add -host 43.***.***.*** gw 192.168.0.***"; # natcracker との接続を default gateway として設定します。 route "add default gw 210.***.***.***"; }; down { route "delete default gw 210.***.***.***"; }; }
vtund-start.conf は /etc/init.d/vtund から起動する場合に利用します。 vtund-start.conf を適切に設定しておくと、 LinuxBox 起動時に VTun を起動させておくことができます。 内容はコマンドラインの引数と同じもの *5 を一行記述するだけです。
NC00**** 43.***.***.***
VTun は TUN device の interface として /dev/misc/net/tun を利用します。 *6 しかし、devfsd の設定では、/dev/misc/net/tun は存在しません。
そこで、devfsd の設定を少し変更します。 /etc/devfsd/conf.d/tun として次のファイルを設置して、devfsd を再起動します。
% cat /etc/devfs/conf.d/tun REGISTER ^net/tun$ COPY $devname misc/net/tun UNREGISTER ^net/tun$ CFUNCTION GLOBAL unlink misc/net/tun % /etc/init.d/devfsd restart
この設定をしておくと、tun module が読み込まれると同時に /dev/misc/net/tun を生成するようになります。 *7
% ls -l /dev/misc/net/tun ls: /dev/misc/net/tun: No such file or directory % modprobe tun % ls -l /dev/misc/net/tun crw-r----- 1 root root 10, 200 Dec 3 17:26 /dev/misc/net/tun
実際に natcracker に接続するには、
% /etc/init.d/vtund start Starting vtund client NC00**** to 43.***.***.***.
もしくは
% vtund NC00**** 43.***.***.***
とします。 接続された場合は TUN interface が生成されているはずなので、確認します。
% ifconfig tun0 tun0 Link encap:Point-to-Point Protocol inet addr:210.***.***.*** P-t-P:210.***.***.*** Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
また、routing table が変更されていることも確認します。
% route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 43.***.***.*** 192.168.0.*** 255.255.255.255 UGH 0 0 0 eth0 210.***.***.*** * 255.255.255.255 UH 0 0 0 tun0 localnet * 255.255.255.0 U 0 0 0 eth0 default 210.***.***.*** 0.0.0.0 UG 0 0 0 tun0
log は /var/log/daemon.log に出力されるので、 もし正しく動作しない場合はこれを確認するとよいでしょう。 また、動作確認をとりながら設定を変更する場合は、
% vtund -n NC00**** 43.***.***.***
とすると、出力が /var/log/daemon.log ではなく console になるので、 設定をいじるのに便利です。
ここでは、natcracker を利用して固定グローバル IP を得る方法を紹介しました。 しかし、この方法ではすべての packet が natcracker を介して配送されるため、 通信速度が遅くなりますし、また natcracker がサービス停止をした際には、 routing を変更しない限り通信を行うことができなくなってしまいます。
iproute2 と複数インターネット接続 では、 この routing に関する話を解決していますので、 気になる方は参考にしてください。
*1 私の場合、フォームから契約をした翌日の夕方には設定されたようです
*2 vtund-start.conf はおそらく Debian 独自のファイルでしょう。
*3 TUN interface は利用終了と同時に、自動的に削除されます
*4 これを変更しない場合、クライアントから接続を受けることができません。
*5 natcracker からもらった ID と、サーバの IP アドレスを指定します。
*6 他にも、/dev/tun0 〜 tun255 までを検索するようです。
*7 コピーではなく、symlink を使うとうまく動きません。なぜなんでしょうね。