Song <Song.bbs@bbs.cynix.com.tw> wrote in message
news:3dKYl9$6z_@bbs.cynix.com.tw...
> ※ 引述《dinoming@hotmail.com ( 大明)》之銘言:
> > 小弟有一些關於 Firewall 設定的問題想請教,希望大家能給小弟一點意見及幫
忙。
> > 小弟現時公司內部的 Windows 98 的 IP 位址是用 168.168.1.5 - 168.168.1.100
> > Subnet Mask 是 255.255.0.0。現在小弟想架設一部 Linux 防火牆 (分別有
Public,
> > LAN, DMZ 的介面)。 Email 及 Web Server 是連上 DMZ 的集線器上,內部的使用
者是
> > 連上 LAN 的集線器上,而 Public 這個介面是連上 ISP 如我們的 Router 上。
> > eth0 (PUBLIC) : w.x.y.z
> > eth1 (LAN)  : 168.168.1.254 ( subnet : 255.255.255.0, Network :
> > 168.168.255.255 ) 有錯嗎 ?
>
>     255.255.255.0 應該叫 netmask
>     Netword ID 應該是 168.168.1.0
>
> > eth2 (DMZ) : 168.168.2.254 ( subnet : 255.255.255.0, Network :
> > 168.168.255.255 ) 有錯嗎 ?
> > 問題是 : 小弟想更清楚有關於 eth1 及 eth2 這兩組 IP 的設定。
> > 小弟曾經試過使用 2 張網絡卡設定 ipchains + ipmasqadm portfw, 當期時, 內
部網
> > 絡包括了 60 台客戶端電腦及 1 台 qmail server. 所有對外的連接,如:
> > www,pop3,smtp,telnet,ftp.......等都非常之正常。 但當小弟想利用 outlook
連接
> > mail.mydomain.com 時,等了很久都沒有回應。(但,如果使用  ip address 是可
以的
> > !)
> > (注 : mail.domain.com 的 MX 記錄是由 ISP 的 Bind 指往我們的 True IP
(eth0),
> > 再透過 firewall 的 ipmasqadm portfw 至內部那台電腦上。)
> > 如果由家裡上網是沒有問題的 !! 從小弟的看法,應該是當客戶端要求連接
> > mail.mydomain.com 時,Firewall 會把這個請求送往 ISP 的 bind 上.., 然後當
客戶
> > 端知道了正確的 IP 後再轉至那個真 IP 上 (注: 那個真的 IP 便是小弟那台
> > Firewall 的 eth0.) 再透過firewall 的 ipmasqadm portfw 轉送至內部的
Server
> >  上。
> > 請問大家有何意見?
> > Rgds,
> > Dino
>
>     ?? 這是說您沒有自己架設 DNS 嗎?
>     那麼您內部電腦的 DNS 指向哪裡?
>
>     最簡單的解決方式是,在 client 上建立 hosts 檔,設定 mail.domain.com
>     的 IP 指向內部位置,而非 Firewall 的 eth0。
>     但這會造成後續維護上的困難。
>
>     如果您有自己架設 DNS,您可以在 DNS 上修改 /etc/hosts 的設定,
>     將 mail.domain.com 的 IP 指向內部位置,而非 Firewall 的 eth0。
>
>     這個問題應還是 ICMP 的 Redirect 所產生的問題,您可找尋舊的文章:
>     [問題]NAT中redirect port如何讓private ip也能access?
>     這個系列的討論文章。
>

song 兄﹐這問題似乎需要再探討一下的。

關於DNS﹐他也說過是 ISP 那邊幫忙指定的﹐只要 IP 找對了﹐是否在自己網路上架
DNS 似乎影響不大﹐除非兩邊的 DNS 資料不一至。他已經指出用 IP 來連接的話﹐沒
有問題。那他這裡所指的 IP﹐在 outlook 上面應該是設 POP 的 IP 吧﹖當然也可以
設定 SMTP 的﹐但不確定不是他所問的。不過﹐他又說在家可以連接﹐那這樣的推斷﹐
是不是他自己的 DNS 設定有問題﹖

如果 DNS 設定沒問題﹐那就回到前一個問題﹕究竟 server 擺在那邊﹖在內部嗎﹖那
會碰到 host route redirect 的 ICMP 問題。解決之道是可以修改內部的 DNS ﹐讓之
指到內部 server 的 IP 去﹐或是在所有 clients 上面用 hosts 檔來寫死地址。
另一個方法是升級到 kernel 2.4 用 iptables 來做﹕
# iptables -t nat -A PREROUTING -d 1.2.3.4 \
        -p tcp --dport 80 -j DNAT --to 192.168.1.1
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
        -p tcp --dport 80 -j SNAT --to 192.168.1.250

他原本的架構是有三張網路卡﹕一對外﹐一對內﹐一對 DMZ。
我想(雖然他沒明確指出)﹐客戶端的 request 應該會從對內界面傳入﹐然後經過 port
forward 之後會由 DMZ 的界面出去。照這樣的設計﹐應該不至於出現 ICMP Redirect
的現象才對。


無論如何﹐在判斷問題之前﹐我們有必要先將一些不必要的非明朗因素排除掉﹐例如確
定封包沒有被 ipchains 或其它過濾系統擋掉了﹐以及路由的設定是可行的。