Chinaunix

标题: 路由中iptables问题。。。 [打印本页]

作者: chuizx    时间: 2008-08-13 17:35
标题: 路由中iptables问题。。。
在iptables规则中某网段的机器禁止访问外网,这样可以。我想只允许某网段的机器允许访问某一网站,其他的网站不允许访问,但是网段的机器能正常上网,好像iptables在这里没有起作用。我用的是NAT表。以下是部分代码:  高手指点下啊。。。
if [ "$f1" = "ALL" ]; then  //所有IP的时候
        ip1=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f1`
                                ip2=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f2`
                                ip3=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f3`
                                ip4="0/24"
                                ip_net="$ip1.$ip2.$ip3.$ip4"
                                if [ "$f3" = "refuse" ]; then  //禁止访问的网站
                                                    iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net -d $f4 -j DROP 2>/dev/null
                    else
                            iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net -d $f4 -j ACCEPT 2>/dev/null                    //   允许访问网站   问题就除在这 起不到作用(所有的网站还是可以访问)     
                    fi
    elif [ "$f1" = "ONE" ]; then  //单IP的时候
                    IPADDR="$f2"
                    if [ "$f3" = "refuse" ]; then
                                                    iptables -t nat -I $WEBPAGE_CHAIN -s $f2 -d $f4 -j DROP 2>/dev/null
                    else
                                      #iptables -t nat -I  $WEBPAGE_CHAIN -s $f2 -d $f4 -j ACCEPT  2>/dev/null
                                 
                    fi
作者: ssffzz1    时间: 2008-08-13 17:35
iptables -I FORWARD -j DROP
iptables -I FORWARD -d www.baidu.com -j ACCEPT
iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD -p udp -j ACCEPT

这样试试。
作者: ssffzz1    时间: 2008-08-13 20:21
还是用iptables-save直接帖结果吧。

还有你定义目标网站用的是域名还是IP。
作者: yhliu    时间: 2008-08-14 09:15
怎么可能会在Nat表里做呢。在filter表的forward里做啊。
如 -a FORWARD -s 192.168.X.X -d www.XXX.com -j ACCEPT
作者: yhliu    时间: 2008-08-14 09:18
最主要的是这是一个包的转发问题,怎么可能在Nat里做。
作者: chuizx    时间: 2008-08-14 13:05
标题: CFW_CHAIN
:wink:
作者: chuizx    时间: 2008-08-14 16:48
标题: 回复 #3 yhliu 的帖子
我是这样写的:iptables -A FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT,  但是其他网站还是可以访问。FORWARD的策略(policy)为DROP。
作者: ssffzz1    时间: 2008-08-14 23:40
叫你帖iptables-save咋就这么难呢。
俺有不可能害了你。
作者: chuizx    时间: 2008-08-15 09:19
标题: 回复 #7 ssffzz1 的帖子
我刚刚接触iptables,不怎么懂你的意识哈。。再细说下,谢谢!
作者: ssffzz1    时间: 2008-08-15 10:06
哦。贴出iptables-save这个命令的执行结果。
作者: chuizx    时间: 2008-08-15 10:15
标题: 回复 #9 ssffzz1 的帖子
我是用SecureCRT登入路由上操作的,打这个命令后报没有这个命令。请问楼上的,iptables-save出来的结果和本帖的问题有什么联系吗?谢谢!
作者: ssffzz1    时间: 2008-08-15 10:27
iptables -vnl
这个总该有吧。
作者: chuizx    时间: 2008-08-15 10:44
标题: 回复 #9 ssffzz1 的帖子
Chain FORWARD (policy DROP)
target     prot opt source               destination         
sysfw      all  --  anywhere             anywhere            state NEW
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.0/24       anywhere            state NEW
ACCEPT     all  --  220.181.37.55        192.168.0.230      
ACCEPT     all  --  220.181.6.6          192.168.0.230      
ACCEPT     all  --  192.168.0.230        220.181.6.6         
ACCEPT     all  --  192.168.0.230        220.181.37.55      

Chain INPUT (policy DROP)
target     prot opt source               destination         
cfirewall  all  --  anywhere             anywhere            
sysfw      all  --  anywhere             anywhere            state NEW
re-admin   all  --  anywhere             anywhere            
lo-admin   all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain cfirewall (1 references)
target     prot opt source               destination         

Chain lo-admin (1 references)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       anywhere            

Chain p2pfw (0 references)
target     prot opt source               destination         

Chain re-admin (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh

Chain sysfw (2 references)
target     prot opt source               destination         
DROP       udp  --  anywhere             anywhere            udp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpt:445
作者: linux_admin    时间: 2008-08-15 10:46
iptable -I INPUT -s IP1 -d www.baidu.com -p tcp --dport 80 -j ACCEPT
iptable -I INPUT -s IP1 -d 0/0 -p tcp --dport 80 -j DROP

换好IP,然后直接在ssh终端下敲入即可。

[ 本帖最后由 linux_admin 于 2008-8-15 10:52 编辑 ]
作者: chuizx    时间: 2008-08-15 10:47
标题: 回复 #12 chuizx 的帖子
谢谢 我试试。。

[ 本帖最后由 chuizx 于 2008-8-15 10:48 编辑 ]
作者: ssffzz1    时间: 2008-08-15 10:48
sysfw      all  --  anywhere             anywhere            state NEW
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.0/24       anywhere            state NEW

因为这个的关系,因此你想阻止对某个外网地址的访问有时候会不成功。
作者: ssffzz1    时间: 2008-08-15 10:50
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT

你这样来加试试。
作者: chuizx    时间: 2008-08-15 10:51
标题: 回复 #15 ssffzz1 的帖子
sysfw      all  --  anywhere             anywhere            state NEW
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.0/24       anywhere            state NEW

因为这个的关系,因此你想阻止对某个外网地址的访问有时候会不成功。


这个我不知道是做什么的,不好删除。那有没有其他办法能行呢?
作者: chuizx    时间: 2008-08-15 10:53
标题: 回复 #16 ssffzz1 的帖子
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT

你这样来加试试。

这个我试过,结果所有网站都可以上
作者: linux_admin    时间: 2008-08-15 10:56
我说的哪个试了吗?
作者: chuizx    时间: 2008-08-15 10:57
标题: 回复 #19 linux_admin 的帖子
正在试哈 。。。
作者: linux_admin    时间: 2008-08-15 11:00
怎么真慢呀
作者: chuizx    时间: 2008-08-15 11:09
标题: 回复 #19 linux_admin 的帖子
第一句的ACCEPT 添加不进去  报错
不好意识,我这网速有点慢哈。。
作者: linux_admin    时间: 2008-08-15 11:20
不可能啊 我试试过了啊
把错误提示贴出来
注意 dport 前有两个"-"
作者: chuizx    时间: 2008-08-15 11:23
标题: 回复 #23 linux_admin 的帖子
我已经添加进去了,我看了下INPUT链中DROP排再ACCEPT前面,我是允许的同一网段的另一台机子可以上百度,在机子上测试了下。但是还可以所有网站可以上。郁闷。。。
作者: linux_admin    时间: 2008-08-15 11:24
come on 等着你呢,一会下班该吃饭了
作者: ssffzz1    时间: 2008-08-15 11:24
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT

哦,怪我一是大意。应该是这个样子的。

iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j DROP
作者: linux_admin    时间: 2008-08-15 11:25
这台linux服务器不是网关?
作者: linux_admin    时间: 2008-08-15 11:26
原帖由 ssffzz1 于 2008-8-15 11:24 发表
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT

哦,怪我一是大意。应该是这个样子的。

iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j DROP



对,这个也行的
作者: chuizx    时间: 2008-08-15 11:27
标题: 回复 #26 ssffzz1 的帖子
不是吧。。我要实现的是我只允许百度可以上 其他网站的上不去。
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j DROP,这样的话是不是就吧百度禁止啦。。?
作者: linux_admin    时间: 2008-08-15 11:28
原帖由 linux_admin 于 2008-8-15 11:25 发表
这台linux服务器不是网关?




作者: chuizx    时间: 2008-08-15 11:29
标题: 回复 #27 linux_admin 的帖子
这台linux服务器不是网关?

我这是个路由,在对路由进开发。。
作者: ssffzz1    时间: 2008-08-15 11:30
唉,终于搞清楚你要干吗了。可能我没有看仔细吧。

iptables -I FORWARD -j DROP
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

这个应该可以了。

[ 本帖最后由 ssffzz1 于 2008-8-15 11:33 编辑 ]
作者: linux_admin    时间: 2008-08-15 11:30
路由的话,就更没问题了啊
作者: chuizx    时间: 2008-08-15 11:33
标题: 回复 #32 ssffzz1 的帖子
我再试试哈。。。非常感谢2位!!
作者: ssffzz1    时间: 2008-08-15 11:34
呵呵,注意我刚修改了。要看清楚哦。否则你要断网的
作者: chuizx    时间: 2008-08-15 11:35
标题: 回复 #35 ssffzz1 的帖子
恩哈 。。。我弄这个都不知道断了多少次了。。。没关系。。断了重启  呵呵
作者: chuizx    时间: 2008-08-15 11:51
标题: 回复 #32 ssffzz1 的帖子
唉,终于搞清楚你要干吗了。可能我没有看仔细吧。

iptables -I FORWARD -j DROP
iptables -I FORWARD -s 192.168.0.230 -d www.baidu.com -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

这个应该可以了。

[ 本帖最后由 ssffzz1 于 2008-8-15 11:33 编辑 ]



我试过了。。。里面的链是这样的了
Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.4          220.181.6.6         
ACCEPT     all  --  192.168.0.4          220.181.37.55      
DROP       all  --  anywhere             anywhere            


结果都断网了。。。连百度也上不去
作者: ssffzz1    时间: 2008-08-15 11:58
哦。是这样啊。192.168.0.4 也不能上吗?
作者: chuizx    时间: 2008-08-15 12:00
标题: 回复 #38 ssffzz1 的帖子
恩。都断了。。。
作者: chuizx    时间: 2008-08-15 12:03
标题: 回复 #38 ssffzz1 的帖子
我这样试了下  iptables -I FORWARD -s 192.168.0.230 -d -!www.baidu.com -j DROP
意识是除了百度,其他都禁止,但报语法错误。
作者: ssffzz1    时间: 2008-08-15 12:21
哎我到底在搞啥啊。怎么这么乱哦。
iptables -I FORWARD -j DROP
iptables -I FORWARD -s 192.168.0.0/24 -d www.baidu.com -j ACCEPT

这个样子应该就可以了的。你加了上面的2个命令然后再帖iptables -nvl我看看,要帖全哦。
作者: chuizx    时间: 2008-08-15 13:11
标题: 回复 #41 ssffzz1 的帖子
我重启路由,最初的表是
Chain FORWARD (policy DROP)
target     prot opt source               destination         
sysfw      all  --  anywhere             anywhere            state NEW
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.0/24       anywhere            state NEW

Chain INPUT (policy DROP)
target     prot opt source               destination         
sysfw      all  --  anywhere             anywhere            state NEW
re-admin   all  --  anywhere             anywhere            
lo-admin   all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain lo-admin (1 references)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       anywhere            

Chain p2pfw (0 references)
target     prot opt source               destination         

Chain re-admin (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh

Chain sysfw (2 references)
target     prot opt source               destination         
DROP       udp  --  anywhere             anywhere            udp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpt:445
我加了你说是那两行后,表如下:
Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       220.181.6.6         
ACCEPT     all  --  192.168.0.0/24       220.181.37.55      
DROP       all  --  anywhere             anywhere            
sysfw      all  --  anywhere             anywhere            state NEW
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.0.0/24       anywhere            state NEW

Chain INPUT (policy DROP)
target     prot opt source               destination         
sysfw      all  --  anywhere             anywhere            state NEW
re-admin   all  --  anywhere             anywhere            
lo-admin   all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain lo-admin (1 references)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       anywhere            

Chain p2pfw (0 references)
target     prot opt source               destination         

Chain re-admin (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh

Chain sysfw (2 references)
target     prot opt source               destination         
DROP       udp  --  anywhere             anywhere            udp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpts:135:netbios-ssn
DROP       tcp  --  anywhere             anywhere            tcp dpt:445


结果我上百度也上不去,整个网都断了。。
作者: ssffzz1    时间: 2008-08-15 13:17
iptables -I FORWARD -j DROP
iptables -I FORWARD -d www.baidu.com -j ACCEPT
iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT


看来偶,在没有机器敲的时候,对命令是N不熟悉的。
奇怪了,见到了机器的时候,我命令行从来不是问题。衰人啊。

[ 本帖最后由 ssffzz1 于 2008-8-15 13:22 编辑 ]
作者: chuizx    时间: 2008-08-15 13:37
标题: 回复 #43 ssffzz1 的帖子
呵呵 。。。我再试试。。
作者: ssffzz1    时间: 2008-08-15 13:41
哎。这个事情出得的有点失职了。没有认证的论证过就发帖了。真是不应该啊。不好意思了。

另外,LZ你仅仅是只能访问baidu就可以了吗?没有别的要求了吗?我看你的脚本那么多,还有很多自定义的链表。搞不清楚你到底要实现社么需求。
不过你可以参照LINUX版的IPTABLES教程,自己看看。不是很麻烦的。有不懂的就上来问就可以了。
作者: chuizx    时间: 2008-08-15 13:44
标题: 回复 #43 ssffzz1 的帖子
还是打不开百度。。。。其他的也开不了。。。我想哭。。。
作者: ssffzz1    时间: 2008-08-15 13:56
我也想哭。

1、如果你不加上面的配置能否打开网页。
2、帖ifconfig -a的结果。
3、帖route 的结果。

4、详细的说一下你的要求。
作者: chuizx    时间: 2008-08-15 14:00
标题: 回复 #45 ssffzz1 的帖子
iptables表中是不是由2种情况,一种是停止检查,就是匹配到第一个规则就return了,不再往下匹配了。另一种是继续检查。就是匹配到所有的规则。是不是有这样的情况呢。。。。
作者: ssffzz1    时间: 2008-08-15 14:06
不是的是按照顺序匹配的原则,一旦有匹配就不再继续匹配后续的规则。
作者: chuizx    时间: 2008-08-15 14:13
标题: 回复 #47 ssffzz1 的帖子
1、如果你不加上面的配置能否打开网页。   

不加可以打开,都可以打开。

2、帖ifconfig -a的结果。
eth0      Link encap:Ethernet  HWaddr 00:1B:2A:40:01:3A  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:7 Base address:0x9f00

ipsec0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ipsec1    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ipsec2    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ipsec3    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ixp0      Link encap:Ethernet  HWaddr 00:1B:2A:40:01:38  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4070 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:375487 (366.6 KiB)  TX bytes:421123 (411.2 KiB)

ixp1      Link encap:Ethernet  HWaddr 00:1B:2A:40:01:39  
          inet addr:192.168.100.56  Bcast:192.168.100.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11105 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3940 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:875342 (854.8 KiB)  TX bytes:327066 (319.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:616 (616.0 B)  TX bytes:616 (616.0 B)

tunl0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

3、帖route 的结果。
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   *               255.255.255.0   U     0      0        0 ixp1
192.168.0.0     *               255.255.255.0   U     0      0        0 ixp0
default         192.168.100.1   0.0.0.0         UG    0      0        0 ixp1

4、详细的说一下你的要求。

是这样的,我现在在做路由WEB,界面上有这样一个功能:网页管制,可以实现对单IP,IP段和所有IP进行网页管制,我现在实现了对这些IP进行禁止:意识是用户填入的网址可以被禁止掉,其他的网址可以上。但我想对这些IP允许只上某个网址,也是用户填的网址。问题就出再这。我把那脚本的原代码贴上:
#!/bin/sh

#write in 2007.11.16 at first

[ -f /etc/lineconf.cfg ] && . /etc/lineconf.cfg

WEBPAGE_CHAIN="nat-webpage"
WEBPAGE_FILE="/etc/kingcan/webpage.cfg"

#del all mangle rule
/sbin/iptables -t nat -D POSTROUTING -j $WEBPAGE_CHAIN 1>null 2>&1  
/sbin/iptables -t nat -F $WEBPAGE_CHAIN 1>/dev/null 2>&1
/sbin/iptables -t nat -X $WEBPAGE_CHAIN 1>/dev/null 2>&1

#add mangle rule
/sbin/iptables -t nat -N $WEBPAGE_CHAIN  1>/dev/null 2>&1
/bin/cat $WEBPAGE_FILE | while read f1 f2 f3 f4
do
    [ -z "$f4" ] && break
    if [ "$f1" = "ALL" ]; then
        ip1=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f1`
                                ip2=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f2`
                                ip3=`/bin/echo $LAN1_IPADDR | /usr/bin/cut -d '.' -f3`
                                ip4="0/24"
                                ip_net="$ip1.$ip2.$ip3.$ip4"
                                if [ "$f3" = "refuse" ]; then
                                                    iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net -d $f4 -j DROP 2>/dev/null
                    else
                                  iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net -d $f4 -j ACCEPT 2>/dev/null  //我要修改的地方
                    fi
    elif [ "$f1" = "ONE" ]; then
                    IPADDR="$f2"
                    if [ "$f3" = "refuse" ]; then
                                                    iptables -t nat -I $WEBPAGE_CHAIN -s $f2 -d $f4 -j DROP 2>/dev/null
                    else
                                  iptables -t nat -I $WEBPAGE_CHAIN -s $f2 -d $f4 -j ACCEPT 2>/dev/null  //我要修改的地方

                    fi
    else
        IPSTART=`/bin/echo $f2 |/usr/bin/cut -d "-" -f1`
                    IPEND=`/bin/echo $f2 |/usr/bin/cut -d "-" -f2`
                    ip1=`/bin/echo "$IPSTART" | /usr/bin/cut -d '.' -f1`
                    ip2=`/bin/echo "$IPSTART" | /usr/bin/cut -d '.' -f2`
                    ip3=`/bin/echo "$IPSTART" | /usr/bin/cut -d '.' -f3`
                    ip_net="$ip1.$ip2.$ip3"
                    #echo "$ip_net"
                    ips=`/bin/echo "$IPSTART" | /usr/bin/cut -d '.' -f4`
                    ipe=`/bin/echo "$IPEND" | /usr/bin/cut -d '.' -f4`
                    ipnum=$(($ipe-$ips))
                    while [ $ipnum -ge 0 ]
                    do
                             if [ "$f3" = "refuse" ]; then
                                                    iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net.$ips -d $f4 -j DROP 2>/dev/null
                             else
                                  iptables -t nat -I $WEBPAGE_CHAIN -s $ip_net.$ips -d $f4 -j ACCEPT 2>/dev/null  //我要修改的地方

                             fi
                             ips=$(($ips+1))
                             ipnum=$(($ipnum-1))
                    done
    fi
done
/sbin/iptables -t nat -I POSTROUTING -j $WEBPAGE_CHAIN 1>null 2>&1

[ 本帖最后由 chuizx 于 2008-8-15 14:15 编辑 ]
作者: chuizx    时间: 2008-08-15 14:20
原帖由 ssffzz1 于 2008-8-15 14:06 发表
不是的是按照顺序匹配的原则,一旦有匹配就不再继续匹配后续的规则。

如果是这样的话,应该匹配到允许百度后就不应该去匹配DROP了啊,但实际情况是所有都DROP了。也就是断网了!
作者: rynmud    时间: 2008-08-15 14:28
原帖由 chuizx 于 2008-8-15 14:20 发表

如果是这样的话,应该匹配到允许百度后就不应该去匹配DROP了啊,但实际情况是所有都DROP了。也就是断网了!


个人猜测  不是forward的问题 你的默认规则是 accept 还是deny
input那个最后如果走的是deny 应该导致数据包会不来吧

能不能在自己机器上抓一下包 还有网关上
作者: chuizx    时间: 2008-08-15 14:56
标题: 回复 #53 ssffzz1 的帖子
哈哈  好像可以了,百度能上,其他的不可以。。但是我打iptables -I FORWARD -d www.baidu.com -j ACCEPT这命令时报错  我就改成这样iptables -I FORWARD -d 220.181.6.6-j ACCEPT   220.181.6.6是百度的IP。还有解释些为什么这样就行了呢,,非常感谢你啊!!!!!
作者: ssffzz1    时间: 2008-08-15 15:03
报错的话估计是你的DNS没有配置好。

屡次实验不成功,不是你的错误。因为我给你的脚本中没有放开DNS协议,导致域名无法解析,因此你的BAODU也就上不成了。

哎,看来对IPTABLES没有以前熟悉了,好久没有认真的配置过了。最近总是在搞路由器和防火墙,生疏了啊。

另外,建议你阅读那个IPTABLES教程。
作者: chuizx    时间: 2008-08-15 15:05
标题: 回复 #55 ssffzz1 的帖子
好的 。非常感谢你哈。我也在做这方面。可以的话加我QQ哈  275342410.
作者: chuizx    时间: 2008-08-15 17:53
iptables -I FORWARD -j DROP
iptables -I FORWARD -d www.baidu.com -j ACCEPT
iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD -p udp -j ACCEPT

怎么把DNS打开,是不是吧53端口打开呢 ?
如下这样可以吗?
iptables -I FORWARD -j DROP
iptables -I FORWARD -d 0/0 -p tcp --dport 53 -j ACCEPT //添加这一行。
iptables -I FORWARD -d www.baidu.com -j ACCEPT
iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD -p udp -j ACCEPT
作者: abc3w    时间: 2008-08-15 19:19
iptables 不支持域名过滤
iptables 会自动查询DNS把命令中的域名转换成IP地址,对于多地址域名要注意
iptables 用做网关过滤上网时,通常会把FORWARD默认规则置为DROP
     #iptables -P FORWARD DROP

    不能说#iptables -I FORWARD -j DROP 不对,只是不好控制这条规则在全部规则中的位置。

在实现域名过滤最好的方法还是使用代理服务器比较可靠。

[ 本帖最后由 abc3w 于 2008-8-15 19:20 编辑 ]
作者: lxc521    时间: 2008-08-17 17:20
看了你的IPTABLES-SAVE的结果就知道你添加的规则没有生效,所以才会报错。
作者: good000deer    时间: 2008-08-20 15:01

作者: good000deer    时间: 2008-08-20 15:14

作者: chuizx    时间: 2008-08-23 13:13
标题: 回复 #55 ssffzz1 的帖子
iptables -I FORWARD -d www.baidu.com -j ACCEPT,在这条命令中,www.baidu。com字符串里可不可以使用通配符,如:iptables -I FORWARD -d *.baidu.com -j ACCEPT。这样的字符串iptables可以识别吗?
作者: dongtonggai    时间: 2008-08-24 16:49
路过,看看啊.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2