我用iptables作Port Mapping但是就是被擋住 !!



贊助商連結


anson lin
2002-03-20, 12:29 AM
我是用iptables來作NAT+防火牆,以下是我的設定 :
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 110 -j ACCEPT
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP
Client端都只能看網頁,用FTP,收發Mail,其餘全部要擋住
但是之後我加了一段Port Mapping (外面連Linux Ftp會轉到client端虛擬ip架的Ftp Server)

iptables -A POSTROUTING -t nat -p tcp -d 211.11.22.33 --dprot 21 -j DNAT --to 192.168.1.2:21

但是它就是不通
後來我發現它還是被
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP
所擋住的(因為把這一行拿掉就可以成功的轉到虛擬ip的ftp server)
但是我又一定要限制Client的連線
請教我要增加哪一個指令讓我外面的FTP連線可以Mapping到我虛擬ip的FTP Server呢???
:rolleyes: :rolleyes: :rolleyes:

贊助商連結


netwalker
2002-03-21, 10:29 AM
最初由 anson lin 發表
我是用iptables來作NAT+防火牆,以下是我的設定 :
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 110 -j ACCEPT
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP
Client端都只能看網頁,用FTP,收發Mail,其餘全部要擋住
但是之後我加了一段Port Mapping (外面連Linux Ftp會轉到client端虛擬ip架的Ftp Server)

iptables -A POSTROUTING -t nat -p tcp -d 211.11.22.33 --dprot 21 -j DNAT --to 192.168.1.2:21

但是它就是不通
後來我發現它還是被
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP
所擋住的(因為把這一行拿掉就可以成功的轉到虛擬ip的ftp server)
但是我又一定要限制Client的連線
請教我要增加哪一個指令讓我外面的FTP連線可以Mapping到我虛擬ip的FTP Server呢???
:rolleyes: :rolleyes: :rolleyes:

請問一下,你後來這條Rule加入的位置是在iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP之前還是之後?
如果是之後的話,試看看把Port mapping的Rule移到倒數第二行試看看。
記得iptable的先後順序似乎會對結果產生不同的影響。
小弟也是Linux 新手,如果說得不對,請多包涵!

anson lin
2002-03-21, 02:23 PM
謝謝大家的幫忙:p
我一氣之下把我的rc.local減到最精簡還是不行耶:mad:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d 211.11.22.33 --dprot 21 -j DNAT --to 192.168.1.2:21
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP

這樣我可以成功的限制Client只能瀏覽網頁,但是用prot21的Mapping到虛擬ip 192.168.1.2就不行:mad:
但是我只要拿掉
iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP
就可以Mapping了:confused: :confused:
我已經把iptables -A PREROUTING -t nat -p tcp -d 211.11.22.33 --dprot 21 -j DNAT --to 192.168.1.2:21
加到iptables -A FORWARD -p all -i eth1 -s 0.0.0.0/0 -j DROP 的前面了,但是還是不行呀 !!

請教大家是我的指令有錯嗎??還是大家有別的指令可以下呢??
我只要Client可以寄收Mail,上網,FTP,192.168.1.2這個虛擬ip開ftp站 即可,謝謝 !!
:rolleyes: :rolleyes: :rolleyes: