четверг, 26 февраля 2009 г.

Установка proftpd в pfsense



Модификация Freebsd под названием pfsense очень хороша в качестве шлюза для офиса. Но хотелось бы чуть-чуть расширить ее возможности, хотелось бы еще файлообменник замутить. Решил поднять ftp сервер в качестве файлообменника, но вот незадача в готовых пакетах ftp серверов нет.


Но это не беда. pfsense та же freebsd, поэтому можно скачать готовый пакет proftpd для FreeBSD 7.0 отсюда. Заходим в webGUI pfsense в раздел Diagnostics –> command -> Upload и закачиваем этот пакет (у меня был proftpd-1.3.1_4.tbz)
Потом заходим в pfsense через ssh, выбираем пункт shell и устанавливаем пакет
pkg_add /tmp/proftpd-1.3.1_4.tbz
Потом правим конфигурационный файл ProFTPd
ee /usr/local/etc/proftpd.conf
В примерно такой вид:
ServerName "FTP"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd.scoreboard
DelayTable /var/run/proftpd.delay
Port 21
Umask 022
User ftp
Group nogroup
SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog
DisplayConnect /etc/ftp_connect.msg
DisplayLogin /etc/ftp_login.msg
DefaultRoot ~ users
Теперь создаем файлы и что-нибудь туда пишем, а можно и ничего не писать:
touch /etc/ftp_connect.msg
touch /etc/ftp_login.msg
Заводим пользователя, допустим ftp с домашней директорией /var/ftp/
pw add user ftp -d /var/ftp
И ставим выставляем пароль:
passwd ftp
Если директории /var/ftp не существует создаем ее
mkdir /var/ftp/
выставляем хозяина папки пользователя ftp
chown ftp /var/ftp
Правим скрипт запуска proftpd, /usr/local/etc/rc.d/proftpd
#!/bin/sh
proftpd_enable="YES"
. /etc/rc.subr
name=proftpd

rcvar=`set_rcvar`
command=/usr/local/sbin/proftpd

pidfile=/var/run/proftpd.pid

required_files=/usr/local/etc/proftpd.conf
stop_postcmd=stop_postcmd
stop_postcmd()

{

rm -f $pidfile

}
extra_commands="reload"
load_rc_config $name

run_rc_command "$1"
Теперь заходим в webGUI, в Interfaces –> LAN и ставим галочку “Disable the userland FTP-Proxy application” (рисунок ниже) и жмем SAVE



В принципе наш ftp сервер готов, пробуем запустить:
/usr/local/etc/rc.d/proftpd start
и подключаемся ftp://192.168.0.1
Если что-то не получается, смотрим логи:
tail –f /var/log/proftpd.log
P.S. Но у нас же pfsense, где все управление происходит через webGUI, потом правим файл /cf/conf/config.xml где пошло описание сервисов, добавляем:
<service>
<name>Proftpd</name>
<rcfile>proftpd</rcfile>
<executable>proftpd</executable>
<description>ProFTPd server Service</description>
</service>

Извиняюсь за картинку, блог не поддерживает теги

Чтобы изменения сразу применились удаляем кеш конфига
rm /tmp/config.cache
Теперь заходим в webGUI Status –> Services и наблюдаем новый сервис, который можно останавливать и запускать, мелочь, а приятно =)


Пока не нашел как автоматически запускать сервис при рестарте, как найду, обязательно допишу.

6 коммент.:

Александр комментирует...

/usr/local/etc/rc.d/proftpd Нужно переименовать в /usr/local/etc/rc.d/proftpd.sh

zar0ku1 комментирует...

А какая разница? попробуйте и так

vspv комментирует...

а как в 2.0.1?
там ftp helper вроде бы уже включен по умолчанию?
внутри локалки ftp работает, а вот снаружи на ftp попасть не могу :(

Михаил Болт комментирует...
Этот комментарий был удален автором.
Михаил Болт комментирует...

Для перезаписи очень советую добавить в конфиг
"
AllowOverwrite on
"

Алексей Котец комментирует...

все сделал по инструкции, при старте пакета возникает следующая ошибка

Starting proftpd.
/usr/local/sbin/proftpd: 1: Syntax error "(" unexpected
/usr/local/etc/rc.d/proftpd: WARNING: failed to start proftpd

Отправить комментарий