任何事物都有一個從無到有,再歸於無的過程。是的,我這裏用了一個絕對詞:任何。html
在計算機領域中,防火牆(英文:Firewall)是一項協助確保信息安全的設備,會依照特定的規則,容許或是限制傳輸的數據經過。防火牆多是一臺專屬的硬件或是架設在通常硬件上的。通俗的一個類比就是中國古代的長城或者城市的城牆,用於安全防護的做用,只有知足特定要求,接受檢查後才能進入。前端
防火牆做爲內部網與外部網之間的一種訪問控制設備, 經常安裝在內部網和外部網交界點上。主要分爲網絡層防火牆和應用層防火牆兩種,但也有些防火牆是同時運做於網絡層和應用層。linux
iptables屬於網絡層防火牆。因爲工做在網絡層,不須要把數據發送到用戶空間,在系統內核空間中進行了數據過濾處理,所以能夠保證數據處理效率。與此同時也會帶來一個壞處,既然是工做於內核空間,那麼它要麼集成到內核內部要麼被內核調用,且用戶是沒法直接與內核交互,那咱們怎麼定義iptables規則。由於以上緣由iptables分爲兩部分,一部分是工做於內核中真正實現訪問管控功能的netfileter,與此同時還要有與內核通訊提供過濾規則的用戶空間組件iptables。其實iptables的官方網站就是 http://www.netfilter.org/ 。ubuntu
iptables一個運行在用戶空間的應用軟件,經過控制Linux內核netfilter模塊,來管理網絡數據包的流動與轉送。在大部分的Linux系統上面,iptables是使用/usr/sbin/iptables來操做。一般iptables都須要內核層級的模塊來配合運做,Xtables是主要在內核層級裏面iptables API運做功能的模塊。因相關動做上的須要,iptables的操做須要用到超級用戶的權限。安全
目前iptables系在2.四、2.6及3.0的內核底下運做,舊版的Linux內核(2.2)使用ipchains及ipwadm(Linux 2.0)來達成相似的功能,2014年1月19日起發行的新版Linux內核(3.13後)則使用nftables取而代之。網絡
有興趣的同窗也能夠一塊兒加入學習探討iptables: https://ke.qq.com/course/202653框架
iptables不可能永遠獨佔linux世界,他也有發展的盡頭。在linux內核3.13中就由nftables取代了iptables。做爲應用層的iptables,也在被拋棄,RHEL7/CentOS7中放棄了iptables,而選擇firewalld做爲防火牆的配置工具。firewalld相對於iptables主要的優勢有:1. firewalld能夠動態修改單條規則,而不須要像iptables那樣,在修改了規則後必須得所有刷新才能夠生效; 2. firewalld在使用上要比iptables人性化不少,即便不明白「五張表五條鏈」並且對TCP/IP協議也不理解也能夠實現大部分功能。另外一樣基於linux內核的ubuntu,使用的防火牆配置工具是ufw。工具
nftables是取代 iptables、ip6tables、arptables 和ebtables 的新的包過濾框架。nftables 旨在解決現有 {ip/ip6}tables 工具存在的諸多限制。相對於舊的 iptables,nftables 最引人注目的功能包括改進性能如支持查詢表;事務型規則更新,全部規則自動應用;等等。nftables誕生於2008年,2013年末合併到Linux內核,從 Linux 3.13起開始做爲 iptables的替代提供給用戶。 nftables實現了一組被稱爲表達式的指令,可經過在寄存器中儲存和加載來交換數據。也就是說, nftables的核心可視爲一個虛擬機, nftables的前端工具nft能夠利用內核提供的表達式去模擬舊的iptables匹配,維持兼容性的同時得到更大的靈活性。性能