Username: Password:

觉得iptable脚本真没必要那么规范
来源:ChinaUnix.net作者:ChinaUnix.net 发布时间:2008-04-08 03:25:30


做NAT时候觉得- -网上好多脚本是不是规范的多余了
没自定义链的情况下iptables -X没必要写
-Z清零的话个人认为是要IPTABLES SAVE了之后才用
根本就没想DORP三链的话,下面不用写
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
下面三条最没必要写- -(泻特,难道默认的是DROP?)
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
说实话,对-P真是不理解,他是要不符合规则的包强制使用策略----就是您后面注明DROP和ACCEPT的包。。。但是假如设定为ACCEPT的话,默认都是ACCEPT的,更有必要着重强制一下
对于INPUT链的安全问题,也不用在开头就-P INPUT DROP了
等您把LO、$LAN和其他端口、ESTABLISHED都ACCEPT后再, -A INPUT DROP是相同的效果(反之也行),对单独做NAT的机器来说,$LAN(局网)都没必要ACCEPT,转发又不靠他,MRTG的话lo ACCEPT就够了- -万一您内网比外网还凶险的话,ACCEPT岂不是得不偿失,我们这就是,网吧,天天一大群大虾在下面扫您,看见有什么开着就动歪脑筋,OH MY GOD~
更有modprobe,这玩意的写法怎么从LINUX7.3开始就没变过,唉~
纯属菜鸟一番牢骚- -因为最近做NAT不停的兢兢业业按格式写脚本,打了N多份了,越大速度越不理想- -人都要崩溃了,最后居然是自己随手写的一个最不正规的脚本效果最好- -昏倒。。。。。。。

 platinum 回复于:2005-03-24 07:23:29
[quote:f485fa2c34="ht11"]做NAT时候觉得- -网上好多脚本是不是规范的多余了
没自定义链的情况下iptables -X没必要写
-Z清零的话个人认为是要IPTABLES SAVE了之后才用
根本就没想DORP三链的话,下面不用写
iptables -P INPUT ACCEPT
ipta..........[/quote:f485fa2c34]
您考虑问题太简单了
[code:1:f485fa2c34]
下面三条最没必要写- -(泻特,难道默认的是DROP?) 
iptables -t nat -P PREROUTING ACCEPT 
iptables -t nat -P POSTROUTING ACCEPT 
iptables -t nat -P OUTPUT ACCEPT 
[/code:1:f485fa2c34]
这种东西看似没用,实际上是最严谨的写法,是能够让各种环境下的系统都能够正常运行脚本的意思,因为您无法猜测这个系统当前的默认规则到底是ACCEPT还是DROP

更有modprobe,为什么要这么写?
我只加载ip_nat_ftp和ip_conntrack_ftp,为什么?
我不加载其他的模块,比如ipt_MASQUERADE、ip_conntrack,为什么?
/lib/modules//modules.dep又是做什么用的?

呵呵

 ?中人 回复于:2005-03-24 07:31:31
是的, 我?同 platinum 兄的?法.
那些?定大都?了照?不同的?境, 因?您不?定?行 script 之前是怎??的.
不?, 若是在 redhat/fedora 系??,
我都是在 script ?加一行 /etc/rc.d/init.d/iptables stop ??境 reset 後再加新的??.

不?, ?主?的也不?道理.
道理在於指出了很多人或?不求甚解, 只?找著?人?好的例子硬套, 而?去按??情形??整.
?烈建?先搞懂原理连同每一行的意思, 再?使用 script 不?.

 ht11 回复于:2005-03-24 14:35:50
