Muff's website forum

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

SMF - Just Installed!

Автор Тема: Настройка ipfw nat  (Прочитано 35313 раз)

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Настройка ipfw nat
« : Января 20, 2011, 01:17:08 pm »

Посмотрет у вас, cтатьи по FreeBSD и не обнаружил ipfw firewall.
Просто в нете очень много описание старого происхождения, и голова кружиться все по разному описывают загркзку в rc.conf :

Вот так вобще не загружаеться firewall, неохото просто ядро перекампилировать.
firewall_nat_enable="YES"
dummynet_enable="YES"


Вот так загружаеться :

firewall_enable="YES"
firewall_type="/etc/firewall"

Правила firewall :

# локальный трафик
add allow ip from 127.0.0.0/8 to any via lo0
add allow ip from any to 127.0.0.0/8 via lo0

# разрешить весь исходящий трафик
add allow tcp from me to any keep-state
add allow udp from me to any keep-state
add allow icmp from me to any keep-state

# разрешить провайдер www и https
add allow tcp from 192.168.1.0/24 to me 80,443 keep-state

# разрешить ssh и dns
add allow tcp from 192.168.1.0/24 to me 22,53 keep-state

# запретить остальное
add deny log ip from any to any

Проблема в том что 53 порт всеравно закрыт :

http://www.intodns.com/gipernet.eu

t# netstat -an | grep 53
tcp6       0      0 ::1.953                *.*                    LISTEN
tcp4       0      0 127.0.0.1.953          *.*                    LISTEN
tcp4       0      0 127.0.0.1.53           *.*                    LISTEN
tcp4       0      0 192.168.1.9.53         *.*                    LISTEN
tcp4       0      0 192.168.1.4.53         *.*                    LISTEN

В чем может быть причина ??
« Последнее редактирование: Января 20, 2011, 02:15:52 pm от klaster »
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re:Настройка ipfw nat
« Ответ #1 : Января 20, 2011, 02:16:27 pm »

Немножко запутан вопрос....
Так и не понял в чем суть. Толи НАТ, толи файрвол... Итак, по очереди:

Поддержка IPFIREWALL и IPFIREWALL_NAT
Если включить в /boot/loader.conf строку firewall_nat_enable="YES", то НАТ действительно не работает... Модуль не подгружается, необходимо вручную его подгружать. Почему так - не очень заморачивался, поскольку всегда файрвол и его опции компилирую в ядро.

На всякий случай, перечислю опции, которые добавляю в конфиг ядра (те, которые касаются IPFW):
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT
options         LIBALIAS
options         DUMMYNET

Правила firewall
Я так понимаю, что ты хочешь настроить IPFW в режиме STATEFUL FIREWALL.
Советую изменить блок локальный трафик на такие правила (взято из дефолтного rc.firewall):
# локальный трафик
        ipfw add 100 pass all from any to any via lo0
        ipfw add 110 deny all from any to 127.0.0.0/8
        ipfw add 120 deny ip from 127.0.0.0/8 to any
После этого блока добавь разрешающее правило для keep-state состояний:
# Разрешаем keep-state
ipfw add check-state

Ну, и еще одно замечание. Так понимаю, ты будешь использовать ядерный НАТ. А вот правил в НАТ-а файрволе я не вижу...
Записан
Если нет ответа, то давайте подумаем...

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Re:Настройка ipfw nat
« Ответ #2 : Января 20, 2011, 03:31:31 pm »

Помогло для открытия 53 :

add allow tcp from any to me 53
add allow udp from any to me 53

Но хотелось бы по интересоваться это же мощный фаерфол, и получаеться если у меня будет стоять в одной локалке dns и майл сервер, мониторинг итд. То портик будет считаться открыт для всех машин, что очень бы не хотелось. Как реализовать такую задачу ?
Пример :

  • 192.168.1.5 Freebsd ipfw
  • 192.168.1.10 dns только 53 и 22
  • 192.168.1.20 Apache 80 22
  • 192.168.1.30 Mail 25 110 143


