pf: マルチホームのための帰りパケットルーティング

あれ,route-to じゃダメだったのか。前は行けたような気がしなくもないが 気のせいかも。

こちらのページ,
NetBSDでマルチホーム」が参考になった。

ルータマシンでマルチホームをしている場合はインタフェースを 帰りに指定すればよいがうちの場合はこう。

      ISP-3           ISP-2
       |                |
 [ router1 ]            |
       |                |
   rl1 |  fxp0  fxp0    |pppoe0
 [ host-x ]---+----[ NetBSD router2 ]
    |rl0      |
    |         |re0
    |     [ NetBSD host-Y ]←このマシン
    |
    |
  ISP-1

ああ複雑。host Yのdefault routeは NetBSD router2 で,ISP-2に出て行く。 ネットワークインタフェースが少ない都合上裏口のISP-3は host-x に 繋がっていて,でも host-x の default route はさらに別のISP-1。

たとえばこの状態で,ISP-3の特定のポート(9522)に来たTCPを host-Y の SSHポートに延ばしたい。入り方向は普通に考えると router 1 のtcp/9522を host-Yの22にフォワードする,だが,それだとその帰りパケットをISP-3に 向けるための判別ができない。なので,host-Yのre0に aliasアドレスを付けておく。192.168.1.10 だとする。

xif="re0"
ura="192.168.1.10"
pass in quick on $xif reply-to ($xif host-x) proto tcp from any to $ura

さらに、host-x(FreeBSD)ではこう。

ipfw add fwd router1 tcp from 192.168.1.10 to any via rl0

もっとくわしい説明は2003/2/23を。