Задача довольно тривиальная: сервер на FreeBSD имеет 2-е сетевые карты; в одну вставлен RJ-45 от ADSL-модема, от второй сетевой карты кабель идёт в коммутатор, а уже посредством коммутатора сеть получают остальные ПК. Сервер FreeBSD соединяется с интернетом по PPPOE и будет раздавать его остальным. Реализовывать раздачу будем nat‘ом. Опишу почти самый простой способ.
Сначала перекомпилим ядро, не пугайтесь, это не сложно, нем более мы лишь добавим туда несколько нужных параметров, а не будем пересматривать всё содержимое конфигурационного файла (это отдельная история).
1) Проверим, присутствуют ли тексты ядра:

1
ls /usr/src/sys

Если такого каталога нет, значит вставляем диск №1 с freebsd в cd-rom на сервере,
заходим в систему под root’ом:

1
2
su -l
Password:

запускаем:

1
sysinstall

выбраем Configure, далее Distributions, потом src, потом base и sys.
Жмём везде «ОК», ждём пока не спросят откукда устанавливать, выбираем CD/DVD

и ждём пока скопируются исходники.
Тем, кто устанавливал FreeBSD по этой инструкции, пункт 1 можно пропустить.
2) Тексты ядра скопировались, далее:

1
2
3
cd /usr/src/sys/i386/conf
cp GENERIC mykern
ee /usr/src/sys/i386/conf/mykern

Меняем строчку:

1
ident GENERIC

на:

1
ident mykern

и в конце файлика mykern, который мы редактируем, добавляем строки:

1
2
3
4
5
6
7
8
9
10
11
12
13
# dlya paketov
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
# dlya krasoty
options SC_PIXEL_MODE
options VESA
options VGA_WIDTH90
options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options SC_KERNEL_CONS_ATTR=(FG_YELLOW|BG_BLACK)

Закрываем файлик, сохранив изменения. После этого делаем:

1
2
3
cd /usr/src
make buildkernel KERNCONF=mykern
make installkernel KERNCONF=mykern

ВНИМАНИЕ: Если вы выполнили успешно 2-е последние строчки и находитесь физически далеко от сервера, не перезагружайтесь, иначе фаервол начнёт действовать и блокировать все пакеты (выполняется правило по умолчанию)

3) Далее подредактируем:

1
ee /etc/rc.conf

Проверим наличие строк:

1
2
3
4
5
6
7
8
gateway_enable="YES"
natd_enable="YES"
#re0-сетевой интерфейс, к которому подключён ADSL (измените на свой)
natd_interface="re0"
natd_flags="-dynamic -f /etc/natd.conf"
firewall_enable="YES"
#файл с правилами фаервола-rc.firewall
firewall_script="/etc/rc.firewall"

Если вышеуказанных строк нет(а их скорее всего нет), добавьте их.

4) Теперь:

1
ee /etc/natd.conf

Содержимое должно быть следующим (исправьте если это не так):

1
2
3
4
5
6
7
log yes
deny_incoming yes
verbose no
log_denied yes
same_ports yes
use_sockets yes
unregistered_only yes

5) Добавим пару простейших правил, лишь бы заработал необходимый минимум.

1
2
3
mv /etc/rc.firewall /etc/rc.firewall_old
cp /etc/rc.firewall_old /etc/rc.firewall
ee /etc/rc.firewall

Стираем там всё, зажав сочетание кнопок Ctrl+K
и впишим туда следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/sbin/ipfw -f flush
/sbin/ipfw -q add 00100 allow all from any to any via lo0
/sbin/ipfw -q add 00101 allow all from any to 127.0.0.0/8
/sbin/ipfw -q add 00102 allow all from 127.0.0.0/8 to any
#re0-сетевой интерфейс, к которому подключён ADSL (измените на свой)
/sbin/ipfw -q add divert natd all from any to any via re0
#re1-сетевой интерфейс, к которому подключён коммутатор(хаб,свич)(измените на свой)
/sbin/ipfw -q add 00103 allow all from any to any via re1
#www allow
/sbin/ipfw -q add 00104 allow all from any to any 80
/sbin/ipfw -q add 00105 allow all from any 80 to any
#ssh allow
/sbin/ipfw -q add 00106 allow all from any to any 22
/sbin/ipfw -q add 00107 allow all from any 22 to any
#dns allow
/sbin/ipfw -q add 00108 allow all from any to any 53
/sbin/ipfw -q add 00109 allow all from any 53 to any
#ping allow
/sbin/ipfw -q add 00110 allow icmp from any to any

6) Всё, перезагружаем сервер:

1
shutdown -r now

момент истины.

7) Клиенты.
Когда с сервером всё завершено успешно, на клиентах в настройках сетевого интерфейса, в качестве шлюза надо прописать внутренний адрес нашего сервера (в данном примере это ip адрес re1). И IP адреса и маска подсети у клиентов должны быть из той же подсети, что и re1, а так же не забудьте прописать dns сервера (скорее всего их вам сообщил провайдер). От настройки клиентов можно избавиться, настроив один раз dhcp-сервер и указав клиентам, автоматически получать настройки сети.

— ниже не обязательно для прочтения —
для тех, кто хочет понять хотябы коротко, что мы сделали:
Впаяли в ядро фаервол, в атозагрузку добавили nad и фаервол, создали правила, разрешающие ssh, www, ping, dns, перезапустили сервер и настроили клиентов. Таким образом обеспечили раздачу интернета через freebsd сервер. Более подробное конфигурирование ядра и правил фаервола-это уже темы отдельных статей.

5 Комментариев к “Простой способ раздачи интернета в сети”

  1. [...] надо пересобрать ядро. Как это делается, написано здесь. Вам нужно выполнить там пункты 1 и 2 , но в пункте 2 в [...]

  2. Не пойму зачем писать опции для красоты. К фаерволлу или нату это никак не относится :) .

    • Это бонус :-)
      Я смотрю, вы, tehnikpc, частый посетитель mediaunix.com . Оч приятно, что есть таковые, и вдвойне приятней, когда по делу укажут на ошибки/недочёты.

  3. Пинг до сервера на FreeBSD с пк в сети? Откуда, куда пинг? Скорее всего фокус в правилах фаервола.

  4. пересобрал ядро, пытаюсь отправить Ping, пишет
    permission denied, в чем дело?

Оставить комментарий

Вы вошли как nickdeflor. Выйти.

Вы можете использовать следующие теги HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2009-2012 Media UniX

Rambler's Top100 Suffusion theme by Sayontan Sinha