[quote:8fafedf287="platinum"]
更有modprobe,为什么要这么写?
我只加载ip_nat_ftp..........[/quote:8fafedf287]
菜鸟不怕答错,有收获就行。加载模块- -环境centos3.4,lsmod的话,这些模块几乎都有,只但是后面注释不同罢了,就拿ip_nat_ftp来说后面标明used为0,也就是依赖他的核心模块为0,所以后面[]里标注的为unused,再比如其他诸如ip_tables的模块,used都为几个,具体依赖的核心模块在后面的[]里都有,至于更有类似8139too之类的驱动模块,后面的[]依赖一般都是antouclean,我视为根据环境自动移除~
不知道这么回答有错否,偶手头上的资料只告诉了我这些,当然自己心里也没有底~明天把modprobe ip_nat_ftp注释掉,看下面的机器是否能正常上FTP就能清楚了

 platinum 回复于:2005-03-24 14:41:08
是这样
ipt_REDIRECT
ipt_MASQUERADE
ipt_LOG
ipt_state
iptable_nat
ip_conntrack
ip_tables
等等这些模块都会在使用iptables的时候自动加载,所以没必要手动modprobe

比如
当您-j MASQUERADE的时候,ipt_MASQUERADE会自动加载
当您-m state的时候,ipt_state会自动加载
当您-j DNAT或SNAT的时候,iptable_nat会自动加载
但是,ip_conntrack_ftp和ip_nat_ftp比较特别

 ht11 回复于:2005-03-24 14:48:03
[quote:4cd336a45f="platinum"]但是,ip_conntrack_ftp和ip_nat_ftp比较特别[/quote:4cd336a45f]
绝对支持,同时愿闻其详,为这个我也很困惑,因为在modprobe这两项前后我都lsmod过,而且看到的结果都相同- -但是有很多朋友,就是没modprobe他们而无法通过地址转换连上公网的FTP,郁闷,感谢白金!!~

 platinum 回复于:2005-03-24 15:03:50
[quote:f28ba51705]
在modprobe这两项前后我都lsmod过,而且看到的结果都相同
[/quote:f28ba51705]
您先service iptables stop,然后lsmod确保里面没有模块
接着再执行您自己的防火墙shell试试?

 ?中人 回复于:2005-03-24 15:11:41
platinum 兄?是?大家解?一下 ftp 的 passive mode ? active mode 吧.
然後再??那?? ftp modules ?嘛用的, 自然好理解.

 ht11 回复于:2005-03-24 15:12:17
[quote:690fc4723c="platinum"]
您先service iptables stop,然后lsmod确保里面没有模块
接着再执行您自己的防火墙shell试试?[/quote:690fc4723c]
哦,那如此看来网中人所说的在 script ?加一行 /etc/rc.d/init.d/iptables stop ??境 reset 後再加新的??不是多余的,回家了拿家里的机器试~HOHO~~

 JavaJing 回复于:2005-03-24 15:24:52
modprobe这个模块使用起来不是那么习惯。

 ?中人 回复于:2005-03-24 15:33:46
modprobe 其?也是跑 insmod 而已.
只是 modprobe ??明的?相依存的必需 modules 也一? insmod ??. 
就????, ?啥?不??的??.

至於 modules 被?入後, 怎样拔除, ?看系?的 module 管理了.
我不?定 iptables stop 後, ?否自? rmmod 啦.
既然有人去?, 那我?就等?果好了...

 platinum 回复于:2005-03-24 15:38:43
[quote:abb6ebf8ec="?中人"]platinum 兄?是?大家解?一下 ftp 的 passive mode ? active mode 吧.
然後再??那?? ftp modules ?嘛用的, 自然好理解.[/quote:abb6ebf8ec]
摘抄自 http://www.study-area.org/linux/servers/linux_nat.htm#ftp
请参考 http://www.study-area.org/linux/servers/linux_nat.htm#ftp
[quote:abb6ebf8ec]
在正常模式下? 
1、FTP client ??一?????的高於 1024 的 port 呼叫 FTP server 的 port 21?求??。??利完成 Three-Way Handshake 之後???就成功建立?但??是命令通道的建立。 
2、??端需要?送?料的?候?client 透?命令通道用一? port 命令告? server ?客?端能够用另一?高於 1024 的 port 做??通道????好 socket ?源。 
3、然後 server 用 port 20 和?才 client 所告知的 socket 建立????。?注意???方向?是? server 到 client 的?TCP 封包?有一? SYN 旗?。 
4、然後 client ?返回一?? ACK 旗?的??封包??完成另一次的 Three-Way Handshake 手?。??候???通道才能成功建立。 
?始???送。 

