自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 3.13 引入 nftables,你可能會喜歡的幾種理由

系統(tǒng) Linux
nftables是一個致力于替換現(xiàn)有的{ip,ip6,arp,eb}tables框架(也就是大家熟知的iptables)的項目。Linux 3.13首次引入 nftables,本文闡述了你可能會喜歡nftables的幾種理由。

Linux 3.13 帶來了很多特性。nftables也是***次正式發(fā)布。nftables是一個致力于替換現(xiàn)有的{ip,ip6,arp,eb}tables框架(也就是大家熟知的iptables)的項目。然而,Linux3.13中的nftables版本還是不完整的,還缺少一些重要的特性。這些特性會在后續(xù)的Linux版本中發(fā)布。大多數(shù)場景下nftables已經(jīng)可以使用,但是完整的支持(即,nftables優(yōu)先級高于iptables)應(yīng)該在Linux 3.15。

nftables引入了一個新的命令行工具nft。nft是iptables及其衍生指令(ip6tables,arptables)的超集。同時,nft擁有完全不同的語法。是的,如果你習(xí)慣于iptables,這是個不好的消息。但是有一個兼容層允許你使用iptables,而過濾是由內(nèi)核中的nftables完成的。

到目前為止,只有非常少的文檔資料。你可以找到我的nftables快速開始,其他的一些初步文檔很快就會公開。

一些命令行例子

一行多個目標(biāo)

加入你想用iptables記錄并丟棄一個包,你必須寫兩條規(guī)則,一條記錄,一條丟棄:

  1. iptables -A FORWARD -p tcp --dport 22 -j LOG 
  2. iptables -A FORWARD -p tcp --dport 22 -j DROP 

 

使用nft,你可以把兩個目標(biāo)合并到一起:

  1. nft add rule filter forward tcp dport 22 log drop 

 

方便創(chuàng)建集合

假如你想針對不同的端口允許包并且允許不同的icmpv6類型。使用iptables,你需要使用類似如下的規(guī)則:

  1. ip6tables -A INPUT -p tcp -m multiport --dports 23,80,443 -j ACCEPT 
  2. ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT 
  3. ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT 
  4. ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT 
  5. ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT 

使用nft,集合可以用在規(guī)則中任一元素:

  1. nft add rule ip6 filter input tcp dport {telnet, http, https} accept 
  2. nft add rule ip6 filter input icmpv6 type { nd-neighbor-solicit, echo-request, nd-router-advert, nd-neighbor-advert } accept 

 

這樣更容易編寫,而且對于過濾方更加高效,因為對每一種協(xié)議只需要添加一個規(guī)則。

你也可以給集合命名,以便在其他地方使用:

  1. # nft -i # use interactive mode 
  2. nft> add set global ipv4_ad { type ipv4_address;} 
  3. nft> add element global ipv4_ad { 192.168.1.4, 192.168.1.5 } 
  4. nft> add rule ip global filter ip saddr @ipv4_ad drop 

 

之后,當(dāng)檢測到一個新的破壞者時:

  1. # nft -i 
  2. nft> add element global ipv4_ad { 192.168.3.4 } 

映射

nftables的一個高級特性就是映射??梢允褂貌煌愋偷臄?shù)據(jù)并映射它們。例如,我們可以映射網(wǎng)絡(luò)端口到專用的規(guī)則集合(之前創(chuàng)建的存儲在一個鏈中)。在這個例子中,鏈的名稱為low_sec和high_sec:

  1. # nft -i 
  2. nft> add map filter jump_map { type ifindex : verdict; } 
  3. nft> add element filter jump_map { eth0 : jump low_sec; } 
  4. nft> add element filter jump_map { eth1 : jump high_sec; } 
  5. nft> add rule filter input iif vmap @jump_map 

 

現(xiàn)在,比如說你有一個新的動態(tài)端口ppp1,對它做過濾非常簡單,僅僅把它加到j(luò)ump_map映射中就可以了。

  1. nft> add element filter jump_map { ppp1 : jump low_sec; } 

運維和內(nèi)核方面(更新速度更快)

在iptables中添加一條規(guī)則,會隨著規(guī)則數(shù)量增多而變得非常慢,這也就解釋了為什么調(diào)用iptables的腳本需要花很久才完成。這種狀況對nftables而言就不存在了。nftables使用原子的快速操作來更新規(guī)則集合。

內(nèi)核更新更少

使用iptables,每一個匹配或投遞都需要內(nèi)核模塊的支持。因此,如果你忘記一些東西或者要添加新的功能時都需要重新編譯內(nèi)核。nftables就不存在這種狀況了。在nftables中,大部分工作是在用戶態(tài)完成的,內(nèi)核只知道一些基本指令(過濾是用偽狀態(tài)機(jī)實現(xiàn)的)。例如,icmpv6支持是通過nft工具的一個簡單的補(bǔ)丁實現(xiàn)的。在iptables中這種類型的更改需要內(nèi)核和iptables都升級才可以。

原文鏈接:regit   翻譯: 伯樂在線 Codefor

譯文鏈接: http://blog.jobbole.com/59624/

責(zé)任編輯:黃丹 來源: 伯樂在線
相關(guān)推薦

2020-07-06 07:48:16

MySQL細(xì)節(jié)SQL

2017-06-23 13:35:43

Linux內(nèi)核形式驗證

2018-07-10 11:05:18

開發(fā)者技能命令

2018-07-10 10:45:00

規(guī)范Commit項目

2020-03-09 10:10:02

AI 數(shù)據(jù)人工智能

2009-04-08 15:35:18

LinuxWindows文件系統(tǒng)

2017-11-23 11:56:00

2017-11-21 10:15:00

2015-08-24 11:26:35

LinuxWindows

2009-04-09 17:15:37

LinuxWindows文件系統(tǒng)

2016-08-09 19:11:58

windows 10微軟

2018-05-13 22:56:20

Go語言語法

2015-11-25 09:04:48

GNULinux開源

2016-12-01 13:06:31

技術(shù)大數(shù)據(jù)數(shù)據(jù)分析

2016-03-16 11:20:47

2024-01-15 13:18:11

數(shù)據(jù)管理CIO

2019-07-01 09:10:00

前端開發(fā)技術(shù)

2021-06-06 16:52:11

工具函數(shù)JS

2020-09-17 11:20:08

云計算

2018-11-07 10:03:37

點贊
收藏

51CTO技術(shù)棧公眾號