Мои заметки для начинающих разобраться в настройке NAT and Firewall
Рассмотрим способ включение NAT без перестройки ядра.
Для этого просто добавим следующие строки в файл /etc/rc.conf
natd_enable=”YES”
natd_interface=”rl1”
(Примечание: rl1 – это название интерфейса, которое у всех может отличаться. В этом случае к этому интерфейсу подключен ADSL модем.)
Далее настроим брандмауэр. Для чего добавим следующие строки в файл /etc/rc.conf
firewall_enable=”YES”
firewall_type=”/usr/local/etc/firewall.conf
(Примечание: Эта строчка указывает на расположение файла конфигурации брандмауэра)
Теперь создадим файл firewall.conf и добавим в него две строчки
add divert natd all from any to any via rl0
(Примечание: Эта строчка пропускает все пакеты NAT)
add allow all from any to any
(Примечание: Эта строчка пропускает пакет всех типов, равносильно тому, ели бы брандмауэра не было)
Firewall (FW)
Как уже писалось выше, для настройки FW, будем использовать конфигурационный файл /usr/local/etc/firewall.conf. Это обычный текстовый файл, который содержит в себе определенный свод правил, которые последовательно обрабатываются.
Первая строчка этого файла содержит:
Ipfw –q –f flush
Эта строка очищает все правила, посе чего в списке правил присутствует только одна
строка под номером 65535: deny ip from any to any , которая запрещает все пакеты.
Далее в конфигурационном файле идет список правил.
Пример:
add allow tcp from 10.90.50.0/24 to 10.99.50.100 8000 via rl1
В этой строчки мы разрешаем (allow) любой обмен из сети 10.99.50.0/24 по протоколу tcp (tcp from 10.99.50.0/24) к компьютеру 10.99.50.100 на порт 8000. При этом указываем, что этот ip адрес 10.99.50.100 присвоен интерфейсу rl1.
В нижнем примере показаны простые настройки брандмауэра. Первую и вторую строку мы уже разобрали. В 3 строки мы разрешаем любую активность с ip адреса 10.99.50.39. В четвертой разрешаем обратный обмен с ip 10.99.50.100. В пятой разрешаем любую внутреннюю активность. А 5 и 6 разрешают любую сетевую активность по ip 192.168.1.3 назначенному второй сетевой карте, которая смотрит в инет.
Ipfw –q –f flush
add 100 allow tcp from 10.99.50.0/24 to 10.99.50.100 8000 via rl1
add 200 allow all from 10.99.50.39 to 10.99.50.100 via rl1
add 300 allow all from 10.99.50.100 to any
add 400 allow all from me to me
add 500 allow all from any to 192.168.1.3 via rl0
add 600 allow all from 192.168.1.3 to any
Если необходимо создать правило, и чтобы оно сразу стало работать, то используем
параметр –N:
Ipfw –N add 50 allow all from any to any
Чтобы удалить правило, пишем: ipfw delete 50
Очищаем пакеты определенного правила: ipfw zero 1000 (где 1000 – номер правила)
Для того, что предоставить доступ к сети определенному диапазону компьютеров, пишем
ipfw add allow all from “192.168.9.0/24 {35,55,89-93}” to any
***************************************************
NAT
Список правил расположен в файле /etc/natd.conf (можно создать любой другой файл для правил nat)
Пример файла, где реализовано проброс портов, представлен ниже:
same_ports yes //Сохранение оригинальных номеров портов в уходящих пакетах.
use_sockets yes
log yes //Ведет лог
port natd
dynamic yes
redirect_port tcp 10.99.50.100:8000 8001
redirect_port tcp 10.99.50.100:22 22
redirect_port tcp 10.99.50.115:3389 3390
Запись redirect_port tcp 10.99.50.115:3389 3390 означает, что порт 3390 с внешнего интерфейса будет проброшен на порт 3389 компьютера с ip 10.99.50.100.
Для того, чтобы это правило работало, нужно еще добавить строки в ipfw, если конечно, там не стоит правило разрешающее все действия: allow all from any to any.
Это правило позволяет подключиться к удаленному рабочему столу RDP, компьютера 10.99.50.100, с любого внешнего ip.
Для внутреннего сетевого интерфейса
add allow all from any to 10.99.50.100 3389
add allow all from 10.99.50.100 to any 3389
или другой вариант последней строки
add allow all from 10.99.50.100 3389 to any
Для внешнего сетевого интерфейса
add allow all from 192.168.1.3 3390 to any
add allow all from all to 192.168.1.3 via rl0
Остановка nat: # /etc/rc.d/natd stop
Запуск nat: # natd –interface rl0 (где, rl0 – это интерфейс, к которому подключён интернет)