PF FreeBSD 8.2
Добавлено: 2012-04-18 13:43:13
Добрый день господа! Взялся за изучение packet filter на FreeBSD 8.2. Материалов по данному пакету полно на просторах интернета. Собственно приступил. Провайдер дает интернет с белым IP адресом.
В rc.conf:
/etc/resolv.conf отсутствовал, создаем и прописываем DNS сервера провайдера 222.222.222.222 и т.д.
Еще и ядро откомпилировал:
Наконец сеть проверена, шлюз провайдера пингуется, nslookup запросы идут.
Один из самых простых примеров который можно найти в интернете:
Пробуем, создаем конфиг /etc/pf.conf:
На клиенте, прописываем (например ip 192.168.1.18 маска 255.255.255.240, шлюз и dns 192.168.1.17 ) пробуем интернет,
Надо запустить на шлюзе named.
named.conf:
Вообще пробовал и только с такой записью
В rc.conf добавляем
Запускаем демон named
В pf.conf добавляем
Запросы пошли, но хм блокирует.
Стоит изменить на
Дело пошло.
Получается запись вида бесполезна, трафик обрабатывается не как от локального клиента, а не посредственно от шлюза.
Но раз чуть ли не в каждой статье подобные примеры
значит должно работать. Кто может подсказать по данному вопросу? Может где недочет.
В rc.conf:
Код: Выделить всё
#Network internet
ifconfig_bge0="inet 1.1.1.1 netmask 255.255.255.252"
defaultrouter="1.1.1.2"
#Network local
ifconfig_em0="192.168.1.17 netmask 255.255.255.240"
gateway_enable="YES"
#Packet Filter
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
Еще и ядро откомпилировал:
Код: Выделить всё
device pf
device pflog
device pfsync
Один из самых простых примеров который можно найти в интернете:
Код: Выделить всё
ext_if = "ep0" # macro for external interface - use tun0 for PPPoE
int_if = "ep1" # macro for internal interface
localnet = $int_if:network
# ext_if IP address could be dynamic, hence ($ext_if)
nat on $ext_if from $localnet to any -> ($ext_if)
block all
pass inet proto tcp from { lo0, $localnet } to any keep state
Код: Выделить всё
ext_if=”bge0” # смотрит в инет
int_if=”em0” # смотрит в локалку
lan_net=”192.168.1.16/28”
set skip on $int_if
set block-policy return
nat on $exit_if from $lan_net to any ? $ext_if
block all
pass inet from $lan_net to any keep state
Код: Выделить всё
Ошибка 105 (net::ERR_NAME_NOT_RESOLVED): Не удается преобразовать DNS-адрес сервера
named.conf:
Код: Выделить всё
listen-on { 192.168.1.17; };
forwarders {
222.222.222.222;
dns сервер провайдера;
};
forward only;
Код: Выделить всё
listen-on { any; }
Код: Выделить всё
named_enable="YES"
В pf.conf добавляем
Код: Выделить всё
pass proto { tcp, udp } from $ext_if to any port domain keep state
Код: Выделить всё
Ошибка 101 (net::ERR_CONNECTION_RESET): Соединение сброшено
Стоит изменить на
Код: Выделить всё
pass proto { tcp, udp } from $ext_if to any port { domain, http, и т.д. } keep state
Получается запись вида
Код: Выделить всё
pass inet from $lan_net to any keep state
Но раз чуть ли не в каждой статье подобные примеры
Код: Выделить всё
ext_if = "ep0" # macro for external interface - use tun0 for PPPoE
int_if = "ep1" # macro for internal interface
localnet = $int_if:network
# ext_if IP address could be dynamic, hence ($ext_if)
nat on $ext_if from $localnet to any -> ($ext_if)
block all
pass inet proto tcp from { lo0, $localnet } to any keep state