Iptable可以给进来的包打上标签,比如我们把从1.2.3.4进来的包都打上标签2000(标签可以是任何整数)
1iptables -t mangle -A PREROUTING -i eth0 \
2-p tcp -s 1.2.3.4 --dport http -j MARK --set-mark 2000
或者把访问172.16.8.1的80和443端口的包都打上标签123:
1iptables -t mangle -A PREROUTING -i eth0 \
2-p tcp -d 172.16.8.1/32 -m multiport --dports 80,443 -j MARK --set-mark 123
随后我们就可以在keepalived里来指定virtual_server来处理这些打过标签的流量了:
1virtual_server fwmark 123 {
2 ...
3}
具体的一个用法,如果你想禁止从1.2.3.4来的ip访问你服务器,于是乎你就可以先给包打上标签2000,然后配个服务器,上面写联系人和电话,单独给他看,他看到会联系你询问被屏蔽的原因,如下:
1virtual_server fwmark 2000 {
2
3delay_loop 6
4 lb_algo wlc
5 lb_kind NAT
6 persistence_timeout 0
7 protocol TCP
8
9real_server 10.10.10.1 80 {
10 weight 1
11 TCP_CHECK {
12 connect_port 80
13 connect_timeout 3
14 }
15 }
16}