nftables பாக்கெட் வடிகட்டி வெளியீடு 1.0.3

IPv1.0.3, IPv4, ARP மற்றும் நெட்வொர்க் பிரிட்ஜ்களுக்கான (iptables, ip6table, arptables மற்றும் ebtables ஆகியவற்றை மாற்றுவதை நோக்கமாகக் கொண்ட) பாக்கெட் வடிகட்டி இடைமுகங்களை ஒருங்கிணைக்கும் பாக்கெட் வடிகட்டி nftables 6 வெளியிடப்பட்டது. nftables 1.0.3 வெளியீடு வேலை செய்ய தேவையான மாற்றங்கள் Linux 5.18 கர்னலில் சேர்க்கப்பட்டுள்ளன.

nftables தொகுப்பில் பயனர் இடத்தில் இயங்கும் பாக்கெட் வடிகட்டி கூறுகள் உள்ளன, அதே சமயம் கர்னல்-நிலை வேலை nf_tables துணை அமைப்பால் வழங்கப்படுகிறது, இது 3.13 வெளியீட்டிலிருந்து லினக்ஸ் கர்னலின் ஒரு பகுதியாக உள்ளது. கர்னல் நிலை ஒரு பொதுவான நெறிமுறை-சுயாதீன இடைமுகத்தை மட்டுமே வழங்குகிறது, இது பாக்கெட்டுகளிலிருந்து தரவைப் பிரித்தெடுப்பதற்கும், தரவு செயல்பாடுகளைச் செய்வதற்கும் மற்றும் ஓட்டக் கட்டுப்பாடுக்கும் அடிப்படை செயல்பாடுகளை வழங்குகிறது.

வடிகட்டுதல் விதிகள் மற்றும் நெறிமுறை-குறிப்பிட்ட ஹேண்ட்லர்கள் பயனர் இடத்தில் பைட்கோடாக தொகுக்கப்படுகின்றன, அதன் பிறகு இந்த பைட்கோடு Netlink இடைமுகத்தைப் பயன்படுத்தி கர்னலில் ஏற்றப்பட்டு, BPF (Berkeley Packet Filters) ஐ நினைவூட்டும் ஒரு சிறப்பு மெய்நிகர் இயந்திரத்தில் கர்னலில் செயல்படுத்தப்படுகிறது. இந்த அணுகுமுறையானது கர்னல் மட்டத்தில் இயங்கும் வடிகட்டுதல் குறியீட்டின் அளவைக் கணிசமாகக் குறைக்கவும், நெறிமுறைகளுடன் பணிபுரியும் நெறிமுறைகளைப் பாகுபடுத்தும் அனைத்து செயல்பாடுகளையும் பயனர் இடத்திற்கு நகர்த்தவும் உங்களை அனுமதிக்கிறது.

