Как настраивать канал 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