Ubuntu 24.04
Sponsored Link

Nftables : मूल परिचालन2024/06/18

 

यह Nftables का मूल संचालन है।

[1]

कई स्तरों की नेटवर्किंग को एनएफटीएबल्स आर्किटेक्चर पर परिवारों में निम्नानुसार सारगर्भित किया गया है।

Family विवरण
ip यह परिवार IPv4 ट्रैफ़िक/पैकेट संसाधित करता है। विरासत [iptables] समतुल्य है।
ip6 यह परिवार IPv6 ट्रैफ़िक/पैकेट को संसाधित करता है। विरासत [ip6tables] समतुल्य है।
inet यह परिवार IPv4 और IPv6 ट्रैफ़िक/पैकेट दोनों को दोहरे स्टैक समर्थन के रूप में संसाधित करता है।
arp यह परिवार कर्नेल द्वारा किसी भी L3 हैंडलिंग से पहले ARP-स्तरीय ट्रैफ़िक को संसाधित करता है। विरासत [arptables] समतुल्य है।
bridge यह परिवार पुलों को पार करने वाले ट्रैफ़िक/पैकेट को संसाधित करता है। विरासत [ebtables] समतुल्य है।
हालाँकि इसके लिए कोई nf_conntrack एकीकरण नहीं है।
netdev यह परिवार दूसरों से अलग है क्योंकि इसका उपयोग एकल नेटवर्क इंटरफ़ेस से जुड़ी बेस चेन बनाने के लिए किया जाता है। ऐसी बेस चेन निर्दिष्ट इंटरफ़ेस पर सभी नेटवर्क ट्रैफ़िक को देखती हैं, जिसमें L2 या L3 प्रोटोकॉल के बारे में कोई धारणा नहीं होती है। इस परिवार के बराबर कोई विरासत ***tables नहीं है।

[2]
nftables पर डिफ़ॉल्ट रूप से कोई फ़िल्टरिंग नियम नहीं है, इसलिए तालिकाएँ बनाने से शुरुआत करें।
⇒ nft add table [family] [table name]
# नियम-सेट दिखाएं (डिफ़ॉल्ट रूप से कोई फ़िल्टरिंग नियम नहीं)

root@dlp:~#
nft list ruleset

table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
        }
}

# उपरोक्त डिफ़ॉल्ट नियम को फ्लश करें और [inet] परिवार में [firewall01] तालिका जोड़ें

root@dlp:~#
nft flush ruleset

root@dlp:~#
nft add table inet firewall01

# [inet] परिवार की तालिकाएँ दिखाएँ

root@dlp:~#
nft list tables inet

table inet firewall01
# नियम-सेट दिखाएँ

root@dlp:~#
nft list ruleset

table inet firewall01 {
}


# किसी तालिका को हटाने के लिए, निम्नानुसार चलाएँ

root@dlp:~#
nft delete table inet firewall01

[3]
इसके बाद, तालिकाओं में चेन जोड़ें।
⇒ nft add chain [family] [table name] [chain name] { type [type] hook [hook} priority [priority] \; }
उपलब्ध [type]s और [hook]s इस प्रकार हैं। [priority] के लिए, यह सामान्य पूर्णांक मान है और छोटा मान उच्च प्राथमिकता है।
Type के साथ प्रयोग संभव है
filter all [family], [hook]
route [ip], [ip6], [inet] family
[output] hook
nat [ip], [ip6], [inet] family
[input], [output], [prerouting]. [postrouting] hook

Hook के साथ प्रयोग संभव है
input [ip], [ip6], [inet], [apr], [bridge] family
[filter], [nat] type
output [ip], [ip6], [inet], [apr], [bridge] family
[filter], [route], [nat] type
forward [ip], [ip6], [inet], [bridge] family
[filter] type
prerouting [ip], [ip6], [inet], [bridge] family
[filter], [nat] type
postrouting [ip], [ip6], [inet], [bridge] family
[filter], [nat] type
ingress [netdev] family
[filter] type

# [filter] प्रकार, [input] हुक, [0] प्राथमिकता के साथ
# add [filter_INPUT] chain to [firewall01] table in [inet] family

root@dlp:~#
nft add chain inet firewall01 filter_INPUT { type filter hook input priority 0 \;}
root@dlp:~#
nft list ruleset

