Firewall mark classifier in tc(8) Linux Firewall mark classifier in tc(8)

tc-fw - فیلتر کنترل ترافیک بر اساس نشان فایروال (fwmark)


tc filter ... fw [ classid CLASSID ] [ action ACTION_SPEC ]

فیلتر fw امکان دسته‌بندی بسته‌ها را بر پایه fwmark که پیش‌تر توسط iptables تنظیم شده است، فراهم می‌کند. اگر مقدار ماسک‌شده‌ی fwmark با handle ماسک‌شده‌ی فیلتر مطابقت داشته باشد، فیلتر منطبق می‌شود. به‌طور پیش‌فرض، تمامی ۳۲ بیت handle و fwmark ماسک می‌شوند. iptables امکان نشانه‌گذاری بسته‌های تکی با هدف MARK یا کل اتصال‌ها با استفاده از CONNMARK را فراهم می‌سازد. مزیت استفاده از این فیلتر به‌جای انجام پردازش‌های سنگین توسط خود tc این است که از یک سو، نگهداری فیلترسازی و دسته‌بندی بسته‌ها در یک مکان مشترک و تطبیق احتمالی بسته تنها برای یک بار راحت‌تر خواهد بود، و از سوی دیگر، کاربرانی که با iptables آشنایی دارند اما با tc آشنا نیستند، برای افزودن QoS به پیکربندی‌های خود با دشواری کمتری روبرو خواهند شد.

هدایت بسته‌های منطبق به کلاسی که با CLASSID مشخص شده است.
اعمال یک اکشن از چارچوب عمومی اکشن‌ها بر روی بسته‌های منطبق.

برای نمونه، دستور فیلتر tc زیر را در نظر بگیرید:

tc filter add ... handle 6 fw classid 1:1

در صورتی که مقدار fwmark بسته برابر با 6 باشد، این فیلتر منطبق خواهد شد. دستور نمونه زیر در iptables بسته‌های ورودی به رابط eth0 را علامت‌گذاری می‌کند:

iptables -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 6

بیت‌های خاصی از fwmark بسته را می‌توان با استفاده از اکشن skbedit تنظیم کرد. به عنوان مثال، برای تنظیم تنها یک بیت از fwmark بدون تغییر دادن هیچ‌یک از بیت‌های دیگر:

tc filter add ... action skbedit mark 0x8/0x8

سپس می‌توان از فیلتر fw برای تطبیق روی این بیت با ماسک کردن handle استفاده کرد:

tc filter add ... handle 0x8/0x8 fw action drop

این قابلیت زمانی مفید است که بیت‌های مختلف fwmark دارای معانی متفاوتی باشند.

tc(8), iptables(8), iptables-extensions(8), tc-skbedit(8)

21 Oct 2015 iproute2