免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dreamever
打印 上一主题 下一主题

[网络管理] linux网桥做流量控制时使用iptables的MARK问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-06-27 22:54 |只看该作者
我就是把楼主的匹配的源地址删掉了再执行的结果呀。

楼主写的是

  1. iptables -t mangle -F
  2. iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j MARK --set-mark 11
  3. iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j RETURN
复制代码

这个MARK语句我执行了就是第一个结果

按后我把MARK语句改为

  1. iptables -t mangle -F
  2. iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 11
  3. iptables -t mangle -A PREROUTING -i eth2 -j RETURN
复制代码

执行的就是第二个结果。


我贴出的是第二次结果时的mangle表内容

[ 本帖最后由 ssmarine 于 2007-6-27 22:58 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2007-06-27 22:58 |只看该作者
汗~!

1、你按楼主的方法测试了,感觉不成功
2、你修改了,感觉成功了
3、我让你贴不成功时的 iptables 内容
4、你贴的是修改后的成功了时候的 iptables 内容
5、我给你解释了为什么要你贴不成功时的内容
6、你没明白我前面的 3、4、5 点……

论坛徽章:
0
13 [报告]
发表于 2007-06-27 23:01 |只看该作者
哦,找到楼主的错误了,-i eth2 -d xxx 写成了 -i eth2 -s xxx

论坛徽章:
0
14 [报告]
发表于 2007-06-27 23:02 |只看该作者
哦,这样呀。
第一次的内容在我执行第二次时已经变了,所以我就贴了第二次的。

第一次的结果是

  1. # Generated by iptables-save v1.2.11 on Sat Jun 23 01:22:41 2007
  2. *mangle
  3. :PREROUTING ACCEPT [6567:1283707]
  4. :INPUT ACCEPT [1896:139126]
  5. :FORWARD ACCEPT [4666:1144381]
  6. :OUTPUT ACCEPT [1984:213265]
  7. :POSTROUTING ACCEPT [6650:1357646]
  8. [0:0] -A PREROUTING -s 192.168.0.3 -i eth2 -j MARK --set-mark 0xb
  9. [0:0] -A PREROUTING -s 192.168.0.3 -i eth2 -j RETURN
  10. [1:48] -A PREROUTING -d 192.168.0.3 -i eth1 -j MARK --set-mark 0x16
  11. [1:48] -A PREROUTING -d 192.168.0.3 -i eth1 -j RETURN
  12. COMMIT
  13. # Completed on Sat Jun 23 01:22:41 2007

复制代码

这是我把MARK语句内容改回来再执行的结果

论坛徽章:
0
15 [报告]
发表于 2007-06-27 23:05 |只看该作者
前面的没有匹配到,所以当然也没 MARK,后面 tc 没看到 MARK 当然也不动作了
-s 改成 -d,PREROUTING 保持不变再试试看?

论坛徽章:
0
16 [报告]
发表于 2007-06-27 23:10 |只看该作者

  1. [root@localhost ~]# iptables-save -ct mangle
  2. # Generated by iptables-save v1.2.11 on Sat Jun 23 01:27:43 2007
  3. *mangle
  4. :PREROUTING ACCEPT [8832:1609351]
  5. :INPUT ACCEPT [2971:211400]
  6. :FORWARD ACCEPT [5856:1397751]
  7. :OUTPUT ACCEPT [3148:344661]
  8. :POSTROUTING ACCEPT [9004:1742412]
  9. [0:0] -A PREROUTING -d 192.168.0.3 -i eth2 -j MARK --set-mark 0xb
  10. [0:0] -A PREROUTING -d 192.168.0.3 -i eth2 -j RETURN
  11. [0:0] -A PREROUTING -d 192.168.0.3 -i eth1 -j MARK --set-mark 0x16
  12. [0:0] -A PREROUTING -d 192.168.0.3 -i eth1 -j RETURN
  13. COMMIT
  14. # Completed on Sat Jun 23 01:27:43 2007
  15. [root@localhost ~]# tc -s qdisc ls dev eth1
  16. qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
  17. Sent 1396 bytes 16 pkts (dropped 0, overlimits 0)

  18. qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
  19. Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

  20. qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
  21. Sent 1396 bytes 16 pkts (dropped 0, overlimits 0)

  22. [root@localhost ~]# tc -s qdisc ls dev eth1
  23. qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
  24. Sent 17690 bytes 200 pkts (dropped 0, overlimits 0)

  25. qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
  26. Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

  27. qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
  28. Sent 17690 bytes 200 pkts (dropped 0, overlimits 0)
复制代码

结果流量还是跑到默认的子类20上去了。

论坛徽章:
0
17 [报告]
发表于 2007-06-27 23:19 |只看该作者
就是我修改认为是正确后的流量,一段时间过后默认子类20还是会有几百个bytes的包。不知是为什么,应该是一个都没有啊。

  1. [root@localhost ~]# tc -s qdisc ls dev eth1
  2. qdisc htb 1: r2q 10 default 20 direct_packets_stat 0
  3. Sent 242169 bytes 1105 pkts (dropped 0, overlimits 556)

  4. qdisc sfq 10: parent 1:10 quantum 1514b perturb 10sec
  5. Sent 241861 bytes 1099 pkts (dropped 0, overlimits 0)

  6. qdisc sfq 20: parent 1:20 quantum 1514b perturb 10sec
  7. Sent 308 bytes 6 pkts (dropped 0, overlimits 0)

复制代码

论坛徽章:
0
18 [报告]
发表于 2007-06-27 23:20 |只看该作者
你又做错了
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth2 -s 90.0.11.66/32 -j RETURN
这个之前没有匹配到,是因为 -s 的问题,eth2 是内网网卡,来自内网的地址若没有 90.0.11.66 则不会匹配到
我是让你改成 -d 90.0.11.66,然后去访问 90.0.11.66 看看
当然,90.0.11.66 是一个随便外网地址,你可以改成其他有效外网地址测试

你上面的内容是
[0:0] -A PREROUTING -d 192.168.0.3 -i eth2 -j MARK --set-mark 0xb
[0:0] -A PREROUTING -d 192.168.0.3 -i eth2 -j RETURN
若用 192.168.0.3 做测试,那么应该沿用 -s 而不是 -d

二者改其一,要么改 IP,要么改 -s,你一起改了等于没改

论坛徽章:
0
19 [报告]
发表于 2007-06-27 23:27 |只看该作者
你是叫我匹配一个特定的外网地址,然后再去访问这个地址。看看子类10是否有流量,是不?
但是在我认为正确的做法里就是把匹配的地址删了,只要是访问外网的都会匹配的。和你的意思是一样的。

论坛徽章:
0
20 [报告]
发表于 2007-06-27 23:30 |只看该作者
原帖由 ssmarine 于 2007-6-27 23:27 发表于 19楼  
你是叫我匹配一个特定的外网地址,然后再去访问这个地址。看看子类10是否有流量,是不?
但是在我认为正确的做法里就是把匹配的地址删了,只要是访问外网的都会匹配的。和你的意思是一样的。

现在的目的不是要给楼主排错吗?我从始至终并没有否认你修改后的正确性啊……
楼主的 -s 应该写成 -d,这也就是为什么你第一次按照楼主的方法测试也一样失败的原因,我是想让你看到成功的例子啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP