网关+网桥+ iptables CLASSIFY的问题

sesame0816
网关+网桥+ iptables CLASSIFY的问题

服务器有3块网卡,eth1和eth2组成网桥br0,br0与eth0做成了nat网关

现在的问题是tc没有办法在eth1和eth2上使用,因为tc filter(用的是iptables CLASSIFY) + HTB + bridge必须要ip_forward=0能正常使用,否则打标记无效,而ip_forward=0,则连接eth0的局域网不能上网。

我想问的是:这个ip_forward能不能指定对应于某个网卡,也就是说,不同的网卡可以有不同的ip_forward。多谢!

platinum
[quote]原帖由 [i]sesame0816[/i] 于 2008-3-29 21:43 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6536875&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
因为tc filter(用的是iptables CLASSIFY) + HTB + bridge必须要ip_forward=0能正常使用[/quote]
可能问题在这里
为什么必须 =0
是有文档介绍,还是你自己试验的结果
如果是后者,那么是不是你的测试方法有问题或者碰巧让你感觉结果如此

ssffzz1
ip_forward=0

在不用桥接时没有这个限制啊。桥接的时候没有试验过。不过你打标记的接口此时不应该用eth1 eth2了,因为他们已经是二层接口了。此时应该针对br口做标记操作,不知道你是怎么试验的。

sesame0816
[quote]原帖由 [i]platinum[/i] 于 2008-3-29 23:47 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6536942&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
是有文档介绍,还是你自己试验的结果
[/quote]

我试验过, ip_forward=1的情况下,对eth1和eth2作流量限制无效,对eth0是有效的,然后我就google,找到这篇文[url]http://www.mail-archive.com/lartc@mailman.ds9a.nl/msg09372.html[/url]
上面有一句In short, "tc filter" + htb + bridging works only with ip_forward off.

[quote]原帖由 [i]ssffzz1[/i] 于 2008-3-30 09:37 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6537452&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
ip_forward=0

在不用桥接时没有这个限制啊。桥接的时候没有试验过。不过你打标记的接口此时不应该用eth1 eth2了,因为他们已经是二层接口了。此时应该针对br口做标记操作,不知道你是怎么试验的。 [/quote]
做过,无效

[[i] 本帖最后由 sesame0816 于 2008-3-30 12:09 编辑 [/i]]

ssffzz1
哦,你是对eth1和eth2之间的流量做限制啊。

这个应该是无效的,因为是二层接口。

platinum
你是在 POSTROUTING 链做的吗?
换成 PREROUTING 试试,因为 PREROUTING 的 hook 点更靠前,它位于 ip_forward 之前,也许不会受到它的影响

sesame0816
[quote]原帖由 [i]platinum[/i] 于 2008-3-30 13:59 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6537531&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
你是在 POSTROUTING 链做的吗?
换成 PREROUTING 试试,因为 PREROUTING 的 hook 点更靠前,它位于 ip_forward 之前,也许不会受到它的影响 [/quote]

在PREROUTING中试过了,依旧没有效果,已经全部换成网关形式了,不搞了 呵呵

platinum
为什么一定要用 iptables 来做呢?

sesame0816
[quote]原帖由 [i]platinum[/i] 于 2008-3-30 16:08 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6537580&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
为什么一定要用 iptables 来做呢? [/quote]

因为需要l7模块 :emn22:

platinum
[quote]原帖由 [i]sesame0816[/i] 于 2008-3-30 19:50 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6537663&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]


因为需要l7模块 :emn22: [/quote]
l7 的限速必须用 iptables 吗?

sesame0816
[quote]原帖由 [i]platinum[/i] 于 2008-3-30 21:12 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6537716&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]

l7 的限速必须用 iptables 吗? [/quote]


我只知道iptables + tc,还有什么办法,望版主指教?hashlimit?

platinum
tc 有 qdisc、class 和 filter
你用 iptables 的 CLASSIFY 仅仅是替代了 tc 的 filter,为什么不用 tc 自己的功能?

heizi_liu
看了你的贴子,如果没有说错的话,你应该是想把eth1和eth2做双wan口,然后eth0是你的局域网。是吗?
你如果想控制你eth1<->eth2的流量,那我感觉你用上面的方法我想是实现不了的,但是eth1<-->eth0,eth2<-->eth0,是没有问题的!

heizi_liu
提示一下:可以结合ebtables一起做!

sesame0816
[quote]原帖由 [i]heizi_liu[/i] 于 2008-3-31 14:23 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6538456&ptid=987162][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
看了你的贴子,如果没有说错的话,你应该是想把eth1和eth2做双wan口,然后eth0是你的局域网。是吗?
你如果想控制你eth1eth2的流量,那我感觉你用上面的方法我想是实现不了的,但是eth1eth0,eth2eth0,是没有问 ... [/quote]


这个只是在实验室做试验,我是想在eth0和eth2后面接lan,用网桥是不想改变网络的拓扑结构。



                           |------------eth0---------lan 1  
    出口                  |
----------------eth1     服务器    |
                     |     |
                     |     |------------eth2---------lan 2
                     |                       |
                     -------br0---------