iptables vs nftables. Ո՞րն է տարբերությունը:


Երկար ժամանակ iptables-ը սիրված գործիք է եղել sysadmin-ների համար: Բայց nftables խորհուրդ են տրվում այս օրերին: Կարդացեք՝ պարզելու համար, թե ինչու:

Linux-ի յուրաքանչյուր ադմինիստրատոր, անկասկած, աշխատել է iptables-ի հետ՝ վաղեմի Linux firewall-ի հետ, որը մեզ լավ է ծառայել երկար տարիներ: Բայց դուք կարող եք դեռ ծանոթ չլինեք nftable-ներին, նորեկը, որը պետք է մեզ առաջարկի շատ անհրաժեշտ թարմացումներ և, ի վերջո, փոխարինի ծերացող iptable-ները:

Ինչու nftables փոխարեն iptables:

nftables-ը մշակվել է Netfilter-ի կողմից՝ նույն կազմակերպությունը, որը ներկայումս պահպանում է iptables: Այն ստեղծվել է որպես միջոց iptables-ի հետ կապված խնդիրների, մասնավորապես մասշտաբայնության և կատարողականի համար:

Բացի նոր շարահյուսությունից և որոշ թարմացումներից, դուք կգտնեք, որ այն գործում է շատ նման իր նախորդին:

Նոր օգտակար ծրագրի մեկ այլ հիմնավորումն այն է, որ iptables շրջանակը մի փոքր խճճվել է iptables-ի, ip6tables-ի, arptable-ի և ebtable-ների հետ, որոնք բոլորն էլ տարբեր, բայց նման գործառույթներ են ապահովում:

Օրինակ, պարզապես անարդյունավետ է ստեղծել IPv4 կանոններ iptables-ում և IPv6 կանոններ ip6tables-ում և պահպանել երկուսը համաժամեցված: Nftables-ը նպատակ ունի փոխարինել այս բոլորին և լինել կենտրոնացված լուծում:

Չնայած nftables-ը ներառվել է Linux միջուկում 2014 թվականից, այն վերջերս ավելի մեծ տարածում է գտել, քանի որ ընդունումը դառնում է ավելի լայն: Փոփոխությունները դանդաղ են ընթանում Linux-ի աշխարհում, և հնացած կոմունալ ծառայությունները հաճախ պահանջում են մի քանի տարի կամ ավելի երկար, որպեսզի փուլ առ փուլ հանվեն հօգուտ իրենց արդիականացված գործընկերների:

Nftables-ը դառնում է ընտրության առաջարկվող firewall-ը, և Linux-ի ադմինիստրատորներին պետք է թարմացնել իրենց ռեպերտուարը: Այժմ հիանալի ժամանակ է սովորելու nftables և թարմացնելու ձեր գոյություն ունեցող iptables կազմաձևերը:

Եթե դուք տարիներ շարունակ օգտագործում եք iptable-ները և այնքան էլ ոգևորված չեք բոլորովին նոր օգտակար ծրագիր սովորելու գաղափարով, մի անհանգստացեք, մենք ձեզ ծածկել ենք այս ուղեցույցում: Այս հոդվածում մենք կանդրադառնանք nftables-ի և iptables-ի միջև եղած տարբերություններին և ցույց կտանք օրինակներ՝ ձեր firewall-ի կանոնները կարգավորելու նոր nftables շարահյուսության մեջ:

Շղթաներ և կանոններ nftable-ներում

iptables-ում կան երեք լռելյայն շղթաներ՝ մուտքագրում, ելք և առաջ: Այս երեք «շղթաները» (և այլ շղթաներ, եթե ունեք որևէ կազմաձև) պահում են «կանոններ» և iptables-ն աշխատում է՝ ցանցի երթևեկությունը համապատասխանեցնելով շղթայի կանոնների ցանկին: Եթե հետազոտվող երթևեկությունը չի համապատասխանում որևէ կանոնի, շղթայի լռելյայն քաղաքականությունը կօգտագործվի երթևեկության համար (այսինքն՝ ԸՆԴՈՒՆԵԼ, ԿԱՌՆԵԼ):

Nftables-ն աշխատում է սրա նման՝ նաև «շղթաներով» և «կանոններով»: Այնուամենայնիվ, այն չի սկսվում որևէ բազային շղթայով, ինչը մի փոքր ավելի ճկուն է դարձնում կազմաձևումը:

iptables-ի անարդյունավետության ոլորտներից մեկն այն է, որ ցանցի բոլոր տվյալները պետք է անցնեին վերոհիշյալ շղթաներից մեկը կամ մի քանիսը, նույնիսկ եթե երթևեկությունը չէր համապատասխանում որևէ կանոնի: Անկախ նրանից, թե դուք կարգավորել եք շղթաները, թե ոչ, iptables-ը դեռ ստուգում է ձեր ցանցի տվյալները դրանց համեմատ:

