FreeBSD. Маршрутизатор

Материал из Wiki
Версия от 17:57, 27 июня 2023; Cless (обсуждение | вклад) (Новая страница: «= Конфигурирование ядра = === Вариант1. Установка исходников ядра с CD через sysinstall === * Запус...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Конфигурирование ядра

Вариант1. Установка исходников ядра с CD через sysinstall

  • Запускаем sysinstall
  • Configure - Distributions - src
  • Выбираем base и sys

Вариант 2. Установка исходников ядра с CD через консоль

mount /cdrom

mkdir -p /usr/src/sys

ln -s /usr/src/sys /sys

cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

cat /cdrom/src/sbase.[a-d]* | tar -xzvf -

Копируем файл конфигурации ядра "/usr/src/sys/i386/conf/GENERIC", а затем создаем символическую ссылку на этот файл в каталоге i386

cd /usr/src/sys/i386/conf

mkdir /root/kernels

cp GENERIC /root/kernels/MYKERNEL

ln -s /root/kernels/MYKERNEL

Редактируем файл конфигурации ядра

nano /usr/src/sys/i386/MYKERNEL

options IPFIREWALL 
options IPFIREWALL_VERBOSE 
options IPFIREWALL_VERBOSE_LIMIT=10 
options IPDIVERT 
options IPFIREWALL_DEFAULT_TO_ACCEPT 
options DUMMYNET

Здесь IPFIREWALL означает включение программы файервола ipfw, IPFIREWALL_VERBOSE означает ведение логов ipfw, IPFIREWALL_VERBOSE_LIMIT=10 ограничичивает максимальное число записей, которые могут быть сделаны в секунду. Учитывайте то, что если вы поставите большое число для IPFIREWALL_VERBOSE_LIMIT, то ваш винчестер может засорится от быстрорастущих логов. IPDIVERT означает включение демона маскарадинга natd, IPFIREWALL_DEFAULT_TO_ACCEPT означает, что ваш файервол по дефолту будет открытым. Если вы не указываете этой опции, то при старте файервола любой доступ из сети к компьютеру будет закрыт.

Советую включить опцию IPFIREWALL_DEFAULT_TO_ACCEPT, потому что как только вы разберетесь с правилами у ipfw, то сможете закрыть все, что не нужно и оставить только используемые порты. DUMMYNET означает, что вы сможете контролировать скорость передачи через ваш компьютер

Сборка

/etc/make.conf

MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs
#Эта переменная устанавливает список модулей, которые нужно построить вместо построения всех модулей.
WITHOUT_MODULES = linux acpi sound ntfs
#В этой переменной перечисляются основные модули, которые необходимо исключить из процесса сборки.

cd /usr/src

make buildkernel KERNCONF=MYKERNEL

make installkernel KERNCONF=MYKERNEL

Новое ядро будет скопировано в каталог /boot/kernel как /boot/kernel/kernel, а старое ядро будет перемещено в /boot/kernel.old/kernel

Скажем ядру, чтобы при старте он понимал, что этот компьютер - роутер.

nano /etc/rc.conf

gateway_enable="YES"
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"
natd_enable="YES"

Сетевая карта, которая подключена к интернету имеет название em1 и ее ip-адрес в интернете 194.67.18.8, а сетевая карта, которая подключена к локальной сети имеет название em0 и ее ip-адрес в локальной сети 10.0.0.1

nano /etc/natd.conf

use_sockets yes
same_ports yes
unregistered_only yes
interface em1

nano /usr/local/etc/rc.d/ipfw_natd.sh

#!/bin/sh 
natd -f /etc/natd.conf -n em1 
ipfw add 500 divert natd all from any to any via em1 

Это означает, что мы включаем маскарадинг с помощью natd через ipfw, разрешаем всем соединяться с сервером, как если бы он был без файрвола и разрешаем всем из локальной сети ходить в интернет.

chmod +x /usr/local/etc/rc.d/ipfw_natd.sh

reboot

Ниже приведен пример, показывающий как можно выделить себе и начальнику по отдельному каналу, а всем остальным дать только 64К. em1 - это сетевая карточка, подключенная к интернету.

#!/bin/sh

ipfw -f flush

natd -f /etc/natd.conf -n em1

ipfw add 500 divert natd all from any to any via em1

ipfw add 1001 pipe 1 ip from 192.168.111.33 to any out via em1
ipfw add 1002 pipe 2 ip from any to 192.168.111.33 in via em1

ipfw pipe 1 config bw 16Kbytes
ipfw pipe 2 config bw 16Kbytes

ipfw add 1003 pipe 3 ip from 192.168.111.34 to any out via em1
ipfw add 1004 pipe 4 ip from any to 192.168.111.34 in via em1

ipfw pipe 3 config bw 32Kbytes
ipfw pipe 4 config bw 32Kbytes

ipfw add 1005 pipe 5 ip from 192.168.111.0/24 to any out via em1
ipfw add 1006 pipe 6 ip from any to 192.168.111.0/24 in via em1

ipfw pipe 5 config bw 64Kbytes
ipfw pipe 6 config bw 64Kbytes