Установка transmission на pfSense

Для своей домашней сети я когда-то организовал роутер из устаревшего компьютера, поскольку обычный бытовой плохо справлялся с нагрузкой. На роутер поставил FreeBSD. Не то чтобы я раскаялся в этом выборе. В конце концов, получилось познавательно. Но мне, человеку от сетевого администрирования далекому и с юниксами плохо знакомому, приходилось уж слишком много возиться с этим роутером по любому поводу. Так что я перешел на pfSense.

Вот pfSense — это для меня самое то. Все уже готово, настроено, собрано в красивый web-интерфейс. Практически все, что нужно от роутера, присутствует. Даже шейпер трафика, который я со своими кривыми руками на FreeBSD не то что настроить — запустить не смог. А тут на всем готовом.

Обратной стороной перехода на pfSense является, конечно, потеря гибкости. Система задумывалась не как конструктор, а как узкоспециализированная ОС для роутеров. Установка произвольного дополнительного софта хоть и возможна, но не поощряется. С точки зрения безопасности, чем меньше софта на роутере крутится, тем сложнее его хакнуть. К этому ограничению я приспособился в основном с помощью того, что перенес всякие рюшечки, что у меня на FreeBSD стояли, с роутера в другое место. Но одну из таких рюшечек — transmission — я по разным причинам хотел оставить на роутере. Мне это удалось без приложения героических усилий, но обошлось не без нюансов.

Собственно установка ничем не примечательна (pkg_add -r transmission-daemon и pkg_add -r transmission-web), а вот дальше есть любопытные моменты.

Первое: в pfSense нет /etc/rc.conf. Даже если его создать, он будет удален после перезагрузки. Поэтому нужно вместо него использовать /etc/rc.conf.local — если его нет, то создайте, и в нем пропишите настройки запуска transmisson. В моем случае они выглядят следующим образом:

Второе: чтобы rc-скрипты демонов в /usr/local/etc/rc.d/ отрабатывали при загрузке, они должны иметь расширение .sh. Поэтому /usr/local/etc/rc.d/transmission нужно переименовать (а лучше — скопировать, чтобы команда service работала привычным образом) в transmission.sh:

И, наконец, десерт. После перезагрузки transmission отказывался запускаться со следующим сообщением:

Очевидно, это опять самоочистка pfSense при перезагрузке в действии. Покопавшись в пакетах, я нашел команду, эффект от которой перезагрузку не переживает:

Выполнение этой команды оживит transmission. Чтобы эта команда выполнялась при загрузке роутера, лучше всего воспользоваться созданным специально для таких случаев механизмом в pfSense: таг shellcmd (внутри тага system) в config.xml. Команда внутри такого тага будет выполнена при загрузке. Можно, чтобы не править config.xml вручную, поставить пакет pfSense (не путать с пакетами FreeBSD!) с очевидным названием shellcmd, после чего команды shellcmd можно будет править из web-интерфейса pfSense.

Дальнейшая настройка transmission ничем не отличается от таковой для FreeBSD, но для полноты картины и чтобы читателю не бегать лишний раз по форумам, вкратце опишу ее здесь.

На каталог с закачками нужно раздать необходимые права. Я поступил просто — поменял владельца:

Настройки transmission обитают в /usr/local/etc/transmission/settings.json, допустимые параметры описаны на wiki проекта, повторятся не буду. В качестве отправной точки приведу свой конфиг:

Да! Не забудьте порт transmission (51413 в моем случае) в файрволе открыть, по TCP и UDP. Можно, конечно, оставить вопрос на откуп UPnP, но я предпочитаю явное правило — в первую очередь для того, чтобы натравить на него шейпер.

Для доступа к transmission есть, во-первых, Web-интерфейс (http://192.168.0.1:9091/ в моем случае), а во-вторых, написанная добрыми людьми софтина Transmission Remote GUI, которая локальный функционал utorrent в рамках моих потребностей вполне заменяет.

Для доступа к закачкам с Windows PC я на роутере самбу поднял, но это уже отдельная тема. Если кому интересно, попросите в комментах, и я напишу пост.

Уточню: я возился с pfSense 2.1.4, что на базе FreeBSD 8.3.

Добавить комментарий