あれ,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を。