免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5453 | 回复: 11
打印 上一主题 下一主题

[网络管理] Iptables中的反向匹配问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-19 23:36 |只看该作者 |倒序浏览
我在脚本中要实现一个策略,forward的规则上允许来自 172.16.1.0/24 网段,目的地除以下三个vlan的任何目的地可达,
三个vlan 为 192.168.1.0/24  192.168.2.0/24   192.168.3.0/24

我看了iptables 的语法,反向匹配用 !后面加条件即可实现。试了如下格式总是不行,不知道正确的设置应该如何写。请教大家,谢谢。


脚本中相关内容如下:
vlan1="192.168.1.0/24"
vlan2="192.168.2.0/24"  
vlan2="192.168.3.0/24"  

iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan1 -j ACCEPT     ####这句测试是没问题的


#####下面这两条这样写一直提示有问题###########
iptables -A FORWARD  -s 172.16.1.0/24   -d  ! $vlan1,$vlan2,$vlan3 -j ACCEPT     
iptables -A FORWARD  -s 172.16.1.0/24   -d  ! $vlan1,$vlan2,$vlan3 -j ACCEPT

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2007-07-20 08:14 |只看该作者
分开3条写,你这样写条目之间是“与”关系,根本无法匹配。

论坛徽章:
0
3 [报告]
发表于 2007-07-20 09:40 |只看该作者
原帖由 ssffzz1 于 2007-7-20 08:14 发表
分开3条写,你这样写条目之间是“与”关系,根本无法匹配。



我是考虑到分开三条写 又会跟策略有冲突

第一条: iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan1 -j ACCEPT
第二条: iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan2 -j ACCEPT
第三条: iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan3 -j ACCEPT

上面分开写的情况会出现,第一条已经允许了 除了vlan1的forward全部通行。 那我的第二条策略已经不会再起作用了,去往vlan2的数据包还是不会被拦截。

(不知道是不是我上述理解错误,麻烦指点)

论坛徽章:
0
4 [报告]
发表于 2007-07-20 16:14 |只看该作者
不用一句话就直接DROP得了,用一句话的目的不就是想更方便的实现吗?
第一条: iptables -A FORWARD  -s 172.16.1.0/24  -d  $vlan1 -j DROP
第二条: iptables -A FORWARD  -s 172.16.1.0/24  -d  $vlan2 -j DROP
第三条: iptables -A FORWARD  -s 172.16.1.0/24  -d  $vlan3 -j DROP

[ 本帖最后由 wysilly 于 2007-7-20 16:16 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-07-20 16:18 |只看该作者
原帖由 cmhuaer 于 2007-7-20 09:40 发表



我是考虑到分开三条写 又会跟策略有冲突

第一条: iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan1 -j ACCEPT
第二条: iptables -A FORWARD  -s 172.16.1.0/24  -d   ! $vlan2 -j ACCEPT
...



应该是通过FORWARD的数据会逐个匹配规则的,第一条通过了,会继续匹配第二条,这样知道所有规则结束,如果还没有匹配的按照-P规则执行。这样设可以达到你的效果

论坛徽章:
0
6 [报告]
发表于 2007-07-20 16:20 |只看该作者
原帖由 wysilly 于 2007-7-20 16:14 发表
不用一句话就直接DROP得了,用一句话的目的不就是想更方便的实现吗?
第一条: iptables -A FORWARD  -s 172.16.1.0/24  -d  $vlan1 -j DROP
第二条: iptables -A FORWARD  -s 172.16.1.0/24  -d  $vlan2 -j  ...



向上面这样,-P规则accept,这3个drop,这样多方便,干吗要反着?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
7 [报告]
发表于 2007-07-20 16:41 |只看该作者
原帖由 zhy0414 于 2007-7-20 16:18 发表



应该是通过FORWARD的数据会逐个匹配规则的,第一条通过了,会继续匹配第二条,这样知道所有规则结束,如果还没有匹配的按照-P规则执行。这样设可以达到你的效果



不是这样的。我见到的所有的ACL的匹配规则都是这样的:
1、首先顺序匹配。
2、当和一条规则匹配后,就执行该规则的动作。当然打标记之类的除外,这里指的是DROP或ACCEPT等。并且后续的规则不再匹配。
3、如果没有匹配成功,则执行默认动作。

论坛徽章:
0
8 [报告]
发表于 2007-07-20 16:56 |只看该作者
跟我的问题有点像哦。如果不改默认策略,有什么解决办法?

论坛徽章:
0
9 [报告]
发表于 2007-07-21 09:38 |只看该作者
是否可以使用CIDR?汇聚一个4个C的超网,这样的话,你的192.168.0.x,1.x,2.x,3.x都会在匹配内。
iptables -A FORWARD  -s 172.16.1.0/24  -d   ! 192.168.0.0/22  -j ACCEPT

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
10 [报告]
发表于 2007-07-21 11:08 |只看该作者
原帖由 alexann 于 2007-7-21 09:38 发表
是否可以使用CIDR?汇聚一个4个C的超网,这样的话,你的192.168.0.x,1.x,2.x,3.x都会在匹配内。
iptables -A FORWARD  -s 172.16.1.0/24  -d   ! 192.168.0.0/22  -j ACCEPT



理论上完全可以的。实际没验证过,应该没问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP