策略路由

策略路由

命令简介

  • ipset: ipset是iptables的扩展, 它允许你创建匹配整个地址集合的规则. 而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中, 这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况, 比如阻止一些危险主机访问本机, 从而减少系统资源占用或网络拥塞, IPsets也具备一些新防火墙设计方法, 并简化了配置.
  • iptables: Linux 防火墙
  • iproute2:
ip
- link    # 网络设备配置命令,可以启用/禁用某个网络设备,改变mtu及mac地址等。
- addr    # 用于管理某个网络设备与协议有关的地址ip link类似,不过增加了协议有关的管理(比如增加ip地址)
- addrlabel # IPV6的地址标签,主要用于RFC3484中描述的IPV6地址的选择。RFC3484主要介绍了两个算法,用于IPV6地址的选择策略。
- rule    # 管理路由,添加与删除等。
- neigh   # 用于neighbor/ARP表的管理。如显示,插入,删除等。
- tunnel      # 隧道配置,隧道的作用是将数据(可以是不同协议)封装成IP包然后在互联网上将包发出。
- maddr   # 多播地址管理
- mroute      # 多播路由管理
- monitor     # 状态监控,如可以持续监控IP地址和路由的状态。
- xfrm    # 设置xfrm。xfrm是一个IP框架,可以转换数据报的格式,如用某个算法对数据包进行加密。

整个流程

策略路由流程图

ipset

]# ipset -t list
Name: tj
Type: hash:net
Revision: 3
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 25488
References: 1
...
]# ipset list tj
...
]# -exist 忽略错误  
]# ipset create -exist bj hash:net maxelem 65536
]# ipset add bj xxx.xxx.xxx.xxx/24
]# 从文件添加
]# ipset restore -file xxx.list
]# 删除
]# ipset del bj xxx.xxx.xxx.xxx/24

iptables

]# iptables -t mangle -S0xa 的标签
]# # 匹配目的地址在 ipset bj 里的数据包,打上 0xa 的标签
-A PRE20_ipset -m mark --mark 0x0 -m set --match-set bj dst -j MARK --set-xmark 0xa/0xffffffff
-A PRE20_ipset -m mark --mark 0x0 -m set --match-set cn dst -j MARK --set-xmark 0x96/0xffffffff
-A PRE30_ipset -m mark --mark 0x0 -m set --match-set vn dst -j MARK --set-xmark 0x38/0xffffffff
...
]# 

iproute2

[root@ustack-taicangct29 ~]# ip rule list
]# # 把带有 0xa 标签的数据包,转到 bj 路由表查找
...
2000:   from all fwmark 0xa lookup bj 
32766:  from all lookup main 
32767:  from all lookup default 
...
]# # bj 路由表只有一条, 通过 txbjgre 网卡接口出去
]# ip route show table bj
default dev txbjgre  scope link 
]# 
]# ip route == ip route show table main
...
]# 

你可能感兴趣的:(策略路由)