Настройка NAT с PPTP каналом (VPN) на FreeBSD

Apr 15, 2010 17:57

Как настраивать канал PPTP я не буду разъяснять, но к примеру у меня поднимается канал с помощью mpd5. Как его настраивать есть все в другом описании.
У нас имеется:
1. Внешняя локальная сеть с адрессом 192.168.0.20 со шлюзом 192.168.0.1 и макской подсети 255.255.255.0. Интерфейс rl0.
2. Внутренняя локальная сеть с адресами 192.168.1.0 (IP сервера 192.168.1.1) и маской подсети 255.255.255.0. Интерфейс rl1.
3. Поднятый PPTP канал, который поднимается через внешнюю локальную сеть, для доступа в Интернет. Интерфейс ng0.
Нам необходимо: Чтобы из внутренней локальной сети имели доступ как во внешнюю локальную сеть (имея доступ ко всем внутренним ресурсам сети), так и доступ в Интернет
Используем: PF, mpd5


Настройка
Для того чтобы реализовать все необходимые возможности, то нам необходимо пересобрать ядро с такими функциями:
device          pf
device          pflog
device          pfsync
options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_PRIQ

device pf включает поддержку межсетевого экрана ''Packet Filter''.
device pflog включает необязательное сетевое псевдоустройство pflog, которое может использоваться для протоколирования трафика через bpf. Даемон pflogd может использоваться для сохранения протоколируемой информации на диск.
device pfsync включает необязательное сетевое псевдоустройство pfsync, используемое для отслеживания ''изменений состояния''. Поскольку оно не входит в загружаемый модуль, для его использования необходимо собрать собственное ядро.
options ALTQ включает подсистему ALTQ.
options ALTQ_CBQ включает Class Based Queuing (CBQ). CBQ позволяет распределять пропускную способность соединений по классам или очередям для выставления приоритетов трафика на основе правил фильтрации.
options ALTQ_RED включает Random Early Detection (RED). RED используется для предотвращения перегрузки сети. RED вычисляет длину очереди и сравнивает ее с минимальной и максимальной границей очереди. Если очередь превышает максимум, все новые пакеты отбрасываются. В соответствии со своим названием, RED отбрасывает пакеты из различные соединений в произвольном порядке.
options ALTQ_RIO включает Random Early Detection In and Out.
options ALTQ_PRIQ включает Priority Queuing (PRIQ). PRIQ всегда пропускает трафик из более высокой очереди первым.
Более подробно можно прочитать в документации на оффициальном сайте FreeBSD

После компиляции ядра для запуска PF необходимо добавить добавить в rc.conf слудующие записи:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pf_flags=""

pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"
pfsync_syncdev=""
pfsync_ifconfig=""

Так же необходимо создать настройки PF, которые храняться в /etc/pf.conf

#указываем интерфейс внутренней сетевой карточки
int_if="rl0"
#указывает интерфейс внешней сетевой карточки
ext_if="rl1"
#указываем интерфейс PPTP тунеля
ext_if_tun="ng0"

localnet="192.168.1.0/24"

icmp_types="{echoreq, unreach}"
set block-policy return

#разрешаем все по lo0 и внутренней сети
set skip on lo0
set skip on $int_if
scrub in all

#включаем нат
nat on $ext_if from $localnet to any -> ($ext_if)
nat on $ext_if_tun from $int_if:network to any -> ($ext_if_tun)

pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
pass inet proto icmp all icmp-type $icmp_types
#antispoof quick for $ext_if
#bkock all

Сохраняем все настройки. Задаем команду reboot. Ждем когда перезагрузится и радуемся рабочей системе!

Для написания данной статьи были использованы материалы с форума tuxnotes.
(c) ReVeRSeR

vpn, pf, freebsd, pptp, nat

Previous post Next post
Up