ipset批量配置iptables


簡介:

     ipset是iptables的擴展,允許你創建匹配整個地址sets(地址集合)的規則。而不像普通的iptables鏈是線性的存儲和過濾,ip集合存儲在帶索引的數據結構中,這種集合比較大也可以進行高效的查找。在許多的linux發布中ipset是一個簡單的安裝包,可以通過linux發行版提供的yum進行安裝。

 

格式:ipset-6.11版本

顯示已有列表:  ipset list   
創建列表    :  ipset create 表名 hash:net或者hash:ip  hashsize 表大小  maxelem 最大條目數

               其中hashsize 為表大小默認為1024    maxelem為表項數默認為65535      
刪除已有表  :  ipset destroy 表名       
刪表中項    :  ipset del 表名 項       
向表添加網段:  ipset add 表名 IP/掩碼位       
測試是否在表中 iptest test 表名 項

 

表要關聯到防火牆,例如做nat匹配       
 iptables -t nat -A POSTROUTING -m set --set 表名 src -m set --set 目的表名 dst -j SNAT --to NAT后地址

這條就是同時匹配源地址和目的地址的NAT轉換(記得要開啟sysctl的ip轉發)      

 

舉例:

下面的ipset/iptables命令:      
ipset create myset hash:ip       
ipset add myset 1.1.1.1       
ipset add myset 2.2.2.2       
iptables -A INPUT -m set --set myset src -j DROP       
上面的命令創建了兩個地址(1.1.1.1 and 2.2.2.2)的集合(myset表類型是haship,還可以是hashnet)   然后iptables命令通過-m set --set myset src這個選項使用這個集合,這個匹配規則的意思是“匹配源地址包含在集合myset中的數據包”。src表示源地址,dst表示目標地址。如果同時使用src和dst表示既要匹配源地址又要匹配目的地址。

 

 

ipset還有另一個應用。假設有一個本地LAN (10.0.0.0/24)需要連接到internet,除此之外還有三個本地網絡(10.30.30.0/24, 10.40.40.0/24, 192.168.4.0/23 和 172.22.0.0/22),執行下面的命令:   ipset create routed_nets hash:net       
ipset add routed_nets 10.30.30.0/24       
ipset add routed_nets 10.40.40.0/24       
ipset add routed_nets 192.168.4.0/23       
ipset add routed_nets 172.22.0.0/22       
iptables -t nat -A POSTROUTING \       
         -s 10.0.0.0/24 \       
         -m set ! --set routed_nets dst \       
         -j MASQUERADE       
如你所見,ipset 簡單的實現了精確匹配。該規則偽裝所有來自(10.0.0.0/24)的數據包,而不處理其他在routed_nets集合中的網絡的包。由於該配置完全基於網絡地址,所以你完全不用擔心其他特殊的網絡連接(比如VPN),也不用擔心物理接口和網絡拓撲。

 

參考文章:http://sw5720.blog.51cto.com/8812314/1623378


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM