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