在 passive 模式下? 
1、FTP client ??一?????的高於 1024 的 port 呼叫 FTP server 的 port 21?求????完成命令通道的建立。 
2、??端需要?送?料的?候?client 透?命令通道送一? PASV 命令? server?需要?入 passive ??模式。 
3、然後 server 像上述的正常模式之第 2 步?那??挑一?高於 1024 的 port ??用命令通道告? client ?於 server 端用以做??通道的 socket。 
4、然後 client 用另一?高於 1024 的 port 呼叫?才 server 告知的 scoekt ?建立??通道。此?封包? SYN ??。 
5、server ??後回?一? ACK 封包。?完成任何交握手??成功建立??通道。 
?始???送。 
[/quote:abb6ebf8ec]

以下是我的理解

主动模式
server           client
数据 命令        数据 命令
20   21              xx    yy
|      |                 |      |
|      |<----yy-----|      |
|      |--- yyok--->|      |
|<---|------------|--->|
|      |                 |      | 

被动模式
server           client
数据 命令        数据 命令
zz   21              xx    yy
|      |                 |      |
|      |<--被动?---|      |
|      |--- zzok--->|      |
|<---|------------|--->|
|      |                 |      | 


另外一点心得
假设A是CLIENT,B是SERVER
A->B,都没有防火墙,能够使用主动、被动模式
A->B,B有防火墙,B需要加载ip_conntrack_ftp
A->B,A通过NAT出去,B有防火墙,B需要加载ip_conntrack_ftp,同时假如A的网关是LINUX系统,还必须加载ip_nat_ftp

 ht11 回复于:2005-03-24 15:39:36
[quote:238e83847e="?中人"]modprobe 其?也是跑 insmod 而已.
只是 modprobe ??明的?相依存的必需 modules 也一? insmod ??. 
就????, ?啥?不??的??.

至於 modules 被?入後, 怎样拔除, ?看系?的 module 管理了.
我不..........[/quote:238e83847e]
这样一说。我倒觉得晚上有必要装个全新的centos看看了- -THX~

 ht11 回复于:2005-03-24 15:42:16
[quote:fa57d29fea="platinum"]

以下是我的理解

主动模式
server           client
数据 命令        数据 命令
20   21              xx    yy
|      |                 |      |
|      |<----yy-----|      |
|      |--- yyok-..........[/quote:fa57d29fea]
受益~严重感谢

 ht11 回复于:2005-03-24 18:37:25
结果出来了,iptables stop确实能够让任何和iptables脚本有关的模块移出- -只剩下几个驱动模块了- -不得不对白金说佩服(毕竟是老江湖了),反复iptables stop和lsmod后。得出结论。只要您做的NAT脚本是正确的,假如您没modprobe任何模块的话。系统会自动载入
ip_tables
iptable_filter
ip_conntrack
iptable_nat
ipt_state
ipt_MASQUERADE
要加载的模块真的只要ip_nat_ftp和ip_conntrack_ftp了
谢谢白金和网中人

 skylove 回复于:2005-03-26 13:41:45
有空看看内存是否有泄露?? 我记得以前调试某个模块的时候,多移出/载入几次,系统就开始慢...到最后不报告错误,但是整个系统就相当慢了...象类似的模块载入第一次是无问题的.

 glider126 回复于:2005-03-29 14:38:39
请问:ip_nat_ftp和ip_conntrack_ftp
这2个模块各自是干什么的?

我的理解(呵呵,菜鸟理解):
ip_nat_ftp 是用在nat中控制ftp连接的
ip_conntrack_ftp 检查ftp的控制连接中的状态的

