<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Haproxy_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_FTP</id>
	<title>Haproxy - настройка для FTP - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Haproxy_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_FTP"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Haproxy_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_FTP&amp;action=history"/>
	<updated>2026-05-14T02:28:04Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=Haproxy_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_FTP&amp;diff=4350&amp;oldid=prev</id>
		<title>Vix: Новая страница: «==НАСТРОЙКА== * Предварительно настроенный Vsftp сервер имеет следующие настройки:  listen=YES  listen_ipv6=NO  anonymous_enable=NO  local_enable=YES  write_enable=YES  local_umask=022  dirmessage_enable=YES  use_localtime=YES  xferlog_enable=YES  connect_from_port_20=YES  xferlog_file=/var/log/vsftpd.log  xferlog_std_format=YES  idle_session_timeout=300  data_connection_timeout=120  nopriv_user=...»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Haproxy_-_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_FTP&amp;diff=4350&amp;oldid=prev"/>
		<updated>2024-09-11T19:14:45Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «==НАСТРОЙКА== * Предварительно настроенный Vsftp сервер имеет следующие настройки:  listen=YES  listen_ipv6=NO  anonymous_enable=NO  local_enable=YES  write_enable=YES  local_umask=022  dirmessage_enable=YES  use_localtime=YES  xferlog_enable=YES  connect_from_port_20=YES  xferlog_file=/var/log/vsftpd.log  xferlog_std_format=YES  idle_session_timeout=300  data_connection_timeout=120  nopriv_user=...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==НАСТРОЙКА==&lt;br /&gt;
* Предварительно настроенный Vsftp сервер имеет следующие настройки:&lt;br /&gt;
 listen=YES&lt;br /&gt;
 listen_ipv6=NO&lt;br /&gt;
 anonymous_enable=NO&lt;br /&gt;
 local_enable=YES&lt;br /&gt;
 write_enable=YES&lt;br /&gt;
 local_umask=022&lt;br /&gt;
 dirmessage_enable=YES&lt;br /&gt;
 use_localtime=YES&lt;br /&gt;
 xferlog_enable=YES&lt;br /&gt;
 connect_from_port_20=YES&lt;br /&gt;
 xferlog_file=/var/log/vsftpd.log&lt;br /&gt;
 xferlog_std_format=YES&lt;br /&gt;
 idle_session_timeout=300&lt;br /&gt;
 data_connection_timeout=120&lt;br /&gt;
 nopriv_user=ftp&lt;br /&gt;
 ftpd_banner=Welcome.&lt;br /&gt;
 chroot_local_user=YES&lt;br /&gt;
 secure_chroot_dir=/var/run/vsftpd/empty&lt;br /&gt;
 pam_service_name=vsftpd&lt;br /&gt;
 &lt;br /&gt;
 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem&lt;br /&gt;
 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key&lt;br /&gt;
 ssl_enable=NO&lt;br /&gt;
 &lt;br /&gt;
 utf8_filesystem=YES&lt;br /&gt;
 &lt;br /&gt;
 pasv_enable=YES&lt;br /&gt;
 pasv_min_port=17000&lt;br /&gt;
 pasv_max_port=17500&lt;br /&gt;
 &lt;br /&gt;
 guest_enable=YES&lt;br /&gt;
 guest_username=ftp&lt;br /&gt;
 virtual_use_local_privs=YES&lt;br /&gt;
 user_sub_token=$USER&lt;br /&gt;
 local_root=/srv/ftp/$USER&lt;br /&gt;
 hide_ids=YES&lt;br /&gt;
 seccomp_sandbox=NO&lt;br /&gt;
 allow_writeable_chroot=YES&lt;br /&gt;
 max_clients=20&lt;br /&gt;
 max_per_ip=3&lt;br /&gt;
 user_config_dir=/etc/vsftpd/vsftpd_user_conf&lt;br /&gt;
 '''pasv_address=*.*.*.*''' # Здесь обязательно указывается ip внешнего интерфейса с которого сделан проброс порта в NAT шлюза&lt;br /&gt;
