FreeBSD + ipfw + natd + torrent проброс порта для отдачи\скачки

После установки и настройки ipfw + natd на клиентской машине, что за FreeBSD понадобился проброс порта для торрента, скачка хотя и так была, а торрент все грешил на закрытый порт, не хорошо как то… Решил исправить! Итак, система:

Долго пытался понять, почему ж не пускает, вроде все настроил правильно, а нет, заглянул в логи по адресу:

и смотрю там очень интересно как то все, в том числе блокировка соединений по udp порту к моему клиенту, к сожалению, часть лога приложить не могу, обнулился только что по достижении 100Кб, а проблему уже исправил).

Итак, описываю решение:

1. Для начала выполнить настройки клиента торрента, у меня это uTorrent 2.0.4. Выбираем порт для соединений:

Настройка -> Конфигурация -> Соединение

Выбираем порт для соединения и снимаем галочку «Новый порт при запуске», если таковая установлена.

Теперь приступаем к настройке на FreeBSD:

Для начала расскажу немного о топологии всей сети, у меня ADSL модем, на него поднимает PPPoE соединение с FreeBSD, далее ipfw + nat раскидиывает и сортирует траффик как моей душе угодно, после чего выходим на локальную сеть и отдаем\принимаем все клиентам.))

Для проброрса порта проводил несколько экспериментов и только 1 увенчался полным успехом, о котором расскажу кратко:

В natd.conf (Или прочий файл, с которого nat читает ваши настройки, описан в rc.conf: natd_flags=»-dynamic -f /etc/natd.conf») дописал проброс:

где:

192.168.0.150 — имя клиентской машины

30341 — порт, выбранный мной для торрента

В скрипте Вашего фаервола (так же описывается в rc.conf: firewall_script=»/usr/IPFW/firewall.sh»)

где:

${fw} — путь к скрипту: «/sbin/ipfw -q»

${daniil} — адрес клиентской машины: 192.168.0.150

${outip} — внешний интерфейс, в моем случае tun0

${inif} — локальный IP сервера

Данный метод сто процентов рабочий на нормально настроенном фаерволе. =)

VN:F [1.9.22_1171]
Рейтинг: 0.0/5 (0 голос (-ов) всего)

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

    Error thrown

    Call to undefined function ereg()