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
  }
 }
}
comments powered by Disqus