headermask image

Notice: Undefined variable: t in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15

Notice: Undefined variable: r in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

Раздаем инет в FreeBSD: natd + ipfw + dhcpd

Продолжаю серию постов про своё изучение FreeBSD. Ещё раз хотелось бы подчеркнуть. Точнее даже не подчеркнуть, я вроде ещё этого не говорил :). Данные краткие мануалы это не моя попытка написать новое мега исчерпывающее руководство по настройке какого-нибудь сервиса, это заметка больше для меня, для запоминания и возможного последующего использования.

Итак, после того как был сделан и удален до лучших времен bridge я дал сам себе маленькое ТЗ:

Вкратце план такой, раздавать инет, выдавать айпишники с помощью dhcp, защищать немного с помощью ipfw

Тз почти выполнено, за исключением последнего пункта, ipfw у меня ничего не защищает :) С ним я буду разбираться немного позднее, возможно сегодня же выложу отличную на мой взгляд статью, которую ещё не прочитал, но на первый взгляд очень хорошо все расписано.

NATD + IPWF

firewall_enable="YES"
firewall_script="/etc/rc.myipfw"
natd_enable="YES"
natd_interface="vr0"
natd_flags=""

По пунктам:
firewall_enable=”YES” подгружаем модуль ipfw в ядро при загрузке
firewall_script=”/etc/rc.myipfw” правила ipfw берем из файла /etc/rc.myipfw , название любое, я сделал такое. Сами правила:

#!/bin/sh
ipfw -q -f flush # чистим
# устанавливаем переменные
cmd="ipfw -q add " # для краткости
# теперь загружаем, используя краткие "макросы"
$cmd 00300 divert natd all from any to any
$cmd 00600 allow ip from any to any

Видя эти правила, можно понять почему ipfw у меня ничего не защищает, да и вообще я с ним особенно не разбирался :) Разрешено всё и всем, главное работает, да и ладно.

natd_enable=”YES” включаем natd
natd_interface=”vr0″ указываем внешний интерфейс

На данном этапе все работает, вручную задавая айпи на компьютере внутренней сети имеем на нем инет.

DHCPD

Я обновил порты и поставил isc-dhcp3-server. Далее

cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf

Редактируем dhcpd.conf. У меня получилось что то вроде


option domain-name-servers 192.168.0.112;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.20;
option routers 192.168.10.1;
}

Собственно сама сеть, и диапазон айпи, которые выдавать, роутер по умолчанию, DNS.

Включаем в rc.conf

dhcpd_enable="YES"
dhcpd_ifaces="rl0"

dhcpd_ifaces=”rl0″ в какой сети слушает и раздает адреса наш сервер.

Вроде все. Сейчас разберусь с ipfw, напишу о впечатлениях и заметках, а потом придумаю что ещё замутить. Вероятнее всего это будет что то с подсчетом трафика.

2 комментов оставлено (Add 1 more)

  1. СПАСИБО!!!
    Задача стояла не совсем обычная, тонну мануалов перекурил, спасла эта небольшая статья, коротко и понятно!

    1. YuraBiz on October 24th, 2012 at 7:49 pm
  2. Для выполнения подобных вещей очень хорошо подходит PFSense – http://www.pfsense.org.
    Это файервол с дополнительными сервисами на базе FreeBSD

    2. Sharm on February 1st, 2008 at 3:14 am