FreeBSD 7.0 + ipfwで通信を正しく振り分ける

| コメント(0) | トラックバック(1)

うちのネットワーク構成は以前書いたようにこうなっているのですが

                        :OCN:192.168.11.1
      +-[VDSL]-+  [WZR2-G300N] +---[ML115(kawataso.net)]192.168.11.150
      |        |     |     |   | +-----------+--[TP X31]
[Internet]    [100M SW]   [GbE SW]-[NAS]     +--[TP X40]
                     |     |   | +-[TP X61]       |
      {kawataso.net}[BBR-4MG]  +--[VoIP Adpt]--[MP830]-[Tel]
                    :i-revo:192.168.11.2

ちょっと不便なことがあります。

OCNのルータのポート転送設定をして通信をML115に向けても、ML115のデフォルトGWはi-revoにつながったルータの192.168.11.2に向いているので、パケットの往路と復路が別のISPになってしまうのです。

IPのルーティングのことを考えたら当たり前のことなのですが、i-revo側は意図しない通信のパケットを破棄してしまうので結果的にOCNルータのポート転送をしてOCNルータでML115に対して通信を仕掛けてもパケットが帰ってこないので結果的に通信できないわけです。

これは不便なのでOCN側からきたパケットはちゃんとOCN側に返すように設定してみました。

 

ちなみにOSはFreeBSD/amd64 7.0-Release

まず普通のルーティングの設定ではこの問題はどうにもなりません。ルーティングはあくまで行き先までのルートを決定するもので、今回みたいにどっちのルータを通っても結局インターネット全域、どこと通信する可能性もあるので、ルーティングによって振り分けるというのは無理です。

なので今回はipfwを使ってOCN側(192.168.11.1)から来た通信の返信をちゃんとOCNに返すような設定をしてみました。

参考にしたのはここ。このページの例はFreeBSDマシンをルータにしていて、今回の場合はルータ2台につながったFreeBSDマシンだけど、基本は一緒。例でルータにしているFreeBSDNIC2枚差しだけど、IPレベルの処理なのでIPアドレスのaliasを設定することで同様の状態にすることができます。

ML115に普段通信用として192.168.11.150を振っていて、このアドレスでi-revo(192.168.11.2)と通信しているので、OCN用に192.168.11.151をalias設定。具体的には/etc/rc.confに

ifconfig_bge0_alias0="inet 192.168.11.151 netmask 255.255.255.255"

とか書く。

ipfwの機能はカーネルレベルで実現されていますが、FreeBSDのカーネルはある程度モジュール化されていて

kldload ipfw

とかやればipfwの機能は動的に組み込まれます。が、今回やりたいForward設定は更に追加機能の設定なのでカーネルの再構築をします。

カーネルのconfigファイル(今回はML115)に

options IPFIREWALL
options IPFIREWALL_FORWARD

とか書いて

> config ML115
> cd ../compile/ML115
> make cleandepend && make depend && make && make install && shutdown -r now

あたらしいカーネルをインストール。

/etc/rc.confにipfwを有効にする設定をする。

firewall_enable="YES"
firewall_type="/etc/ipfw.conf"

とか書く。/etc/ipfw.confが設定ファイルとして読み込まれるので

add fwd 192.168.11.1 ip from 192.168.11.151 to not 192.168.11.0/24
add allow ip from any to any

とか書いて保存。最後に

> /etc/netstart

これで設定まるごと反映させる。これで、OCN側からのセッションはちゃんとパケットをOCN側に返すようになった。

# 実際はOCN側の通信を受け入れるためのサーバは別にあったんだけど
# 統合した結果OCN側から通信できなくなったからそのためだけにipfwを導入したわけで。

トラックバック(1)

トラックバックURL: http://d.kawataso.net/mt/mt-tb.cgi/454

Post Saver - Website voting and saving system - Ipfw Bookmarks (2008年11月 7日 11:32)

Bookmarked your page with keywords ipfw! 続きを読む

コメントする

Taken

www.flickr.com
This is a Flickr badge showing public photos and videos from kawataso. Make your own badge here.
kawataso's items Go to kawataso's photostream

買っちまいなー!

このブログは...

DSC_3643

このブログは@kawatasoの写真、妄想、記録置き場になっていくかと思います。

それ以外の何かはここから / mail

@kawataso/Twitter

@kawataso/Twitter

    follow me on Twitter

    このブログ記事について

    このページは、かわたそが2008年7月10日 01:57に書いたブログ記事です。

    ひとつ前のブログ記事は「アキバの事件から1ヶ月がたちました」です。

    次のブログ記事は「僕が新しいWebサービスをあまり使わない理由」です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。