table inet firewall01 {
        chain filter_INPUT {
                type filter hook input priority filter; policy accept;
        }
}


# किसी श्रृंखला को हटाने के लिए, निम्नानुसार चलाएँ

root@dlp:~#
nft delete chain inet firewall01 filter_INPUT

root@dlp:~#
nft list ruleset

table inet firewall01 {
}
[4] टेबल और चेन जोड़ने के बाद, उनके लिए नियम निर्धारित करें।
root@dlp:~#
nft list ruleset

table inet firewall01 {
        chain filter_INPUT {
                type filter hook input priority filter; policy accept;
        }
}

# उदाहरण के लिए, पैकेट को अनुमति देने के लिए एक नियम जोड़ें जो बताता है कि कनेक्शन [related, establised]

root@dlp:~#
nft add rule inet firewall01 filter_INPUT ct state related,established accept
root@dlp:~#
nft list table inet firewall01

table inet firewall01 {
        chain filter_INPUT {
                type filter hook input priority filter; policy accept;
                ct state established,related accept
        }
}

# उदाहरण के लिए, पैकेट को लूपबैक इंटरफ़ेस की अनुमति देने के लिए एक नियम जोड़ें

root@dlp:~#
nft add rule inet firewall01 filter_INPUT iif lo accept
root@dlp:~#
nft list table inet firewall01

table inet firewall01 {
        chain filter_INPUT {
                type filter hook input priority filter; policy accept;
                ct state established,related accept
                iif "lo" accept
        }
}

# उदाहरण के लिए, ऊपर दिए गए अनुमति प्राप्त पैकेटों को छोड़कर अन्य पैकेटों को छोड़ने का नियम जोड़ें

root@dlp:~#
nft add rule inet firewall01 filter_INPUT drop
root@dlp:~#
nft -a list table inet firewall01

table inet firewall01 { # handle 14
        chain filter_INPUT { # handle 1
                type filter hook input priority filter; policy accept;
                ct state established,related accept # handle 2
                iif "lo" accept # handle 3
                drop # handle 4
        }
}

# उदाहरण के लिए, पैकेट को [new, untracked] कनेक्शन स्थिति के साथ 22 पोर्ट पर अनुमति देने के लिए लाइन [हैंडल 3] के आगे एक नियम जोड़ें

root@dlp:~#
nft add rule inet firewall01 filter_INPUT handle 3 tcp dport 22 ct state { new,untracked } accept
root@dlp:~#
nft -a list table inet firewall01
table inet firewall01 { # handle 14
        chain filter_INPUT { # handle 1
                type filter hook input priority filter; policy accept;
                ct state established,related accept # handle 2
                iif "lo" accept # handle 3
                tcp dport 22 ct state { new, untracked } accept # handle 6
                drop # handle 4
        }
}

#उदाहरण के लिए, लाइन [हैंडल 6] के आगे एक नियम जोड़ें ताकि पैकटेस को अनुमति मिल सके कि मेटाडेटा [icmp,ipv6-icmp] है

root@dlp:~#
nft add rule inet firewall01 filter_INPUT handle 6 meta l4proto { icmp,ipv6-icmp } accept
root@dlp:~#
nft -a list table inet firewall01

table inet firewall01 { # handle 14
        chain filter_INPUT { # handle 1
                type filter hook input priority filter; policy accept;
                ct state established,related accept # handle 2
                iif "lo" accept # handle 3
                tcp dport 22 ct state { new, untracked } accept # handle 6
                meta l4proto { icmp, ipv6-icmp } accept # handle 8
                drop # handle 4
        }
}


# किसी नियम को हटाने के लिए, उस पंक्ति की [हैंडल] संख्या निर्दिष्ट करें जिसे आप हटाना चाहते हैं और नीचे दिए गए आदेश को चलाएँ

root@dlp:~#
nft delete rule inet firewall01 filter_INPUT handle 8
root@dlp:~#
nft -a list table inet firewall01

table inet firewall01 { # handle 14
        chain filter_INPUT { # handle 1
                type filter hook input priority filter; policy accept;
                ct state established,related accept # handle 2
                iif "lo" accept # handle 3
                tcp dport 22 ct state { new, untracked } accept # handle 6
                drop # handle 4
        }
}
मिलान सामग्री