Вопрос по "транслированию" ftp-трафика через
а) iptables
б) squid
не снимается с повестки дня.
Итак, имею хост, на котором развернут шлюз в интернет. Соответственно два сетевых интерфейса. Правила iptables - "запрещено всё, что явно не разрешено". Есть в интернете ftp-сервера, джоступ к которым надо дать юзерям локальной сети. Например, ftp.nalog.ru.
Этап 1. Пропиcываю в МЭ для начала следующие правила:
$IPT -t nat -A PREROUTING -i $LOCAL_IF -s 192.168.43.0/24 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
# FTP
$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state NEW -j ACCEPT
# PASSIVE FTP
$IPT -t filter -A OUTPUT -p tcp -m tcp --dport $UNPRIPORTS -m state --state NEW -j ACCEPT
FTP с данного хоста работает, что и следовало ожидать. Однако, как ни бился, никак не могу организовать гарантированный проброс ftp-трафика между компьютерами локальной сети и этим ftp-сервером. А именно:
# FTP
$IPT -A FORWARD -i $LOCAL_IF -p tcp --dport 21 -j ACCEPT
$IPT -A FORWARD -i $EXT_IF -p tcp --sport 21 -j ACCEPT
$IPT -A FORWARD -i $LOCAL_IF -p tcp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $EXT_IF -p tcp --sport 20 -j ACCEPT
# PASSIVE FTP
$IPT -t filter -A FORWARD -p tcp -m tcp --dport $UNPRIPORTS -m state --state NEW -j ACCEPT
$IPT -t filter -A FORWARD -p udp -m udp --dport $UNPRIPORTS -m state --state NEW -j ACCEPT
И на юзерской рабочей станции (IE) отключаю режим - ходить через покси (80й порт - по PREROUTING'у на сквид и так завернется). Работает нормально, доступ к внешним ftp есть.
Теперь хочу завернуть ftp-трафик на squd (с целью регистрации GET'ов).
$IPT -t nat -A PREROUTING -i $LOCAL_IF -s 192.168.43.0/24 -p tcp -m multiport --dport 21,80 -j REDIRECT --to-port 3128
Увы, IE достучаться до внешнего ftp не может. Равно как не может достучаться до внешнего ftp и в режиме использования proxy.
Собственно нужна помощь в настройке iptables в части проброса подобного ftp-трафика через proxy, через squid. Я никак не соображу, как это сделать.