Наверх

Настройка NAT

В статье описывается процесс настройки NAT'а (natd) на простом примере предоставления доступа к ресурсам внешней сети (или интернету) из внутренней локальной сети.
Здесь мы будем рассматривать настройку ната на примере соединения локальных сетей.
Если вам нужно "раздавать" интернет на внутреннюю сеть вместо этого, не расстраивайтесь, там всё точно также :)
Итак, у нас есть сервер под управлением FreeBSD, подключенный к локальной сети провайдера ("внешняя сеть").
Также имеется один или несколько компьютеров ("внутреняя сеть"), которым нужно дать достук ресурсам сети провайдера.
Подключить компьютеры внутренней сети напрямую к внешней нельзя, т.к. у нас есть всего 1 IP-Адрес во внешней сети, который выдан нашему серверу.
Выходом из ситуации будет соединение сетей через сервер (в данной ситуации всётаки "роутер" будет более правильно) при помощи технологии NAT (Network Address Translation)
Предположим что сеть провайдера имеет диапазон 10.10.10.0/24, а IP нашего роутера в ней 10.10.10.10
Внуренняя сеть же имеет диапазон 172.16.0.0/24 и IP нашего роутера в ней 172.16.0.1
Диапазон IP адресов во внутренней сети может быть любой, однако необходимо чтобы он не пересекался с диапазонами ни в одной внешней сети.
Рекомендуется придерживаться зарезервированных для локальных сетей диапазонов, которые не используются в интернете, а именно:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Итого имеем:
Внешняя сеть:
Интерфейс: rl0
IP: 10.10.10.10 netmask 255.255.255.0
Шлюз: 10.10.10.1
Внутренняя сеть:
Интерфейс: rl1
IP: 172.16.0.1 netmask 255.255.255.0
Объединяя всё написанное выше, получем такую схему сети:



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

 

Настройка роутера


Непосредственно за преобразование адресов (NAT) отвечает демон NATD.
Сам по себе он не может обрабтывать пакеты. Для обработки пакет должен быть передан ему фаерволлом.
В данной статье мы используем фаерволл ipfw.
Настройка сводится к нескольким шагам, некоторые вы возможно пропустите, если система уже имеет подходящие настройки.

1. Сборка ядра


Для получения возможности использовать NAT и Фаерволл, нам потребуется собрать новое ядро с дополнительными опциями.
Более подробно о сборке ядра можно почитать в соотвествующей главе Руководства по FreeBSD.
Необходимо собрать ядро со следующими опциями:

options IPFIREWALL
options IPDIVERT

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

cd /usr/src/sys/i386/conf
cp GENERIC NATKERNEL
ee NATKERNEL


Изменяем строку 
ident GENERIC
на
ident NATKERNEL
после чего добавляем строки
options IPFIREWALL
options IPDIVERT


и наконец, сохраняем (ESC, a, a)
-
Конфиг ядра готов. Теперь компилируем:
cd /usr/src
make buildkernel KERNCONF=NATKERNEL


Когда компиляция будет завершена, останется только установить новое ядро.
Это так же очень просто:
cd /usr/src
make installkernel KERNCONF=NATKERNEL


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

2. Настройка фаерволла


Если вы ранее использовали фаерволл ipfw, то необходимо добавить к нему следующее правило:
divert natd ip any to any via rl0
Означет оно следующее: передавать все ip пакеты на обработку внешней программе, "висящей" на стандартном порту natd (8668).
Если же фаерволл у вас не настроен, то мы его сейчас настроим :)
Создаём файл /etc/firewall.conf и пишем в нём следующие строки:
fw="/sbin/ipfw -q"

${fw} -f flush
${fw} add divert natd ip any to any via rl0
${fw} add 65534 allow ip any to any


После чего сохраняем файл.
Теперь необходимо поставить права на выполнение данного файла.
chmod 700 /etc/firewall.conf

3. Настройка параметров автозапуска сети, фаерволла и natd


Вот мы и добрались до финального шага настройки.
Сейчас нам необходимо внести некоторые изменения в файл /etc/rc.conf для обеспечения автоматической настойки сети, фаерволла и запуска NAT'а при загрузке системы.
Сначала сеть:
ifconfig_rl0="inet 10.10.10.10 netmask 255.255.255.0"
ifconfig_rl1="inet 172.16.0.1 netmask 255.255.255.0"
defaultrouter="10.10.10.1"


Теперь фаерволл:
firewall_enable="YES"
firewall_script="/etc/firewall.conf"

И наконец NAT:
gateway_enable="YES"
natd_enable="YES"
natd_interface="rl0"

Также желательно добавить следующую строку в /etc/sysctl.conf
net.inet.ip.forwarding=1
Это аналогия gateway_enable="YES"

На этом базовая настройка роутера закончена.
После перезагрузки NAT должен заработать.
Если этого не произошло, то проверьте правильно ли вы всё сделали.

Настройка компьютеров внутренней сети


На компьютерах внутренней сети необходимо установить следующие параметры:
IP: 172.16.0.2 - 172.16.0.254
Шлюз: 172.0.0.1

Вот так просто настраивается NAТ в операционной системе FreeBSD :)
Конечно, здесь рассмотрен довольно простой случай использования NAT'а, но он также является основным.




Страница сгенерирована за 0,0273 s
FAQed Google + FAQed FaceBook FAQed Twitter FAQed Live Journal FAQed My.Mailru FAQed Одноклассники FAQed Вконтакте FAQed RSS