表紙 / 自作ソフト / 日記 / 宝箱 / サイト情報 / 検索
一般 / 新C言語 / 駄文
一覧 / 本文

FreeBSD 4.x でインターリンクのマイIPを使うためのメモ

Last update: 2006/04/12

(c)2004,2006 seclan. All rights reserved.
Homepage: http://seclan.dll.jp/
E-mail: seclan[ここはアトマークに置き換えてください]dll.jp


はじめに

 Interlink では VPN を使って固定 IP アドレスを提供するマイIPというサービスを提供しています。この文章ではこのサービスを FreeBSD 4.x で使用するための設定をメモしています。

環境の仮定

 設定を次のような環境で行うものとします。

Interlink から渡される情報
種別具体例
ログインID${ILLoginID}miip1234
パスワード${ILPassword}mippass1234
マイ IP サーバアドレス${ILMyIpServ}203.141.128.100
割当て IP アドレス${ILMyIPFixedAddr}61.206.115.254
対向 GW IP アドレス
(*一般的に割当て IP アドレスの一番下が 1)
${ILMyIPFixedGW}61.206.115.1
設定するサーバの情報
種別具体例
外向きインターフェース${OIF}ed1
外向き IP アドレス${OIP}223.223.223.223
トンネリングデバイスとして割り当てたい番号(tun?/ng?)${UNO}2

準備

  1. ipfw を有効にし (IPFIREWALL_FORWARD も使えるようにします)、適切に設定しておきます。
  2. pptpclient を使いたい場合には tun デバイスを、mpd を使いたい場合には ng デバイスを利用可能にしておきます。カーネルにスタティックリンクしなくても、カーネルモジュール (*.ko) があれば、必要になれば自動的に読み込まれ有効化されるようです。
  3. マイ IP サービスでは GRE を使用しているのでそれを通過できるようにします。そのために ipfw のなるべく早い段階で、こちらの IP アドレス ${OIP} と Interlink 側のサーバ ${ILMyIPServ} で GRE を通過できるよう、穴を開けます。
    • ipfw add 10 allow gre from ${OIP} to ${ILMyIpServ} out xmit ${OIF}
    • ipfw add 10 allow gre from ${ILMyIpServ} to ${OIP} in recv ${OIF}
  4. このままだと、パケットは tun/ng デバイスから入ってきますが、パケットが戻る場合、デフォルトルート、つまり ${OIF} からそのまま tun/ng デバイスを経由せずに出て行ってしまいます。これはいわば、裏口から入ってきたパケットが、表口から出て行ってしまうようなものです。このような通信(出て行くパケットと戻ってくるパケットのルートが異なる)を拒絶するサーバもあるので、裏口から入ってきたパケットは、裏口から出て行くよう設定します。

    これを route コマンドで設定できれば楽なのですが、できないので ipfw で無理やり実現します。具体的にはこちらの固定アドレス ${ILMyIPFixedAddr} を始点に持つパケットは ${ILMyIPFixedGW} から出て行ってもらうようにします。設定箇所としては icmp/tcp/udp パケットを setup する場所の前くらいがよいのではないでしょうか。

    • ipfw add 10000 fwd ${ILMyIPFixedGW} ip from ${ILMyIPFixedAddr} to any (内向きアドレスがない場合)
    • ipfw add 10000 fwd ${ILMyIPFixedGW} ip from ${ILMyIPFixedAddr} to not 192.168.0.0/24 (192.168.0.0/24 などの内向きがある場合)
  5. nat を使っている場合は、場合によってはそこをスキップさせる必要があるでしょう。

設定

 FreeBSD で使える pptp クライアントには pptpclient や mpd 等があります。pptpclient はユーザモードでパケット転送を行うので、それをカーネルモードで行う mpd よりは転送速度が遅くなります。設定は pptpclient の方が少し簡単です。どちらも ports でインストールできます。また使用するトンネリングデバイスは pptpclient は tun?、mpd は ng? になります。

pptpclient

 Interlink の設定例にあるように /etc/ppp/ppp.conf に設定を追加します。設定ファイル名の変更はできません。必ず /etc/ppp/ppp.conf に設定を追加します。

/etc/ppp/ppp.conf
MyIP:
 set authname ${ILLoginID}
 set authkey ${ILPassword}
 set timeout 0
 set ifaddr 0 0
 add ${ILMyIPFixedAddr}/32 HISADDR
 alias enable yes

 あとは、pptpclient を起動するだけです。Interlink の設定例では、/etc/defaults/rc.conf に設定を行っていますが、その必要はありません。ちなみに /etc/defaults/rc.conf は修正してはいけないファイルです。修正したい場合には、その部分を /etc/rc.conf にコピーして修正します。

pptpclient の実行
/usr/local/sbin/pptp ${ILMyIpServ} -unit${UNO} MyIP

mpd

 mpd 3.18 では、そのままでは正しく動作しません。パッチを作ったので、src/ ディレクトリでこのパッチをあててください。

 また mpd 3.18 では stdin が閉じられるとログが stdout に出力されなくなります。stdin が閉じられてもログをそのまま出力させるようにするにはこのパッチをあててください。

 コンパイル/リンクしてインストールします。

 標準の設定ファイルディレクトリ /usr/local/etc/mpd/、または任意のディレクトリに設定ファイル書きます。mpd.secret は root の所有でパーミッション 400 にしないと危険です。

mpd.conf
default:
        load MyIP

MyIP:
        new -i ng${UNO} MyIp MyIp
        set bundle authname ${ILLoginID}
        set bundle disable multilink

#       set iface mtu 1500
        set iface idle 0
        set iface disable on-demand

        set ipcp yes vjcomp

        set link mtu 1400
        set link mru 1400
        set link keep-alive 10 75
        set link no pap
        set link yes chap
        set link yes acfcomp protocomp
        open
mpd.links
MyIP:
        set link type pptp
        set pptp peer ${ILMyIpServ}
        set pptp enable originate incoming outcall
mpd.secret
${ILLoginID}	${ILPassword}

 mpd を実行します。標準の設定ファイルディレクトリ以外を使っている場合には、オプションでそのディレクトリを指定します。

標準の設定ファイルディレクトリ
/usr/local/sbin/mpd
ディレクトリ指定
/usr/local/sbin/mpd -d ディレクトリ

Q&A

  • mpd で時々ログに、"[MyIP] LCP: no reply to 1 echo request(s)" が出力されています。
     mpd では、設定によっては特定の間隔(set link keep-alive での設定)で対向のサーバと、自動的に gre/pptp? レベルで echo のやり取りを行っています。 それが失敗すると(パケットを取りこぼすと)そのようなエラーが出ると思われます。 不規則に出力されているようなら基本的には無視して問題ないでしょう。

雑感

  • テストアカウントを使って、転送速度などを自分で実際に確かめてみるのが一番かと思います。
  • テストアカウントは、本契約時に使用される環境と同一であると思われます (つまり、本契約で使用されているいくつかの固定 IP アドレスがおためし用として貸し出されている)。
  • ネットにある数少ない使用記では「よく切断される」、「負荷がかかると切れやすい」、とあります。当方ではヘビーに使っているわけではないからか、今のところそういうことはありません。
  • 自宅サーバにこだわらなければ、アメリカで固定 IP アドレスつきの VPS / VDS が安くなってきているので、そちらを検討するというのも一つの手だと思います。

表紙 - 著作権 - 注意事項 - リンクについて - 404 エラーについて
(c)2004,2006 seclan. All rights reserved.