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 կանոնները հաջողությամբ թարմացնելու համար:
Եթե ունեք հարցեր կամ առաջարկություններ, խնդրում եմ տեղեկացրեք ինձ մեկնաբանություններում: