iptables 的問題



贊助商連結


threesecond
2005-12-30, 06:38 PM
系統環境:
Fedora Core4
Kernel 2.6.14-1
iptables 1.30

架構大致如下:
Server -> Hub -> NAT -> ATU-R -> Internet

NAT: Fedora Core 4
Server: WWW, MySQL, Mail server.......

對外網卡為 eth0
對內網卡為 eth1

前次系統掛點 (RedHat7),後來系統重灌為 FC4,我將原先的 iptables script 複製到 FC4 裡面,執行後在 iptables -t nat -L 裡面可以看到執行後的 rules,但外面卻無法連線到 LAN 內的 Server,script 如下:

#!/bin/bash

#-----先清除舊有的iptables-----
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F

#-----初始化iptables-----------
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp # 同上,處理 ftp 等連結問題
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/16 -j MASQUERADE


#---------- httpd port80 重導 ---------------
iptables -A PREROUTING -t nat -p tcp -d 202.145.***.137 --dport 80 -j DNAT --to 192.168.0.99:80
iptables -A OUTPUT -t nat -p tcp -d 202.145.***.137 --dport 80 -j DNAT --to 192.168.0.99:80

iptables -A PREROUTING -t nat -p tcp -d 202.145.***.138 --dport 80 -j DNAT --to 192.168.0.101:80
iptables -A OUTPUT -t nat -p tcp -d 202.145.***.138 --dport 80 -j DNAT --to 192.168.0.101:80
(以下省略)

現在內部網路都已經可以連外了,但是外面的 Client 無法連上 Server 的 WWW 服務,請問上面的 script 出了什麼問題嗎?
或者還需要哪些資料?我再補上。

贊助商連結


dou0228
2005-12-30, 06:46 PM
output chain 是不須要 DNAT 的

threesecond
2005-12-30, 08:58 PM
output chain 是不須要 DNAT 的
不需要 DNAT?請問該怎麼輸入指令呢?
iptables -A PREROUTING -t nat -p tcp -d 202.145.***.137 --dport 80 --to 192.168.0.99:80
iptables -A OUTPUT -t nat -p tcp -d 202.145.***.137 --dport 80 --to 192.168.0.99:80
這樣執行後會跳出錯誤訊息耶。

麻煩請指教,謝謝。

dou0228
2005-12-30, 09:43 PM
不需要 DNAT?請問該怎麼輸入指令呢?
iptables -A PREROUTING -t nat -p tcp -d 202.145.***.137 --dport 80 --to 192.168.0.99:80
iptables -A OUTPUT -t nat -p tcp -d 202.145.***.137 --dport 80 --to 192.168.0.99:80
這樣執行後會跳出錯誤訊息耶。

麻煩請指教,謝謝。
我的意思是..
Destination NAT 是必須在 PREROUTING 就做掉的
你在 OUTPUT 做實在是非常的奇怪

你只須要 iptables -A PREROUTING -t nat -p tcp -d 202.145.***.137 --dport 80 -j DNAT --to 192.168.0.99:80

linux_xp
2005-12-30, 10:50 PM
這兒有現成的 shell script,還不錯用,拿去用吧 ;)

根據書籍的範例檔,小幅度修改
於 FC4 測試 OK

把檔頭部份的變數填一填就可以用了
script 內附有完整中文說明註解


附件:閘道防火牆 shell script
格式:UTF-8 (無BOM),unix 斷行


若 windows 下文書編輯器無法顯示 utf-8
請下載 Notepad++ 免費編輯軟體,用它開啟:
http://notepad-plus.sourceforge.net/tw/site.htm

若 Linux 下 vi 開啟,註解說明部份出現亂碼
請確定 i18n 已設定為 utf-8,或者將該檔編碼轉成 Big5

:)

threesecond
2005-12-31, 08:55 AM
我的意思是..
Destination NAT 是必須在 PREROUTING 就做掉的
你在 OUTPUT 做實在是非常的奇怪

你只須要 iptables -A PREROUTING -t nat -p tcp -d 202.145.***.137 --dport 80 -j DNAT --to 192.168.0.99:80

果然拿掉 OUTPUT 那行就一切正常了,感謝您!

To linux_xp:
您給的設定檔是從旗標那本書改的嗎?這本書我也有買,正在研讀中,
但現在當務之急是先讓公司的網站正常運作,日後再照書慢慢調整,
同樣感謝您的熱心!

threesecond
2006-01-04, 06:47 PM
這是修改自 linux_xp 提供的 gw-firewall-utf8.zip,加入了多重對外IP的功能,
主要修改的區段為 LAN_TCP_DNAT 和 LAN_UDP_DNAT,使用方法請見檔案註解,記得先做 ip alias 將多重 IP 綁在 eth0 上面。

這是因為我本身的網路有多個對外固定 IP,有這個需求,因此修改檔案並提供給各位參考使用。