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

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

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

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

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

  • தொகுப்பு பட்டியல்களில் “*” முகமூடி உறுப்புக்கான ஆதரவு சேர்க்கப்பட்டுள்ளது, இது தொகுப்பில் வரையறுக்கப்பட்ட பிற உறுப்புகளின் கீழ் வராத எந்த தொகுப்புகளுக்கும் தூண்டப்படுகிறது. அட்டவணை x {வரைபடம் தடைப்பட்டியல் {வகை ipv4_addr : தீர்ப்புக் கொடிகள் இடைவெளி கூறுகள் = { 192.168.0.0/16 : ஏற்கவும், 10.0.0.0/8 : ஏற்கவும், * : கைவிடவும் } } சங்கிலி y {வகை வடிகட்டி ஹூக் முன்னுரிமை 0; கொள்கை ஏற்றுக்கொள்வது; ip saddr vmap @blocklist } }
  • “--define” விருப்பத்தைப் பயன்படுத்தி கட்டளை வரியிலிருந்து மாறிகளை வரையறுக்க முடியும். # cat test.nft table netdev x { chain y { type filter hook ingress device = $dev முன்னுரிமை 0; கொள்கை வீழ்ச்சி; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • வரைபடப் பட்டியல்களில், நிலையான (நிலையான) வெளிப்பாடுகளின் பயன்பாடு அனுமதிக்கப்படுகிறது: டேபிள் இன்ட் ஃபில்டர் {மேப் போர்ட்மேப் { வகை inet_service : தீர்ப்பு கவுண்டர் கூறுகள் = { 22 கவுண்டர் பாக்கெட்டுகள் 0 பைட்டுகள் 0 : ஜம்ப் ssh_input, * எதிர் பாக்கெட்டுகள் 0 பைட்டுகள் 0 : டிராப் } } சங்கிலி ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; கொள்கை ஏற்றுக்கொள்வது; iif vmap { "lo" : jump wan_input } } }
  • கொடுக்கப்பட்ட பாக்கெட் குடும்பத்திற்கான ஹேண்ட்லர்களின் பட்டியலைக் காண்பிக்க "list hooks" கட்டளை சேர்க்கப்பட்டது: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw புட் [nf_tables] { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } ஹூக் ஃபார்வர்ட் { -0000000225 selinux_ipv4_forward 0000000000 chain 0000000225 chain output 4 iptable0000000225 selinux_ipv4_output } ஹூக் போஸ்ட்ரூட்டிங் { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • வரிசைத் தொகுதிகள் jhash, symhash மற்றும் numgen வெளிப்பாடுகளை ஒன்றிணைத்து பயனர் இடத்தில் வரிசைகளுக்கு பாக்கெட்டுகளை விநியோகிக்க அனுமதிக்கின்றன. … symhash mod 65536 க்கு வரிசை … வரிசை ஃபிளாக்ஸ் பைபாஸ் டு numgen inc mod 65536 … வரிசை ஜாஷ் oif க்கு . மெட்டா மார்க் மோட் 32 "வரிசை", தன்னிச்சையான விசைகளின் அடிப்படையில் பயனர் இடத்தில் ஒரு வரிசையைத் தேர்ந்தெடுக்க வரைபடப் பட்டியல்களுடன் இணைக்கப்படலாம். ... வரிசை கொடிகள் oifname வரைபடத்தை கடந்து செல்கின்றன { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • பல வரைபடங்களில் ஒரு தொகுப்பு பட்டியலை உள்ளடக்கிய மாறிகளை விரிவாக்க முடியும். இடைமுகங்களை வரையறுக்கவும் = { eth0, eth1 } அட்டவணை ip x { chain y {வகை வடிகட்டி ஹூக் உள்ளீடு முன்னுரிமை 0; கொள்கை ஏற்றுக்கொள்வது; iifname vmap {lo : ஏற்கவும், $இடைமுகங்கள் : கைவிடவும் } } } # nft -f x.nft # nft பட்டியல் ரூல்செட் டேபிள் ip x { chain y { type filter hook input priority 0; கொள்கை ஏற்றுக்கொள்வது; iifname vmap { "lo" : ஏற்கவும், "eth0" : drop, "eth1" : drop } } }
  • இடைவெளியில் vmaps (தீர்ப்பு வரைபடம்) இணைப்பது அனுமதிக்கப்படுகிறது: # nft add rule xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : ஏற்றுக்கொள் }
  • NAT மேப்பிங்கிற்கான எளிமைப்படுத்தப்பட்ட தொடரியல். முகவரி வரம்புகளைக் குறிப்பிட அனுமதிக்கப்படுகிறது: ... snat to ip saddr வரைபடம் { 10.141.11.4 : 192.168.2.2-192.168.2.4 } அல்லது வெளிப்படையான IP முகவரிகள் மற்றும் போர்ட்கள்: ... dnat to ip saddr வரைபடம் { 10.141.11.4 . 192.168.2.3 } அல்லது IP வரம்புகள் மற்றும் போர்ட்களின் சேர்க்கைகள்: ... dnat to ip saddr . tcp dport வரைபடம் { 80 . 192.168.1.2: 80-10.141.10.2. 10.141.10.5-8888 }

ஆதாரம்: opennet.ru

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