天天看點

iptables,haproxy轉發ftp(21端口)

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

繼續閱讀