Nftable-ների տեղադրում Linux-ում

Nftables-ը հասանելի է բոլոր հիմնական Linux բաշխումներում, և դուք կարող եք հեշտությամբ տեղադրել այն՝ օգտագործելով ձեր բաշխումների փաթեթների կառավարիչը:

Ubuntu-ի կամ Debian-ի վրա հիմնված բաշխման վրա կարող եք օգտագործել այս հրամանը.

sudo apt install nftables

Համոզվելու համար, որ nftables-ը ավտոմատ կերպով սկսվում է, երբ ձեր համակարգը վերագործարկվի.

sudo systemctl enable nftables.service

Շարահյուսական տարբերություն iptable-ի և nftable-ի միջև

Nftables-ն ունի տարբեր և շատ ավելի պարզ շարահյուսություն, քան iptables-ը: Եկեք անկեղծ լինենք, iptables-ի շարահյուսությունը միշտ անհասկանալի էր և սովորելու համար լրացուցիչ ջանքեր պահանջվեցին: Բարեբախտաբար նրանց համար, ովքեր արտագաղթում են iptables-ից, nftables-ը դեռ ընդունում է հին շարահյուսությունը:

Կարող եք նաև օգտագործել iptables-translate կոմունալը, որը կընդունի iptables հրամանները և կվերափոխի դրանք nftables համարժեքի: Սա հեշտ միջոց է տեսնելու, թե ինչպես են տարբերվում երկու շարահյուսությունները:

Տեղադրեք iptables-translate-ը Ubuntu-ի և Debian-ի վրա հիմնված բաշխման վրա այս հրամանով.

sudo apt install iptables-nftables-compat

Երբ այն տեղադրվի, դուք կարող եք փոխանցել ձեր iptables շարահյուսությունը iptables-translate հրամանին, և այն կվերադարձնի nftables համարժեք հրամանը:

Տեսնենք մի քանի օրինակներ, որպեսզի կարողանաք տեսնել, թե ինչպես են այս հրամանները տարբերվում միմյանցից:

Արգելափակել մուտքային կապերը

Այս հրամանը կարգելափակի մուտքային կապերը 192.168.2.1 IP հասցեից.

linux@handbook:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

Թույլատրել մուտքային SSH կապերը

Դիտարկենք ևս մի քանի օրինակներ՝ սովորական բաներ, որոնք սովորաբար մուտքագրում եք iptables-ում, երբ կարծրացնում եք Linux սերվերը:

linux@handbook:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

Թույլատրել մուտքային SSH կապերը հատուկ IP տիրույթից

Եթե ցանկանում եք թույլատրել մուտքային SSH միացումներ 192.168.1.0/24-ից.

linux@handbook:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

Թույլատրել MySQL կապերը eth0 ցանցային ինտերֆեյսի հետ

Ահա iptables-ի և nftable-ների շարահյուսությունը.

linux@handbook:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

Թույլատրել մուտքային HTTP և HTTPS տրաֆիկը

Որոշակի տիպի f տրաֆիկ թույլատրելու համար, ահա երկու հրամանների շարահյուսությունը.

linux@handbook:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

Ինչպես տեսնում եք այս օրինակներից, շարահյուսությունը դեռ բավականին նման է iptables-ին, բայց հրամանները մի փոքր ավելի ինտուիտիվ են:

Մուտքագրում nftable-ներով

Վերևում գտնվող nft հրամանի օրինակներում առկա «counter» տարբերակը nftables-ին ասում է, թե քանի անգամ է դիպչել կանոնին, ինչպես iptable-ն էր անում լռելյայն:

Nftable-ներում դրանք ընտրովի են և պետք է նշվեն:

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables-ն ունի ներկառուցված ընտրանքներ՝ ձեր կոնֆիգուրացիան արտահանելու համար: Այն ներկայումս աջակցում է XML և JSON:

nft export xml

Եզրակացություն

Այս հոդվածում ես բացատրեցի, թե ինչու է nftables-ը նոր առաջարկվող ընտրությունը, երբ խոսքը վերաբերում է Linux firewalls-ին: Ես նաև թվարկել եմ հին iptable-ների և նոր nftable-ների միջև շատ տարբերություններ, ներառյալ դրանց ֆունկցիոնալությունը և շարահյուսությունը:

Այս ուղեցույցը ցույց է տվել, թե ինչու պետք է մտածել nftables-ի թարմացման մասին, և ինչպես սկսել նոր շարահյուսության հետ, որին դուք պետք է ծանոթանաք՝ ձեր հին iptables կանոնները հաջողությամբ թարմացնելու համար:

Եթե ունեք հարցեր կամ առաջարկություններ, խնդրում եմ տեղեկացրեք ինձ մեկնաբանություններում: