iptables策略路由

Travis 于 2020-02-18 发布

目录

命令简介

1
2
3
4
5
6
7
8
9
10
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
]# 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

1
2
3
4
5
6
7
]# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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  
...  
]#   
]# # 查看通道  
]# ip tunnel  
txshgre: gre/ip  remote 192.168.182.134  local 192.168.206.27  ttl 255   
txbjgre: gre/ip  remote 192.168.184.18  local 192.168.206.27  ttl 255   
txgzgre: gre/ip  remote 192.168.67.140  local 192.168.206.27  ttl 255   
gre0: gre/ip  remote any  local any  ttl inherit  nopmtudisc  
[root@ustack-zhengzhoubgp09 ~]#