什么是ipset
IP sets are a framework inside the Linux kernel, which can be administered by the ipset utility. Depending on the type, an IP set may store IP addresses, networks, (TCP/UDP) port numbers, MAC addresses, interface names or combinations of them in a way, which ensures lightning speed when matching an entry against a set.
ipset类型
基于bitmap
- bitmap:ip - 每个bit代表一个IP,可存储65535个IP
- bitmap:ip,mac - 每8个字节代表一个IP和MAC组合
- bitmap:port - 每个bit代表一个TCP/UDP端口
基于hash
动态哈希表,优秀的查找能力
- hash:ip
- hash:net
- hash:ip,port
- hash:ip,port,ip
- hash:ip,port,net
- hash:net,port
- hash:net,iface
基于list
将不同ipsets存在另一个ipset中
- list:set
ipset操作
安装ipset
|
|
查看ipset
|
|
增删ipset
|
|
修改ipset
|
|
保存ipset
|
|
与iptables的配合
iptables与ipset配合使用需要安装kmod
|
|
|
|
应用
智能路由
安装完整版ip
和route
命令
|
|
将指定流量导向n2n0接口
|
|
mangle: 这个table专门用于数据包更改,chains包含PREROUTING/INPUT/FORWARD/OUTPUT/POSTROUTING
route table: /etc/iproute2/rt_tables:
- 255 - local : 本地和广播IP路由表,自动设置,请勿修改
- 254 - main :
route
和ip route
默认操作对象 - 253 - default : 保留的
查看所有table ip route show table all