ip_conntrack_ftp被ip_nat_ftp调用。

看来有空还是用做试验~~~

 ?中人 回复于:2005-03-29 15:22:36
在做??之前, 可先用所?的基????一下, ?更有助理解.

首先要理解前面 platinum 兄?的?明, 也就是?於 ftp 的????模式.
然後再??分出 port command 的?容是在 ftp packet ?的, 而不是??在 tcp/ip header ?.
?我?的 firewall/nat 在?有 modules ?忙的情?下,
只??查及修改 tcp/ip header 的?容而不?去理? ftp packet 的?容.
如此, 在 ftp active mode 下,
??自 ftp server port 20 的 NEW packet 到? firewall/nat ?, 
由於?有????也??先?好的??? packet 通?, 那?? ftp-data channel 就??掉.
若有 ip_conntack_ftp module 的?忙, firewall ???任何 port 21 相?的 tcp packet 展?查看?面的 ftp packet.
如??有 port command, 那可事先??? RELATED ???通??, ? ftp-data packet 穿? firewall .

然而 conntrack module 只是?控??, 不?? packet 做任何的修改.
?在 direct-routing ?境下的 firewall 就?用了.
但是在 nat ?境下呢?
先?我?看看 ftp packet ?的 port command 所使用的 address : 
是使用 nat 之後的外部地址?是 nat 之前的?部地址呢?
假如?有 ip_ftp_nat module 的?忙, 那肯定是使用 nat 之前的?部地址.
??, ??另一端的 server/client 的 ftp-data packet 要送到哪?去?
呵, ?然是送到?部地址去啦. 但, ?在 internet 上是行不通的. 或根本就送?地方而遭 reset !
okay, 如此, 怎才能?另一端的 packet 送回?端的外部地址? 且?能改回到正?的?部地址去呢?
答案呼之欲出---就是 ip_nat_ftp 要做的事情!

 glider126 回复于:2005-03-29 17:32:08
?中人,正是功力深厚!
谢谢您的讲解,这样的讲解比得到一个现成的iptables配置要好数倍。
很多时候很容易知道怎么做,可是很难知道为什么这么做。
诶~~  功力不够,向 ?中人 致敬!
先草草看了一遍您的讲解,90%理解,现在下班回家好好搞搞您所讲的内容。
万分感谢~~~

(conntrack module就是来看ftp的ftp-control channel里的port和passive的吧,只是监控作用,ip_ftp_nat通过调用conntrack看懂ftp的ftp-control channel里的ftp控制信息,然后ip_ftp_nat根据这些信息来打开相应的端口,让ftp的ftp-data channel穿过iptables)

 gydoesit 回复于:2005-03-31 18:28:19
我就从来没加载ftp这两个模块,似乎也从来没有问题.各位告诉我是怎么回事????
redhat9和fedora core3

 kawengao 回复于:2005-03-31 18:59:05
[quote:af07ea6dc6="?中人"]在做??之前, 可先用所?的基????一下, ?更有助理解.

首先要理解前面 platinum 兄?的?明, 也就是?於 ftp 的????模式.
然後再??分出 port command 的?容是在 ftp packet ?的, 而不是??在 tcp/..........[/quote:af07ea6dc6]

谢谢!

 ?中人 回复于:2005-03-31 23:02:08
[quote:4221ff2604="gydoesit"]我就从来没加载ftp这两个模块,似乎也从来没有问题.各位告诉我是怎么回事????
redhat9和fedora core3[/quote:4221ff2604]
???境???, ??"猜"起...

好歹, 您也???, ?一下 client, firewall/nat, server 的地址.
再?"完整"的???上?.
若能抓??包?看就更好了....

----p.s.----
天空??密?, 一位司?在?月亮也?路?也?任何照明??下,
???越一?九曲十八?的?道, ??毫??.
?甚??

 kecai_cale 回复于:2005-04-01 01:06:08
哎,学但是来了

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