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