Song <Song.bbs@bbs.cynix.com.tw> wrote in message
news:3cYTWH$6vu@bbs.cynix.com.tw...
> ※ 引述《kenduest (小州)》之銘言:
> >   那您的問題應該是很單純....
> >   主要就是您 Linux 安裝兩張網路卡,一個對內,一個對外。對外就是
> >   使用真實的 ip,對內就是接 private network 部份,使用 private ip。
> >   簡單就是說:
> >                     ADSL Router
> >                        |
> >                        |
> >                      -----
> >                      |HUB|-------------- DMZ  (Real IP)
> >                      -----
> >                        |
> >                        |
> >               ---------------------
> >               |  Linux NAT Router |
> >               ---------------------
> >                        |
> >                        |
> >               ----------------------
> >               |    |   |   |   |   |
> >              IP1  IP2 IP3 IP4 IP5 IP6
> >                  (Private IP)
> >   若是您要把 DMZ 搬移到 Linux NAT Router 裡面的話,可能 Linux NAT
> >   該主機要插三張網路卡,一個對外,一個對 Private IP 區域,一個接
> >   DMZ 區域較佳。不過您需要使用 ARP Proxy 機制,好讓於外面可以存取
> >   DMZ 內的電腦,這個部份,參考先前 Song 兄的文章。
>
>     如果您可以修改專線 Router 的 Routing Table 的話,可以使用切割子網
>     來作 小州兄 提示的第二種方式:
>
>                 |
>            +----+----+
>            |  Router |
>            +----+----+
>                 |eth0
>         +-------+-------+eth1     +-----+
>         | Linux Router  +---------+ Hub |
>         +-------+-------+         +--+--+
>                 |eth2                |
>              +--+--+              +--+--+
>              | Hub |              | DMZ |
>              +--+--+
>                 |
>         +-------+-------+
>         | Private Area  |
>
>     假設     取得的 IP 是 10.0.0.0/26 (0~63)
>           Router 的 IP 是 10.0.0.62
>                           ^^^^^^^^^
>     將 10.0.0.0/26 切割成 10.0.0.0/27  (0~31),10.0.0.32/27 (32~63)
>
>     因為 Router's IP 屬於後段因此將 10.0.0.32/27 給 eth0 所接之 network
>     所以您的 eth0 就可以設成 10.0.0.33/27
>
>     eth1 及 DMZ 中之主機均使用 10.0.0.0/27 範圍內之 IP。例如 eth1 就可以
>     設成 10.0.0.30/27。DMZ 中之主機的 gateway 均指向 eth1(Linux Router)。
>
>     然後設定 Router 及 Linux Router 的 Routing Table
>     Router 將 netmask 改為 /27,增加 10.0.0.0/27 gateway 10.0.0.33
>     Linux Router 設定三個接鄰的 network,及 default gateway 指向 Router。
>
>     請按照您實際的 network 切割。
>
>     ================
>     所以在 Linux Router 對 Private Area 要有 ip_masq 的設定,
>     而對 DMZ 不用。
>
>     至於 Private Area 與 DMZ 之間,到底 ip_masq 對 Private Area 的設定
>     有沒有生效?就是說 Private Area 是不是會改裝成 eth1 的 IP
>     去聯結 DMZ 的主機?
>
>     弟沒試過,不過這點蠻有趣的 :)
>
>     因為我們設定 ip_masq 時,只指定 -s 來源 和 -d 目的,而來源就是
>     Private network, 目的都設 0.0.0.0 全部,因此只要由 Private Area 出來的
>     應該都會被改裝(化妝),但是 Routing 本身也就可以連通了。
>
>     所以說,到底 DMZ 內接到的 IP 是哪一個?
>

老實說﹐我沒有實際抓封包內容看過﹐不過﹐我認為 song 兄的假設是對的﹐也就是
MASQ 後再出去的界面地址。
如果 routing 設定好之後﹐要讓內部網路到 DMZ 的封包不經過偽裝﹐只要在 MASQ 那
行規則前面插入(用 -I ) 目標為 ACCEPT 的規則就可以了﹐例如﹕
ipchains -I forward -d ${dmz_net} -j ACCEPT

假如這台 NAT 同時是外面封包進入 DMZ 的 gateway﹐這裡可以不指定 -s 範圍。否
則﹐您可以只限制 -s ${private_net} 的來源可以跳至 ACCEPT 目標﹐其餘 DENY (用
policy)。但別忘了在 DMZ 設定回去內部網路的路由就是了(假如 NAT 不是 DMZ 的預
設 gw)。