策略路由
命令简介
- 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
...
]#
网友评论