* На сервере Haproxy*&lt;br /&gt;
** у нас кластер с keepalived, где входной ip 10.33.33.11, а выходной ip: 10.1.2.21 (нода1)&lt;br /&gt;
** С учетом того, что сервер FTP является активным ip:10.1.2.5:&lt;br /&gt;
1. Вносим в /etc/haproxy/haproxy.conf:&lt;br /&gt;
 ...&lt;br /&gt;
  ##  - pubftp&lt;br /&gt;
 frontend ftp-acl&lt;br /&gt;
     bind *:21,:17000-17500 name ftp&lt;br /&gt;
     mode tcp&lt;br /&gt;
     use_backend ftp_host&lt;br /&gt;
 #&lt;br /&gt;
 backend ftp_host&lt;br /&gt;
     option tcp-check&lt;br /&gt;
     server ftp.host.ru 10.1.2.5 check port 21&lt;br /&gt;
  ...&lt;br /&gt;
2. В правилах iptables вносим правила для обратного прохождения пакетов сервера ftp к клиенту:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.1.2.21 -o enp6s18:1 -j SNAT --to-source 10.33.33.11  /&lt;br /&gt;
 -m comment --comment 'acl_for_active_ftp'&lt;br /&gt;
 iptables -t nat -A PREROUTING -d 10.33.33.11/32 -i enp6s18:1 -p tcp -m tcp --dport 17000:17500 /&lt;br /&gt;
 -j DNAT --to-destination 10.1.2.21 -m comment --comment 'acl2_for_active_ftp'&lt;br /&gt;
&lt;br /&gt;
3. Для того, чтобы эти правила стартовали при запуске 1ноды Haproxy, добавляем это в виде скрипта в автозагрузку:&lt;br /&gt;
* скрипт который добавляет правила:&lt;br /&gt;
 /etc/scripts/startnat.sh&lt;br /&gt;
 ...&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 function clearNat(){&lt;br /&gt;
 iptables -t nat -F&lt;br /&gt;
 iptables -t nat -X&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function addRules(){&lt;br /&gt;
 if [ $(iptables -L -nv -t nat|grep acl_for_active_ftp|wc -l) == &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
  iptables -t nat -A POSTROUTING -s 10.1.2.21 -o enp6s18:1 -j SNAT --to-source 10.33.33.11 /&lt;br /&gt;
  -m comment --comment 'acl_for_active_ftp'&lt;br /&gt;
  iptables -t nat -A PREROUTING -d 10.33.33.11/32 -i enp6s18:1 -p tcp -m tcp --dport 17000:17500 /&lt;br /&gt;
  -j DNAT --to-destination 10.1.2.21 -m comment --comment 'acl2_for_active_ftp'&lt;br /&gt;
 fi&lt;br /&gt;
 }&lt;br /&gt;
 clearNat;&lt;br /&gt;
 addRules;&lt;br /&gt;
 ...&lt;br /&gt;
** для запуска скрипта при старте вносим:&lt;br /&gt;
 в /etc/rc.local&lt;br /&gt;
 ..&lt;br /&gt;
 /etc/scripts/startnat.sh&lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
 в случае перезапуска сети:&lt;br /&gt;
 в /etc/networks/interfaces&lt;br /&gt;
 ...&lt;br /&gt;
 auto eth1&lt;br /&gt;
 allow-hotplug eth1&lt;br /&gt;
 ...&lt;br /&gt;
 post-up /etc/scripts/startnat.sh&lt;br /&gt;
 ...&lt;br /&gt;
* все сервер Haproxy (нода1) готов, далее все повторить на второй ноде, только указать ее ip:10.1.2.22&lt;/div&gt;</summary>
		<author><name>Vix</name></author>
	</entry>
</feed>