ipset批量配置iptables

2022-05-10 17:42:12 字數 1904 閱讀 3947

簡介:

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),也不用擔心物理介面和網路拓撲。

參考文章:

firewall 防火牆配置和iptables配置

防火牆內新增新的開放埠 firewall cmd zone public permanent add port 8080 tcp檢視埠是否被開放 firewall cmd quiery port 8080 tcp檢視所有開放的埠 firewall cmd permanent zone public ...

Thinkphp 配置 批量配置

c配置方法支援批量配置,例如 config array web site title thinkphp web site description 開源php框架 c config config陣列中的配置引數會合併到現有的全域性配置中。可以通過這種方式讀取資料庫中的配置引數,例如 讀取資料庫中的配置...

linux批量配置ip

獲取使用的網絡卡介面 2.檢視系統版本 cat etc redhat release 3.執行配置指令碼 輸入網絡卡eth0資訊回車然後輸入 ip段回車 然後按ctrl d 彈一下資訊 4.重啟網絡卡配置完成 linux dns配置 vi etc resolv.conf search cn name...