Чтобы в VoIP-шлюзе Audiocodes MP-202 переадресовать порты 80, 8080 или 443 на сервер внутри локальной сети, кроме соответствующих настроек в разделе «Переадресация портов», в разделе «Системные настройки» требуется изменить совпадающие порты для удаленного управления.
вторник, 12 ноября 2013 г.
вторник, 1 декабря 2009 г.
Аналог reply-to из PF в IPFW
Нашел интересную статью с описанием работы межсетевого экрана IPFW. В частности, упомянута реализация действия, аналогичного reply-to из PF:
«
Тот факт, что на самом деле "перепрыгивание" выполняется на параметры действия, позволяет использовать это для интересных вещей. В частности, с использованием появившегося во FreeBSD 6.2 параметра tag на каждый пакет можно навешивать внутриядерный тег, что в применении со skipto позволяет сделать, к примеру, запоминание, с какого шлюза пришел входящий пакет на машине с каналами к двум разным провайдерам, и ответные пакеты отправлять в тот канал, откуда они пришли (допустим, у вашей машины только один IP-адрес, и сделать fwd на базе внешнего адреса не получится), т.е. реализовать аналог reply-to из PF:
ipfw add 100 skipto 300 tag 1 in recv $ext_if1 keep-state»
ipfw add 200 skipto 300 tag 2 in recv $ext_if2 keep-state
ipfw add 300 allow { recv $ext_if1 or recv $ext_if2 } # входящие снаружи
ipfw add 400 allow in recv $int_if # разрешить ответы на внутреннем проходе
ipfw add 500 fwd $gw1 tagged 1 # остались ответы на внешнем интерфейсе,
ipfw add 600 fwd $gw2 tagged 2 # зарулим их куда надо
суббота, 28 ноября 2009 г.
Трансляция PPTP (GRE) на шлюзе с PF
Как известно, межсетевой экран PF, портированный в FreeBSD из OpenBSD, не может корректно транслировать (NAT) GRE-протокол и, к примеру, из локальной сети невозможно создать несколько одновременных соединений к внешнему серверу VPN PPTP.
Одним из способов решения проблемы является трансляция PPTP-соединений родным IPFW с «ядерным» NAT. При этом вовсе необязательно компилировать ядро. Все описанные действия проверены в FreeBSD версии 7.2. Но должно работать и в других версиях, где есть поддержка «ядерного» NAT для IPFW.
В «/etc/rc.conf» добавляем
#Включаем IPFWСоздаем файл «
firewall_enable="YES"
# Подгружаем модуль ядра ipfw_nat
firewall_nat_enable="YES"
# Указываем путь к скрипту загрузки правил
firewall_script="/etc/ipfw.script"
/etc/ipfw.script»#!/bin/shДелаем скрипт исполняемым
/sbin/ipfw -q /dev/stdin <<RULES
flush
#em0 - внешний интерфейс шлюза
nat 10 config if em0
#Правила для трансляции PPTP-соединения
add 10 nat 10 gre from any to any
add 11 nat 10 tcp from any to any dst-port pptp
add 12 nat 10 tcp from any pptp to any
# Разрешаем весь трафик
add allow all from any to any
RULES
# chmod +x /etc/ipfw.scriptДобавляем в правила PF
# Запрещаем PF транслировать PPTP-соединенияПосле всех сделанных изменений перезагружаемся.
no nat on $external_if proto gre all
no nat on $external_if proto tcp from any to any port = pptp
no nat on $external_if proto tcp from any port = pptp to any
... skip ...
# Пропускаем PPTP-соединения
pass quick on $external_if inet proto tcp from any to any port 1723
pass quick on $external_if inet proto tcp from any port 1723 to any
pass quick on $external_if inet proto gre from any to any
вторник, 19 августа 2008 г.
Множественные таблицы маршрутизации в FreeBSD 7.0-STABLE
- Обновляем исходные коды системы из CVS-ветки «
RELENG_7»# csup cvsup.RELENG7
Файлcvsup.RELENG7*default host=cvsup.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_7
*default delete use-rel-suffix
src-all - В опции ядра добавляем
options ROUTETABLES=N
гдеN- число используемых таблиц.
Собираем ядро и систему# make buildworld kernel
Переходим в однопользовательский режим и после установки системы перезагружаемся# init 1
# mergemaster -p
# make installworld
# make delete-old
# mergemaster
# reboot - Таблицы маршрутизации управляются через команду
setfib.
Синтаксис командыsetfib [-[F]]N command
где N - номер таблицы маршрутизации.
Просмотр таблиц# setfib N netstat -rn
Изменение таблиц# setfib N route {add|change|delete|flush} ...Пример применения в консоли# setfib N traceroute www.domain.ru
- В
ipfwдобавлены две дополнительные конструкцииsetfib N ip from any to any
иcount ip from any to any fib N
- В
PFдля работы с таблицами маршрутизации предусмотрена опция «rtable N». Пример:pass out on fxp0 from any to any keep state rtable N
воскресенье, 9 марта 2008 г.
В интернет из lo0
Если ваши jail-машины висят на интерфейсе lo0, предоставить им доступ в локальную сеть (интернет) можно таким образом:
1. в /etc/rc.conf добавить
# Разрешить маршрутизацию2. создать или отредактировать файл
gateway_enable="YES"
# Включить PF
pf_enable="YES"
# Указываем файл конфигурации PF
pf_rules="/etc/pf-custom.conf"
/etc/pf-custom.conf, добавив следущее# IP-адрес вашей jail-машины3. Запускаем PF из под рута
my_jail="127.0.0.100"
lo="lo0"
if="if0"
nat on $if from $my_jail to !$lo:0:network tag FROM_JAIL -> $if
pass out on $if proto tcp to any tagged FROM_JAIL keep state flags S/SA
/etc/rc.d/pf start
среда, 24 октября 2007 г.
ftp-proxy в freebsd
Дело было ранней зимой. Требовалось обеспечить доступ из интернета к ftp-серверу в локальной сети. Сперва решил тупо перенаправить на него порт 21 и порты выше 1025, но выглядело это не очень красиво.
В результате было решено поднять на шлюзе прокси-сервер для протокола ftp (ftp-proxy - портированный из openbsd вместе с pf) и настроить его для работы в обратную сторону.
Что нужно сделать:
1. Добавить в файл /etc/inetd.conf строку:
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -R <local-ftp-server> -S <local-net-if>
где
<local-ftp-server> - ip-адрес внутреннего ftp-сервера,
<local-net-if> - ip-адрес внутреннего интерфейса шлюза.
2. Настроить параметры запуска inetd в /etc/rc.conf:
inetd_enable="YES"
inetd_flags="-wW -c 60 -a 80.xx.yy.zz"
где 80.xx.yy.zz - внешний ip-адрес шлюза.
3. Настроить pf:
rdr on $ext_if proto tcp from any to $ext_ip port ftp tag TRAF_FTP -> 80.xx.yy.zz port 8021
< ... skip ... >
pass in on $ext_if reply-to proto tcp tagged TRAF_FTP flags S/SA keep state
pass out on $ext_if proto tcp from $ext_ip to any flags S/SA user proxy keep state
pass in on $ext_if proto tcp from any to $ext_ip flags S/SA user proxy keep state
pass out on $int_if proto tcp from $int_ip to any flags S/SA user proxy keep state
pass in on $int_if proto tcp from any to $int_ip flags S/SA user proxy keep state
где
$int_if - локальный интерфейс,
$int_ip - ip-адрес локального интерфейса,
$ext_if - внешний интерфейс,
$ext_ip - ip-адрес внешнего интерфейса,
proxy - имя пользователя ftp-proxy.
4. Запустить inetd.
# /etc/rc.d/inetd start
Прокси-сервер может работать в пассивном режиме. Работу в активном режиме не проверял.
P.S. Данные настройки действительны для семейства FreeBSD 6.x
