iptables:
http://blog.csdn.net/niejicai/article/details/50275367
haproxy:
<code>yum install haproxy</code>
<code>listen stats </code><code>#開啟HAProxy圖形化Web管理功能</code>
<code> </code><code>bind :</code><code>9091</code>
<code> </code><code>stats enable</code>
<code> </code><code>stats uri </code><code>/</code><code>simpletime?admin</code>
<code> </code><code>stats hide</code><code>-</code><code>version</code>
<code> </code><code>stats auth admin:abc.</code><code>123</code>
<code> </code><code>stats admin </code><code>if</code> <code>TRUE</code>
<code>啟動服務 centos7</code>
<code>~]</code><code># systemctl start haproxy </code>
<code>~]</code><code># systemctl status haproxy #檢視狀态</code>
<code>~]</code><code># ss -tnlp #檢視80和9091端口是否啟用</code>
<code>~]</code><code># systemctl enable haproxy #設定開機啟動</code>
配置檔案
http://blog.csdn.net/xuyouzheng/article/details/9818743
原始的haproxy配置
<code>global</code>
<code> </code><code>log </code><code>127.0</code><code>.</code><code>0.1</code> <code>local2</code>
<code> </code><code>chroot </code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>haproxy</code>
<code> </code><code>pidfile </code><code>/</code><code>var</code><code>/</code><code>run</code><code>/</code><code>haproxy.pid</code>
<code> </code><code>maxconn </code><code>4000</code>
<code> </code><code>user haproxy</code>
<code> </code><code>group haproxy</code>
<code> </code><code>daemon</code>
<code> </code><code>stats socket </code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>haproxy</code><code>/</code><code>stats</code>
<code>defaults</code>
<code> </code><code>mode http</code>
<code> </code><code>log </code><code>global</code>
<code> </code><code>option httplog</code>
<code> </code><code>option dontlognull</code>
<code> </code><code>option http</code><code>-</code><code>server</code><code>-</code><code>close</code>
<code> </code><code>option forwardfor </code><code>except</code> <code>127.0</code><code>.</code><code>0.0</code><code>/</code><code>8</code>
<code> </code><code>option redispatch</code>
<code> </code><code>retries </code><code>3</code>
<code> </code><code>timeout http</code><code>-</code><code>request </code><code>10s</code>
<code> </code><code>timeout queue </code><code>1m</code>
<code> </code><code>timeout connect </code><code>10s</code>
<code> </code><code>timeout client </code><code>1m</code>
<code> </code><code>timeout server </code><code>1m</code>
<code> </code><code>timeout http</code><code>-</code><code>keep</code><code>-</code><code>alive </code><code>10s</code>
<code> </code><code>timeout check </code><code>10s</code>
<code> </code><code>maxconn </code><code>3000</code>
<code>frontend main </code><code>*</code><code>:</code><code>5000</code>
<code> </code><code>acl url_static path_beg </code><code>-</code><code>i </code><code>/</code><code>static </code><code>/</code><code>images </code><code>/</code><code>javascript </code><code>/</code><code>stylesheets</code>
<code> </code><code>acl url_static path_end </code><code>-</code><code>i .jpg .gif .png .css .js</code>
<code> </code><code>use_backend static </code><code>if</code> <code>url_static</code>
<code> </code><code>default_backend app</code>
<code>backend static</code>
<code> </code><code>balance roundrobin</code>
<code> </code><code>server static </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>4331</code> <code>check</code>
<code>backend app</code>
<code> </code><code>server app1 </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>5001</code> <code>check</code>
<code> </code><code>server app2 </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>5002</code> <code>check</code>
<code> </code><code>server app3 </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>5003</code> <code>check</code>
<code> </code><code>server app4 </code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>5004</code> <code>check</code>
最後使用的haproxy配置
<code> </code><code>mode tcp</code>
<code> </code><code>option tcplog</code>
<code>frontend foxtrot</code><code>-</code><code>tango</code><code>-</code><code>papa</code><code>-</code><code>control </code>
<code> </code><code>bind </code><code>*</code><code>:</code><code>21</code>
<code> </code><code>default_backend ftp_server_pool </code>
<code> </code>
<code>frontend foxtrot</code><code>-</code><code>tango</code><code>-</code><code>papa01 </code>
<code> </code><code>bind </code><code>*</code><code>:</code><code>10501</code><code>-</code><code>10750</code>
<code> </code><code>default_backend foxtrot_tango_papa01 </code>
<code>backend ftp_server_pool </code>
<code> </code><code>server foxtrot</code><code>-</code><code>tango</code><code>-</code><code>papa01 x.x.x.x check port </code><code>21</code> <code>inter </code><code>10s</code> <code>rise </code><code>1</code> <code>fall </code><code>2</code>
<code>backend foxtrot_tango_papa01 </code>
<code> </code><code>server foxtrot</code><code>-</code><code>tango</code><code>-</code><code>papa01 x.x.x.x check port </code><code>21</code> <code>inter </code><code>10s</code> <code>rise </code><code>1</code> <code>fall </code><code>2</code>
vim /etc/vsftpd/vsftpd.conf
域名模式,可以支援多個HAproxy同時通路,推薦
pasv_enable=YES #允許PASV模式
pasv_min_port=10000 #最小端口
pasv_max_port=10250 #最大端口
pasv_addr_resolve=YES #允許DNS解析
pasv_address=ftp.upload.net
IP模式,隻支援一個Haproxy通路
pasv_address=1.1.1.1 #此處配置為haproxy的ip位址
haproxy日志配置 + rsyslog
http://www.ttlsa.com/linux/haproxy-log-configuration-syslog/
使用haproxy的ACL封禁IP
acl invalid_src src 0.0.0.0/7 224.0.0.0/3
acl invalid_src src_port 0:1023
acl local_dst hdr(host) -i localhost
block if invalid_src || local_dst
用acl定義一些規則,而用(block|use_backend)指定滿足這些規則怎麼做,我們當然選擇block!
上述這段配置可以位于如下section
keyword defaults frontend listen backend
----------------------+----------+----------+---------+---------
acl - X X X
或者
backend webserver option http-request 通路控制
排錯
tcpdump -i eth0 -vnn dst host 172.16.1.122