[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netbsd,09697] [Q] 3 NICs and ipfilter/ipnat



5月16日の松江の宿を確保したぞと思ったら15日も何かあるらしいと驚いている
中治@鳥取です。

今まで、FreeBSDでOCNにPPPoEしてルータ兼ファイアウォールとしていたのです
が、そのPCが不安定でちょいちょいハングアップするようになったので、比較的
安定して動いているNetBSD/i386 4.0_STABLEに交替させることにしました。

このNetBSD/i386は、それまで自宅内のNAT boxとして利用していたものなのです
が、ネットワークインターフェースがなぜか3つあるのに2つしか使っていないの
はモッタイナイということで、

---fxp0(60.32.13.193)--NetBSD--ex0(192.168.1.1)---

だったものを

---fxp0(60.32.13.193)--NetBSD--ex0(192.168.1.1)---
                         |
                        re0
                      (PPPoE)

という構成にしました。re0をunnumberedにして、
http://www.jp.netbsd.org/ja/docs/network/pppoe/
の手順を真似て、re0をpppoe0に割り当ててOCNに接続できました。ただし、OCN
へのPPPoE接続では、pppoe0にネットワークアドレス(60.32.13.192)が割り当て
られるので、ifwatchdを併用して、/etc/ppp/ip-upを

#! /bin/sh
/sbin/ifconfig pppoe0 inet 60.32.13.193 $5 up
/sbin/route add default $5

としました。

$ ifconfig -a
re0: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
        capabilities=3f80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx>
        enabled=0
        address: 00:90:cc:74:51:ec
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet6 fe80::290:ccff:fe74:51ec%re0 prefixlen 64 scopeid 0x1
        atalk 65280.137 range 65280-65534 phase 2 broadcast 65280.137
fxp0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:05:0c:cf:82
        media: Ethernet autoselect (100baseTX full-duplex,flowcontrol,rxpause,txpause)
        status: active
        inet 60.32.13.193 netmask 0xfffffff8 broadcast 60.32.13.199
        inet6 fe80::230:5ff:fe0c:cf82%fxp0 prefixlen 64 scopeid 0x2
        inet6 2001:3e0:a84::2 prefixlen 64
ex0: flags=8b63<UP,BROADCAST,NOTRAILERS,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
        address: 00:10:4b:26:69:7b
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::210:4bff:fe26:697b%ex0 prefixlen 64 scopeid 0x3
        inet6 2001:3e0:a84:1::1 prefixlen 64
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        atalk 0.0 range 0-0 phase 2
pppoe0: flags=8951<UP,POINTOPOINT,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1438
        inet 60.32.13.193 -> 210.247.16.1 netmask 0xff000000
        inet6 fe80::290:ccff:fe74:51ec%pppoe0 ->  prefixlen 64 scopeid 0x5

さて、空の /etc/ipf.conf を用意して ipfilter を動かし、以前の
/etc/ipnat.conf を s/fxp0/pppoe0/ したもの↓

map pppoe0 192.168.1.1/24 -> 60.32.13.193/32 proxy port ftp ftp/tcp
map pppoe0 192.168.1.1/24 -> 60.32.13.193/32 portmap tcp/udp 1024:65535
map pppoe0 192.168.1.0/24 -> 60.32.13.193/32

で ipnat を動かすと、fxp0やex0のセグメントにあるPCからインターネットに接
続することはできるし、外部とのメールの送受信もできるのですが、少々不思議
なことがあります。

いくつかのウェブサイトが見られません。正確には、リクエストは届いているよ
うなのですが、返事が返ってこないところがあります。さらに厄介なことに、見
られるウェブサイトもあります。例えば、以下のような感じです。

OK:
http://www.14thmoon.org/~kenji/dainagoya/
http://www.ocn.ne.jp/
http://www.yahoo.co.jp/
http://www.fml.org/home/fukachan/ja/ipfilter.features.asnorouter.html
など

NG:
http://www.sun.com/
http://www.justmyshop.com/
http://www.opensolaris.org/
など

このような状況をどのように理解して対処するのが適当でしょうか?

つまり、

         インターネット
               |
             PPPoE
               |
           pppoe0(re0)
               |
(DMZ)--fxp0--NetBSD--ex0--(LAN)

という構成で、

o fxp0←→pppoe0でアドレス変換しない (DMZ)
o fxp0←→ex0、pppoe0←→ex0でアドレス変換する (NAT/LAN)
o pppoe0でファイアウォールにする

なんてことをしたいのです。

1台で無理にやるのはよくない、と言われるとその通りなのですが、そこを何と
かならないものかと…。
-- 
NAKAJI Hiroyuki (中治 弘行)
## From を間違えたので出し直し。