முக்கிய கண்டுபிடிப்புகள்:

  • தொகுப்பு பட்டியல்கள் இப்போது பிணைய இடைமுகப் பெயர்களை மாஸ்க் மூலம் பொருத்துவதை ஆதரிக்கின்றன, எடுத்துக்காட்டாக, “*” குறியீட்டைப் பயன்படுத்தி குறிப்பிடப்பட்டுள்ளது: டேபிள் இன்டெஸ்டிஃப்செட்ஸ் {set simple_wild { type ifname flags interval elements = { “abcdef*”, “othername”, “ppp0” } } சங்கிலி v4icmp { வகை வடிகட்டி ஹூக் உள்ளீடு முன்னுரிமை 0; கொள்கை ஏற்றுக்கொள்வது; iifname @simple_wild கவுண்டர் பாக்கெட்டுகள் 0 பைட்டுகள் 0 iifname { “abcdef*”, “eth0” } கவுண்டர் பாக்கெட்டுகள் 0 பைட்டுகள் 0 } }
  • செயல்பாட்டின் போது வெட்டும் செட்-லிஸ்ட் கூறுகளை தானாக ஒன்றிணைத்தல் செயல்படுத்தப்பட்டது. முன்னதாக, "தானாக ஒன்றிணைத்தல்" விருப்பம் அமைக்கப்பட்டபோது, ​​​​விதிகளை அறிவிக்கும் கட்டத்தில் ஒன்றிணைத்தல் மேற்கொள்ளப்பட்டது, ஆனால் இப்போது செயல்பாட்டின் போது புதிய கூறுகள் அதிகரிக்கும் போது இது செயல்படுகிறது. எடுத்துக்காட்டாக, அறிவிப்பு கட்டத்தில், பட்டியல் y { கொடிகள் இடைவெளி தானாக ஒன்றிணைக்கும் கூறுகள் = { 1.2.3.0, 1.2.3.255/1.2.3.0, 24, 3.3.3.3, 4.4.4.4-4.4.4.4 4.4.4.8 ip xy {3.3.3.4 -3.3.3.5, 1.2.3.0 } உறுப்புகள் = { 24-3.3.3.3, 3.3.3.5-4.4.4.4, 4.4.4.8-1.2.3.0 }

    ஏற்கனவே உள்ள வரம்பு உருப்படிகளுக்குள் வரும் தனிப்பட்ட உருப்படிகளை பட்டியலிலிருந்து அகற்றும்போது, ​​வரம்பு சுருக்கப்படும் அல்லது பிரிக்கப்படும்.

  • பல முகவரி மொழிபெயர்ப்பு (NAT) விதிகளை வரைபடப் பட்டியலில் இணைப்பதற்கான ஆதரவு விதிகள் மேம்படுத்தியில் சேர்க்கப்பட்டுள்ளது, இது “-o/—optimize” விருப்பம் குறிப்பிடப்படும்போது அழைக்கப்படுகிறது. எடுத்துக்காட்டாக, தொகுப்பு # cat ruleet.nft அட்டவணை ip x { chain y { type nat hook postrouting priority srcnat; கொள்கை வீழ்ச்சி; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }

    “nft -o -c -f ruleset.nft”ஐ இயக்குவது தனியான “ip saddr” விதிகளை வரைபடப் பட்டியலாக மாற்றும்: snat to ip saddr . tcp dport வரைபடம் { 1.1.1.1 . 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    இதேபோல், மூல வெளிப்பாடுகளை வரைபடப் பட்டியல்களாக மாற்றலாம்: # cat ruleet.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 நீளம் ,62 78x160,128e0e goto nat_dns_this_0 udp நீளம் 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp long 31363436323733373931323934300e goto nat_dns_saturn_5301 udp நீளம் 62-78 @th,160,128 0x0e32393535373539353636383732310e goto nat_dns_saturn_5302 drop} }

    தேர்வுமுறைக்குப் பிறகு ஒரு வரைபடப் பட்டியலைப் பெறுகிறோம்: udp நீளம் . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • ஒருங்கிணைப்பு செயல்பாடுகளில் மூல வெளிப்பாடுகளின் பயன்பாடு அனுமதிக்கப்படுகிறது. எடுத்துக்காட்டாக: #nft add rule xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 0x1e } அல்லது டேபிள் x { set y { typeof ip saddr . @ih,32,32 உறுப்புகள் = { 1.1.1.1 . 0x14 } }
  • ஒருங்கிணைப்பு செயல்பாடுகளில் முழு எண் தலைப்பு புலங்களைக் குறிப்பிடுவதற்கான ஆதரவு சேர்க்கப்பட்டது: டேபிள் inet t { map m1 { typeof udp length . @ih,32,32 : தீர்ப்பு கொடிகள் இடைவெளி கூறுகள் = { 20-80 . 0x14: ஏற்றுக்கொள், 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; கொள்கை வீழ்ச்சி; udp நீளம். @ih,32,32 vmap @m1 } }
  • TCP விருப்பங்களை மீட்டமைப்பதற்கான ஆதரவு சேர்க்கப்பட்டது (Linux kernel 5.18+ உடன் மட்டுமே வேலை செய்யும்): tcp flags syn reset tcp option sack-perm
  • சங்கிலி வெளியீட்டு கட்டளைகளின் ("nft பட்டியல் சங்கிலி xy") செயல்படுத்தல் துரிதப்படுத்தப்பட்டது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்