Что ти по такого ??

Да еще если в конфиге для nat прописать вот так rc.conf :
firewall_nat_enable="YES"
dummynet_enable="YES"

На возможность конфигурации сильно повлияет ?
« Последнее редактирование: Января 20, 2011, 06:03:24 pm от klaster »
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re:Настройка ipfw nat
« Ответ #3 : Января 20, 2011, 06:53:03 pm »

Я так понял, что необходимо дать доступ в Интернет внутренней сети 192.168.1.0/24 и разрешить этой сети доступ на порты 22, 80 и 53. Ядро собрано с поддержкой IPFW (необходимые опции я перечислил в предыдущем посте).
От этого задания и будем отталкиваться.

Небольшое лирическое отступление...
SSH работает на порту 22 по протоколу TCP. Web работает на 80 порту и тоже по TCP. А вот с ДНС не все так просто... Клиентские запросы "бегают" по UDP, порт 53. А по TCP выполняется только трансфер зон между серверами. Кстати, в выводе netstat указано, что открыты только порты TCP, что меня немного смущает. В моем случае, при работающем DNS-сервере вывод netstat получается такой:
# netstat -an | grep 53
tcp4       0      0 127.0.0.1.953          *.*                    LISTEN
tcp4       0      0 172.20.0.1.53          *.*                    LISTEN
tcp4       0      0 10.200.0.1.53          *.*                    LISTEN
tcp4       0      0 195.3.158.206.53       *.*                    LISTEN
tcp4       0      0 127.0.0.1.53           *.*                    LISTEN
udp4       0      0 172.20.0.1.53          *.*
udp4       0      0 10.200.0.1.53          *.*
udp4       0      0 195.3.158.206.53       *.*
udp4       0      0 127.0.0.1.53           *.*

Для превращения сервера в роутер, необходимо разрешить пересылку пакетов между сетевыми интерфейсами. Для этого необходимо наличие в rc.conf такой строки:
gateway_enable="YES"
Разрешить пересылку пакетов "на ходу", не перезагружая сервер можно через параметр sysctl:
sysctl net.inet.ip.forwarding=1
Вернемся к файрволу...
Исходя из задания, в rc.firewall вставим такой блок (простенький файрвол, который клиентской сети и роутеру разрешает сетевой обмен без ограничений, и накладывает ограничения на доступ к роутеру):
[Rr][Oo][Uu][Tt][Ee][Rr])

net="192.168.1.0/24"

# Allow me
${fwcmd} add pass udp from me to any 53 keep-state
${fwcmd} add pass all from me to any

# Allow ICMP to me
${fwcmd} add pass icmp from any to me icmptypes 0,3,8,11

# Allow incoming setup
${fwcmd} add pass tcp from ${net} to me 22 setup
${fwcmd} add pass tcp from ${net} to me 80 setup

# Allow DNS
${fwcmd} add pass udp from ${net} to me 53

# Allow established TCP
${fwcmd} add pass all from any to me established

# Allow internal network
${fwcmd} add pass all from ${net} to not me
${fwcmd} add pass all from not me to ${net}

# Deny all to me
${fwcmd} add deny all from any to me

Вроде с правилами нигде не оплошал (не проверял именно эту конфигурацию на тестовой машине). По идее должно все работать...

Далее настраиваем НАТ по этой статье (PF): http://muff.kiev.ua/content/nat-realizatsiya-s-pomoshchyu-pf.

Применяем все правила файрвола, описанные в блоке "ROUTER":
# sh /etc/rc.firewall ROUTER
Если файрвол работает нормально, применяем правила при загрузке системі, добавляя следующий блок в rc.conf:

# Firewall
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="ROUTER"


