nftables: مزید پیچیدہ قواعد
جب ufw کافی نہ رہے: nftables ٹیبلز اور چینز کی ساخت، تیار اور کام کرنے والا کنفیگ، ایڈریس سیٹس، ریٹ لمیٹنگ، اور پورٹ فارورڈنگ۔
اپ ڈیٹ 23 اگست، 2026
nftables وہی کرنل میکانزم ہے جس پر ufw کام کرتا ہے۔ آپ کو اسے براہِ راست استعمال کرنا چاہیے جب آپ کو نامزد ایڈریس سیٹس، ریٹ لِمٹنگ، ہر انٹرفیس کے لیے مختلف پالیسیاں، یا پورٹ فارورڈنگ کی ضرورت ہو — یعنی جب آپ کے قواعد "ایک پورٹ کی اجازت دیں" سے آگے بڑھ جائیں۔
آپ کو دونوں ٹولز بیک وقت استعمال کرنے کی ضرورت نہیں: سوئچ کرنے سے پہلے ufw کو ufw disable کے ذریعے بند کریں، ورنہ قواعد آپس میں ٹکرائیں گے اور ڈی بگنگ کے دوران آپ کو الجھن میں ڈالیں گے۔
ساخت
قواعد ٹیبلز میں رہتے ہیں، ٹیبلز چینز پر مشتمل ہوتے ہیں، اور چینز قواعد رکھتی ہیں۔ ایک چین پیکٹ پروسیسنگ مرحلے (input، forward، output) سے منسلک ہوتی ہے اور اس کی ایک ڈیفالٹ پالیسی ہوتی ہے۔
apt install -y nftables
systemctl enable --now nftables
nft list ruleset
کام کرنے والی کنفگ
فائل /etc/nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
set admins {
type ipv4_addr
elements = { 203.0.113.5, 198.51.100.7 }
}
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
ct state invalid drop
ip protocol icmp icmp type echo-request limit rate 5/second accept
tcp dport 22 ip saddr @admins accept
tcp dport 22 ct state new limit rate 6/minute accept
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
لاگو کریں اور محفوظ کریں:
nft -c -f /etc/nftables.conf
nft -f /etc/nftables.conf
systemctl restart nftables
-c فلیگ صرف نحو چیک کرتا ہے، قواعد لاگو نہیں کرتا۔ اسے ہمیشہ استعمال کریں: ٹائپو کے ساتھ drop پالیسی رسائی منقطع کر دیتی ہے، اور آپ کو /hosting/vds/m/<id> پینل میں کنسول کے ذریعے دوبارہ اندر آنا پڑے گا۔
ایڈریس سیٹس اور ریٹ لِمٹنگ
نامزد سیٹ قواعد دوبارہ لوڈ کیے بغیر موقع پر ہی ایڈٹ کیا جاتا ہے:
nft add element inet filter admins { 192.0.2.10 }
nft delete element inet filter admins { 198.51.100.7 }
nft list set inet filter admins
ٹائم آؤٹ کے ساتھ ڈائنامک سیٹ حسبِ ضرورت بلاکس کے لیے مفید ہے:
set blocked {
type ipv4_addr
flags timeout
timeout 1h
}
فارورڈنگ اور ایڈریس کی تبدیلی
اس کی ضرورت ہوتی ہے اگر اندر کوئی کنٹینر یا ٹنل چل رہا ہو:
table ip nat {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 8443 dnat to 10.10.0.2:443
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "eth0" masquerade
}
}
عام غلطیاں
| غلطی | نتیجہ | حل |
|---|---|---|
ct state established قاعدہ نہ ہونا | باہر جانے والی درخواستوں کے جوابات منقطع ہو جاتے ہیں | اسے پہلے قاعدے کے طور پر شامل کریں |
iif lo accept بھول جانا | لوکل سروسز اور ڈیٹا بیسز خراب ہو جاتے ہیں | لوپ بیک انٹرفیس کی اجازت دیں |
| قواعد لاگو کیے گئے مگر محفوظ نہیں کیے گئے | ری بوٹ کے بعد سب کچھ کھلا رہتا ہے | /etc/nftables.conf میں لکھیں |
| ufw اور nftables اکٹھے | غیر متوقع نتیجہ | صرف ایک ٹول رکھیں |
نیا رول سیٹ ایک الگ سیشن میں ٹیسٹ کریں، اپنا کام کرتا ہوا سیشن بند کیے بغیر۔ ایک آسان حفاظتی اقدام: بیک گراؤنڈ میں
sleep 300 && nft flush ruleset— اگر آپ خود کو لاک آؤٹ کر لیں تو رسائی خودبخود واپس آ جائے گی۔
اگر آپ کو ان تفصیلات کی ضرورت نہیں، تو ufw پر واپس جائیں: یہ زیادہ تر کاموں کا احاطہ کرتا ہے۔