انتشار فیلتر بسته nftables 1.0.0

nftables 1.0.0، یک چارچوب فیلترینگ بسته که رابط‌های فیلترینگ بسته را برای IPv4، IPv6، ARP و پل‌های شبکه یکپارچه می‌کند، منتشر شده است (به عنوان جایگزینی برای iptables، ip6table، arptables و ebtables). تغییرات مورد نیاز برای nftables 1.0.0 در هسته گنجانده شده است. Linux ۵.۱۳ تغییر قابل توجه در شماره نسخه با هیچ تغییر اساسی همراه نیست، بلکه صرفاً نتیجه ادامه متوالی شماره‌گذاری در نماد اعشاری است (نسخه قبلی ۰.۹.۹ بود).

بسته nftables شامل اجزای فیلتر بسته است که در فضای کاربر عمل می‌کنند، در حالی که کار در سطح هسته توسط زیرسیستم nf_tables که بخشی از هسته است، ارائه می‌شود. Linux از زمان انتشار نسخه ۳.۱۳، تنها یک رابط عمومی مستقل از پروتکل در سطح هسته ارائه شده است که قابلیت‌های اولیه برای استخراج داده‌ها از بسته‌ها، انجام عملیات داده و کنترل جریان را فراهم می‌کند.

خودِ قوانین فیلترینگ و کنترل‌کننده‌های مختص پروتکل در فضای کاربر به بایت‌کد کامپایل می‌شوند، پس از آن این بایت‌کد با استفاده از رابط Netlink در هسته بارگذاری شده و در هسته به صورت خاصی اجرا می‌شود. ماشین مجازییادآور BPF (فیلترهای بسته برکلی). این رویکرد امکان کاهش قابل توجه اندازه کد فیلترینگ در حال اجرا در سطح هسته را فراهم می‌کند و تمام تجزیه و تحلیل قوانین و منطق پروتکل را به فضای کاربر منتقل می‌کند.

نوآوری های اصلی:

  • پشتیبانی از عنصر ماسک "*" به لیست های مجموعه اضافه شده است، که برای هر بسته ای که تحت سایر عناصر تعریف شده در مجموعه قرار نمی گیرند فعال می شود. جدول x { فهرست مسدود نقشه { نوع ipv4_addr : حکم رای پرچم‌های فاصله عناصر = { 192.168.0.0/16 : قبول، 10.0.0.0/8 : پذیرش، * : رها کردن } } زنجیره y { نوع فیلتر قلاب اولویت پیش‌روتینگ 0; پذیرش سیاست ip sadr vmap @blocklist } }
  • امکان تعریف متغیرها از خط فرمان با استفاده از گزینه "--define" وجود دارد. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; کاهش سیاست؛ } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • در لیست های نقشه، استفاده از عبارات ثابت (stateful) مجاز است: جدول inet filter { map portmap { type inet_service : verdict counter element = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; پذیرش سیاست iif vmap { "lo" : jump wan_input } }
  • دستور «list hooks» برای نمایش فهرستی از کنترل‌کننده‌ها برای یک خانواده بسته داده شده اضافه شد: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_ok input] {-0000000100 IP زنجیره ای AB [NF_TABLES] +0000000300 زنجیره ای inet mz [nf_tables]} قلاب به جلو {-0000000225 selinux_ipv4_forward 0000000000 IP زنجیره ای ac [nf_tables]} خروجی {-0000000225 selinux_ipv4_outouth _Postroute}}
  • بلوک‌های صف به عبارات jhash، symhash و numgen اجازه می‌دهند تا بسته‌ها را در صف‌های فضای کاربر توزیع کنند. ... صف به symhash mod 65536 ... صف پرچم دور زدن به numgen inc mod 65536 ... صف به jhash oif. متا مارک mod 32 "queue" همچنین می تواند با لیست های نقشه ترکیب شود تا یک صف در فضای کاربر بر اساس کلیدهای دلخواه انتخاب شود. ... صف پرچم های دور زدن نقشه oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • این امکان وجود دارد که متغیرهایی را که شامل یک لیست مجموعه هستند در چندین نقشه گسترش دهید. تعریف رابط ها = { eth0، eth1 } جدول ip x { زنجیره y { نوع اولویت ورودی قلاب فیلتر 0; پذیرش سیاست iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; پذیرش سیاست iifname vmap { "lo" : accept, "eth0" : drop, "eth1" : drop } }
  • ترکیب vmaps (نقشه حکم) در فواصل زمانی مجاز است: # nft add rule xy tcp dport . ip sadr vmap { 1025-65535 . 192.168.10.2 : قبول }
  • سینتکس نگاشت‌های NAT ساده‌تر شده است. تعیین محدوده آدرس اکنون مجاز است: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } یا موارد صریح آدرس های IP و پورت‌ها: … dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } یا ترکیبی از رنج‌های IP و پورت‌ها: … dnat to ip saddr .tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

منبع: opennet.ru

خرید هاست قابل اعتماد برای سایت های دارای حفاظت DDoS، سرورهای VPS VDS 🔥 خرید هاستینگ معتبر با محافظت در برابر حملات DDoS، سرورهای VPS و VDS | ProHoster