Теперь комментарии по предыдущему посту...
Так понимаю, была попытка запустить natd... Так вот, выиграш IPFW NAT в том, что он работает только на ресурсах ядра, без запуска natd. Так что о natd советую пока забыть.

По вопросам:
Что необходи поставить rc.conf для ipfw + nat ?
По поводу IPFW уже отписался выше. Если НАТить будете (для начала) с помощью PF, то в статье все описано. Если НАТ-ить хотите с помощью ядерного НАТ-а, то необходимо просто добавить необходимые правила в rc.firewall.

Почему когда я ставлю в свой файл firewall,ipfw вперед он жалуеться и зависает ?
А вот здесь я мало что понял, в основном только догадки... Если у вас отдельный файл с правилами файрвола, то советую вначале файла вставить такой блок:
#!/bin/sh
setup_loopback () {

        ${fwcmd} add 5 pass all from any to any via lo0
        ${fwcmd} add 5 deny all from any to 127.0.0.0/8
        ${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}

fwcmd="/sbin/ipfw -q"

А потом уже все свои правила начинать с ${fwcmd}. Например:
${fwcmd} add 15 deny all from "table(5)" to any
Что не хватает правилу чтоб открыть 53 порт? 22 и 80 работают нормально с этими правилами
По ходу я вначале описал разницу. По 53 порту у тебя будет бегать только UDP трафик. Вряд ли, что у тя будет выполняться трансфер зон.
Записан
Если нет ответа, то давайте подумаем...

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Re:Настройка ipfw nat
« Ответ #4 : Января 20, 2011, 10:39:25 pm »

По поводу пересборки ядра, не стал пока тратить время включил в rc.conf :

firewall_enable="YES"
firewall_type="/etc/firewall.conf"
firewall_nat_enable="YES"
dummynet_enable="YES"
gateway_enable="YES"

IPFW работает, nat  еще не проверял.



Цитировать
А вот здесь я мало что понял, в основном только догадки... Если у вас отдельный файл с правилами файрвола, то советую вначале файла вставить такой блок:

#!/bin/sh
setup_loopback () {

        ${fwcmd} add 5 pass all from any to any via lo0
        ${fwcmd} add 5 deny all from any to 127.0.0.0/8
        ${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}

fwcmd="/sbin/ipfw -q"

А потом уже все свои правила начинать с ${fwcmd}. Например:

${fwcmd} add 15 deny all from "table(5)" to any

Так вот если я вставляю в свой файл firewall.conf :
#!/bin/sh
setup_loopback () {

        ${fwcmd} add 5 pass all from any to any via lo0
        ${fwcmd} add 5 deny all from any to 127.0.0.0/8
        ${fwcmd} add 5 deny ip from 127.0.0.0/8 to any
}

fwcmd="/sbin/ipfw -q"

et="192.168.1.0/24"

# Allow me
${fwcmd} add 10 pass udp from me to any 53 keep-state
${fwcmd} add 20 pass all from me to any

# Allow ICMP to me
${fwcmd} add 30 pass icmp from any to me icmptypes 0,3,8,11

# Allow incoming setup
${fwcmd} add 40 pass tcp from ${net} to me 22 setup
${fwcmd} add 50 pass tcp from ${net} to me 80 setup

# Allow DNS
${fwcmd} add 60 pass udp from ${net} to me 53

# Allow established TCP
${fwcmd} add 70 pass all from any to me established

# Allow internal network
${fwcmd} add 80 pass all from ${net} to not me
${fwcmd} add 90 pass all from not me to ${net}

# Deny all to me
${fwcmd} add deany all from any to me


То получаю вот это :

gipernet# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
net.inet6.ip6.fw.enable: 1 -> 0
Flushed all rules.
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 deny ip from any to ::1
00500 deny ip from ::1 to any
Line 2: bad command `setup_loopback'
Firewall rules loaded.


И зависаю .

Хотел бы у вас узнать как лучше,  в своем файле создовать или редактировать rc.firewall в котором полным полно уже правил ??
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re:Настройка ipfw nat
« Ответ #5 : Января 21, 2011, 01:15:33 pm »

Я в rc.firewall создаю свой блок и запускаю его. При запуске файрвола указываю, какой именно блок правил необходимо выполнить.
Записан
Если нет ответа, то давайте подумаем...

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Re:Настройка ipfw nat
« Ответ #6 : Января 21, 2011, 08:34:09 pm »

Цитировать
Я в rc.firewall создаю свой блок и запускаю его. При запуске файрвола указываю, какой именно блок правил необходимо выполнить.

Я так понемаю что в rc.conf  пишете : // Что то вродке такого ?

firewall_type= (client, open, simple......)

Хотел бы уточнить я прокомпилил ядро с такими параметрами :

# Firewall IPFW NAT
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         IPFIREWALL_NAT
options         LIBALIAS
options         DUMMYNET
options         HZ="1000"

Не могу понять почему нету файла etc/natd.conf или его необходимо самому создовать?
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re:Настройка ipfw nat
« Ответ #7 : Января 22, 2011, 01:37:20 am »

Посмотрите предыдущие посты. Не используйте natd. Если не хотите использовать PF, то воспользуйтесь возможностями ядерного НАТ-а. Просто необходимо вписать правила НАТ-а среди ваших правил.
Вырезка из man ipfw по поводу организации НАТ-а:
   NAT, REDIRECT AND LSNAT
     First redirect all the traffic to nat instance 123:

           ipfw add nat 123 all from any to any

     Then to configure nat instance 123 to alias all the outgoing traffic with
     ip 192.168.0.123, blocking all incoming connections, trying to keep same
     ports on both sides, clearing aliasing table on address change and keep-
     ing a log of traffic/link statistics:

           ipfw nat 123 config ip 192.168.0.123 log deny_in reset same_ports

     Or to change address of instance 123, aliasing table will be cleared (see
     reset option):

           ipfw nat 123 config ip 10.0.0.1

     To see configuration of nat instance 123:

           ipfw nat 123 show config

     To show logs of all the instances in range 111-999:

           ipfw nat 111-999 show

     To see configurations of all instances:

           ipfw nat show config

     Or a redirect rule with mixed modes could looks like:

           ipfw nat 123 config redirect_addr 10.0.0.1 10.0.0.66
                           redirect_port tcp 192.168.0.1:80 500
                           redirect_proto udp 192.168.1.43 192.168.1.1
                           redirect_addr 192.168.0.10,192.168.0.11
                                   10.0.0.100 # LSNAT
                           redirect_port tcp 192.168.0.1:80,192.168.0.10:22
                                   500        # LSNAT

     or it could be splitted in:

           ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66
           ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500
           ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
           ipfw nat 4 config redirect_addr
           192.168.0.10,192.168.0.11,192.168.0.12
                                        10.0.0.100
           ipfw nat 5 config redirect_port tcp
                          192.168.0.1:80,192.168.0.10:22,192.168.0.20:25 500
« Последнее редактирование: Января 22, 2011, 01:44:37 am от muff »
Записан
Если нет ответа, то давайте подумаем...

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Re:Настройка ipfw nat
« Ответ #8 : Февраля 04, 2011, 11:47:03 pm »

Подскажите пожалуйста.
Не получаеться настроить Локалку.
Ситуация такая, две сетевых карты одна внешняя другая внутреняя :
rl0= 91.91.91.91
rl1= 192.168.1.1

Проблема в том что я немогу выйти в нет через локалку.
 FreeBsd машина на которую приходит провайдерский кабель выходит в интернет без проблем, а вот вторая сетевая карта каторая подклученно к этой машине и должна довать выход в нет или пинговать какую нибудь машину в локалке заканчиваеться тем что не один пакет не доходит. Я пробывал выключать firewall вообще, команду вводил полный доступ для ipfw. Ни чего не получаеться, на правило мне всеравно, настроить и потом все можно, но вот почему выхода в нет нету.
rc.conf :
ifconfig_nfe0="ether 00:22:6B:xx:xx:xx"
ifconfig_rl0_alias0="91.91.91.91 netmask 255.255.254.0 -rxcsum"
defaultrouter="94.101.226.1"
ifconfig_rl1="inet 192.168.1.1 netmask 255.255.255.0"
hostname="gip"
firewall_enable="YES"
firewall_type="/etc/firewall.conf.bak
#firewall_nat_enable="YES"
#dummynet_enable="YES"
gateway_enable="YES"
#natd_enable="YES"
#natd_inteface="nfe0"
#natd_flags="-f /etc/natd.conf"

Вот это правила firewall.conf.bak :
# локальный трафик
#add allow ip from 127.0.0.0/8 to any via lo0
#add allow ip from any to 127.0.0.0/8 via lo0
#add check-state
# разрешить весь исходящий трафик
add allow tcp from me to any keep-state
add allow udp from me to any keep-state
add allow icmp from me to any keep-state
# разрешить провайдер www и https
add allow tcp from 192.168.1.1/24 to me 80,443 keep-state
# разрешить ssh
add allow tcp from 192.168.1.1/24 to me 22 keep-state
# разрешить dns
add allow tcp from any to me 53
add allow udp from any to me 53
#add deny udp from 192.168.1.4 to 192.168.1.1 via rl0
# mail pop imap smtp
add allow tcp from any to me 25
add allow tcp from any to me 110
add allow tcp from any to me 143
#add allow tcp from 192.168.1.4 to me 110 keep-state
#add allow tcp from 192.168.1.4 to me 143 keep-state
# запретить остальное
add deny log ip from any to any

Помогите пожалуйста.
Записан

klaster

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 46
    • Просмотр профиля
Re:Настройка ipfw nat
« Ответ #9 : Февраля 06, 2011, 07:06:25 pm »

Я напишу свой метод с помощью каторого я завел локалку, теперь необходимо нарашивать правила, в кратце IPFW NAT :
rc.conf
ifconfig_rl0="ether 00:22:6B:xx:xx:xx" //Если кому необходимо сменить
ifconfig_rl0_alias0="91.91.91.91 netmask 255.255.255.0 -rxcsum" // Нет
defaultrouter="91.91.91.1" // Роутер провайдера
ifconfig_rl1="inet 192.168.1.1 netmask 255.255.255.0" // Локал

firewall_enable="YES" // Включаем IPFW
firewall_nat_enable="YES" // Включаем NAT
firewall_type="/etc/firewall" // Скрипт правил
dummynet_enable="YES"
gateway_enable="YES" // Шлюз
firewall_logging="YES"

firewall_type="/etc/firewall"

add 10 allow ip from any to any via rl1
nat 1 config log ip 91.91.91.91 reset same_ports
add 100 nat 1 ip from any to any via rl0

natd.conf
same_ports yes
use_socket yes

На этом настройка локалки заканчиваеться, для дальнейшего действие вводите правила.

ВСЕМ ОГРОМНОЕ СПАСИБО
Записан

medved1979

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 1
    • Просмотр профиля
Re: Настройка ipfw nat
« Ответ #10 : Сентября 12, 2012, 04:36:29 pm »

 :o Доброго дня , подскажите новичку  , как можно проверить , работает ли нат на конкретном интерфейсе ?
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re: Настройка ipfw nat
« Ответ #11 : Сентября 12, 2012, 04:46:23 pm »

Здравствуйте....
Как реализовывали НАТ? Просьба создать новую тему и предоставить вывод ifconfig и то, как реализован НАТ. Тогда смогу подсказать уже более конкретно.
Записан
Если нет ответа, то давайте подумаем...
 

Страница сгенерирована за 0.389 секунд. Запросов: 30.