Материал из Wiki.X-news.org
Перейти к: навигация, поиск

Выпускаем локальную сеть в Интернет используя сервер на FreeBSD и NATD В помощь новичкам.

Итак, перед вами встала задача раздать Инет на компы за сервером FreeBSD.

Как и множество других вещей во FreeBSD эту задачу можно решить несколькими способами.

Кратко покажу как это можно сделать используя в кач-ве NAT`а процесс natd.

Запускать natd можно несколькими способами, я покажу тот который обычно использую я сам.

Для работы нам потребуются 2 вещи:

1.firewall ipfw с его возможностью divert 2.natd Для того, чтобы приступить необходимо пересобрать ядро с опциями:

options IPFIREWALL options IPFIREWALL_VERBOSE options IPDIVERT

Так же можно добавить опции:

options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE_LIMIT=1000 options IPFIREWALL_DEFAULT_TO_ACCEPT

Либо подгрузить ipfw как модуль: /sbin/kldload /boot/kernel/ipfw.ko

Скажем что:

сетевая карта в сторону провайдера em0 c IP 10.10.1.2/30 сетевая карта в сторону локалки em1 с IP 192.168.1.1/24 Запустим процесс natd:

/sbin/natd -s -m -a 10.10.1.2

Процесс natd должен .висеть. на внешнем интерфейсе ВСЕГДА !

Добавим необходимые правила в ipfw, для того, чтобы трафик попадал в natd:

/sbin/ipfw add 300 divert 8668 ip from any to 10.10.1.2 /sbin/ipfw add 310 divert 8668 ip from 192.168.1.0/24 to any /sbin/ipfw add 350 allow ip from any to 192.168.1.0/24 /sbin/ipfw add 360 allow ip from 192.168.1.0/24 to any

Этих 4-х правил достаточно, чтобы дать доступ в интернет подсети 192.168.1.0/24.

Для того, что бы после ребута, все это поднялось, можно сделать следущее.

1. отредактировать файл /etc/rc.conf добавив:

firewall_enable=.YES. firewall_script=./etc/rc.firewall. firewall_type=./usr/local/etc/firewall.conf. firewall_quiet=.YES. firewall_logging=.YES. firewall_flags=."

2. написать наши правила в /usr/local/etc/firewall.conf:

add 100 allow ip from me to me via lo0 add 105 deny ip from any to any via lo0 add 300 divert 8668 ip from any to 10.10.1.2 add 310 divert 8668 ip from 192.168.1.0/24 to any add 350 allow ip from any to 192.168.1.0/24 add 360 allow ip from 192.168.1.0/24 to any add 65000 allow ip from any to any

3. создать файл /usr/local/etc/rc.d/natd.sh:

#!/bin/sh

/sbin/natd -s -m -a 10.10.1.2

4. сделать файл /usr/local/etc/rc.d/natd.sh исполняемым:

/bin/chmod a+x /usr/local/etc/rc.d/natd.sh

Можно поступить и немного по другому, запустив natd на интерфейсе, а не на IP-адресе:

отредактировать файл /etc/rc.conf добавить:

natd_program=./sbin/natd. # path to natd, if you want a different one. natd_enable=.YES. # Enable natd (if firewall_enable == YES). natd_interface=.em0. # Public interface or IPaddress to use. natd_flags=." # Additional flags for natd.

изменить правило номер 300 на:

add 300 divert 8668 ip from any to any via em0

Для полного понимания загляните в мануалы:

man natd man ipfw Там есть подробное описание и примеры.