Подробное руководство по ipfw nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-04-29 18:58:04

Код: Выделить всё

#uname -a
FreeBSD-8.2-RELEASE

Код: Выделить всё

#sysctl -a | grep one_pass
net.inet.ip.fw.one_pass=1

Код: Выделить всё

#kldstat
ID	Refs	Addres		Size	Name
 1	 1	0xc0400000	63ef38	kernel

Код: Выделить всё

#ipfw show
65535	154	16162	deny ip from any to any
(Хотя файл /etc/firewall есть, разрешение в нём прописано и в /etc/rc.conf написано firewall_type="/etc/firewall")

Код: Выделить всё

#ipfw nat 1 show config
#
Нет вывода - пусто

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-04-29 19:03:38

Код: Выделить всё

cat /etc/rc.conf
cat /etc/firewall
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2011-04-30 22:40:13

Кстати :smile: - фигасе, один из моих PR закрыли - тот который про "buf is too small" NAT_BUF_LEN!
Как я понял в карент запатчили. Авось в 9.0 уже будет.
Глеб Смирнов молодец - написал патч! :good:

http://www.freebsd.org/cgi/query-pr.cgi?pr=143653
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-01 22:07:55

cat /etc/rc.conf
cat /etc/firewall
пока не могу, сервак на работе, а firewall удалённо к нему не пускает. Но я там не мудрил, тупо скопировал из статьи (именно скопировал, а не переписал) и поменял IP и интерфейсы, все запреты и проброс протов закомментировал:

Код: Выделить всё

gateway_enable="YES"
ifconfig_bge0="inet 10.29.61.25 netmask 255.255.255.0 -rxcsum"
ifconfig_bge1="inet 10.52.11.1 netmask 255.255.255.0"
defaultrouter="10.29.61.1"
firewall_enable="YES"
firewall_type="/etc/firewall"

Код: Выделить всё

add 1030 allow ip from any to any via bge0
add 1040 allow ip from any to any via bge1
add 1050 deny ip from any to 192.168.0.0/16 in recv bge0
add 1060 deny ip from 192.168.0.0/16 to any in recv bge0
add 1070 deny ip from any to 172.16.0.0/12 in recv bge0
add 1080 deny ip from 172.16.0.0/12 to any in recv bge0
#add 1090 deny ip from any to 10.0.0.0/8 in recv bge0
#add 10100 deny ip from 10.0.0.0/8 to any in recv bge0
add 10110 deny ip from any to 169.254.0.0/16 in recv bge0
add 10120 deny ip from 169.254.0.0/16 to any in recv bge0
#nat 1 config log if bge0 reset same_ports deny_in redirect_port tcp 10.29.61.25:6881 6881 redirect_port udp 10.29.61.25:4444 4444 redirect_port tcp 10.29.61.10:25 25
add 10130 nat 1 ip from any to any via bge0
#add 65534 deny all from any to any #(это лишнее, 65535 и так deny)

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-01 23:27:01

тогда чему вы удивляетесь?
если у вас там

Код: Выделить всё

#nat 1 config log if bge0 reset same_ports deny_in redirect_port tcp 10.29.61.25:6881 6881 redirect_port udp 10.29.61.25:4444 4444 redirect_port tcp 10.29.61.10:25 25
то на не будет работать
для номинальной работы надо типа

Код: Выделить всё

nat 1 config log if bge0 reset same_ports deny_in 
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-02 13:39:55

nat 1 config log if bge0 reset same_ports deny_in
Вот именно это надо написать? Или всю строку раскомментировать? Если строку, то порты оставить как есть, или надо указывать другие?

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-02 13:51:08

P.S.
Вот всё равно не понятно. Ну не работает из-за этого NAT, а почему /etc/firewall -то не читается?

терминус_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение терминус_ » 2011-05-02 16:35:38

slb51 писал(а):
nat 1 config log if bge0 reset same_ports deny_in
Вот именно это надо написать? Или всю строку раскомментировать? Если строку, то порты оставить как есть, или надо указывать другие?
директивы redirect_port приведены КАК ПРИМЕР

Код: Выделить всё

# настройка ната.
# опции переноса строк "\" надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать "проброс портов"
они не нужны.

попробуйте такой конфиг:

Код: Выделить всё

add 1040 allow ip from any to any via bge1
nat 1 config log if bge0 reset same_ports deny_in

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-03 7:41:14

add 1040 allow ip from any to any via bge1
nat 1 config log if bge0 reset same_ports deny_in
Это понял, спасибо. А вот почему ipfw show показывает только последнее правило, то, что в ядре забито. Выходит /etc/firewall вообще игнорируется?

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-03 9:09:29

Всё равно не работает.

Код: Выделить всё

 /root/>less /etc/rc.conf
defaultrouter="10.29.61.1"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
gateway_enable="YES"
hostname="NNV-G1-SRV-W3.faugi.ru"
ifconfig_bge0="inet 10.29.61.25  netmask 255.255.255.0"
ifconfig_bge1="inet 10.52.11.1   netmask 255.255.255.0"
keymap="ru.koi8-r"
keyrate="normal"
mousechar_start="3"
moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"
scrnmap="koi8-r2cp866"
sshd_enable="YES"
hald_enable="YES"
dbus_enable="YES"
firewall_nat_enable="YES"
dummynet_enable="YES"
firewall_type="/etc/firewall"
----------------------------------------------------------------------------------------------
/root/>less /etc/firewall
add 1030 allow all from any to any via bge0
add 1040 allow all from any to any via bge1

add 1050 deny ip from any to 192.168.0.0/16 in recv bge0
add 1060 deny ip from 192.168.0.0/16 to any in recv bge0
add 1070 deny ip from any to 172.16.0.0/12 in recv bge0
add 1080 deny ip from 172.16.0.0/12 to any in recv bge0
#add 1090 deny ip from any to 10.0.0.0/8 in recv bge0
#add 10100 deny ip from 10.0.0.0/8 to any in recv bge0
add 10110 deny ip from any to 169.254.0.0/16 in recv bge0
add 10120 deny ip from 169.254.0.0/16 to any in recv bge0

nat 1 config log if bge0 reset same_ports deny_in 
# redirect_port tcp 10.29.61.25:6881 6881 redirect_port udp 10.29.61.25:4444 4444 redirect_port tcp 10.29.61.24:25 25

add 10130 nat 1 ip from any to any via bge0

add 65534 deny all from any to any
---------------------------------------------------------------------
/root/>uname -a
FreeBSD NNV-G1-SRV-W3.faugi.ru 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Tue May  3 08:08:09 MSD 2011     root@NNV-G1-SRV-W3.faugi.ru:/usr/obj/usr/src/sys/MYKERNEL  i386
---------------------------------------------------------------------
/root/>sysctl -a | grep one_pass
net.inet.ip.fw.one_pass: 1
---------------------------------------------------------------------
/root/>kldstat
Id Refs Address    Size     Name
 1    1 0xc0400000 63ef38   kernel
---------------------------------------------------------------------
/root/>ipfw show
65535 10095 883978 allow ip from any to any
---------------------------------------------------------------------
/root/>ipfw nat 1 show config
/root/>
Вот ещё из MYKERNEL кусок:

Код: Выделить всё

/root/>less /usr/src/sys/i386/conf/MYKERNEL
machine         i386
cpu             I686_CPU
ident           MYKERNEL
maxusers        0

#makeoptions    DEBUG=-g                # Build kernel with gdb(1) debug symbols

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_NAT
options         LIBALIAS
options         ROUTETABLES=2
options         DUMMYNET
options         HZ="1000"
options         IPFIREWALL_DEFAULT_TO_ACCEPT


Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-03 9:22:37

Код: Выделить всё

/root/>ls -laso /etc/firewall
2 -rw-r--r--  1 root  wheel  - 1374  3 май 08:38 /etc/firewall

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-03 9:45:02

а как вы применяете правила?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-03 9:48:26

а как вы применяете правила?
Вопрос не понял. Вроде я листинг выложил. Что ещё имеется в виду?

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-03 14:59:46

Вобщем, решил я отказаться от этой затеи. Больно много проблем. Возвращаю natd.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-03 15:04:33

как вы фаерволы рестартуете?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-04 7:52:39

как вы фаерволы рестартуете?
Перезагружаю сервер.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-04 11:06:44

давайте подитожим, вам тут написали уже достаточно чтоб решить проблему. давайте

Код: Выделить всё

cat -n /etc/rc.conf
cat -n /etc/firewall
/etc/rc.d/ipfw restart &
ipfw show
ipfw nat 1 show config
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-05 10:34:14

Код: Выделить всё

/root/>cat -n /etc/rc.conf
     1
     2  # -- sysinstall generated deltas -- # Thu May  5 13:03:40 2011
     3  # Created: Thu May  5 13:03:40 2011
     4  # Enable network daemons for user convenience.
     5  # Please make all changes to this file, not to /etc/defaults/rc.conf.
     6  # This file now contains just the overrides from /etc/defaults/rc.conf.
     7  defaultrouter="10.29.61.1"
     8  font8x14="cp866-8x14"
     9  font8x16="cp866b-8x16"
    10  font8x8="cp866-8x8"
    11  gateway_enable="YES"
    12  hostname="NNV-G1-SRV-W3.faugi.ru"
    13  ifconfig_bge0="inet 10.29.61.25  netmask 255.255.255.0 -rxcsum"
    14  ifconfig_bge1="inet 10.52.11.254 netmask 255.255.255.0"
    15  keymap="ru.koi8-r"
    16  keyrate="normal"
    17  mousechar_start="3"
    18  scrnmap="koi8-r2cp866"
    19  sshd_enable="YES"
    20  hald_enable="YES"
    21  dbus_enable="YES"
    22  firewall_nat_enable="YES"
    23  dummynet_enable="YES"
    24  firewall_enable="YES"
    25  firewall_type="/etc/firewall"

Код: Выделить всё

/root/>cat -n /etc/firewall
     1  # правила разрешающие трафик через локальный интерфейс lo0
     2  # будут добавляться автоматически сами при старте фаервола
     3  # 100 allow ip from any to any via lo0
     4  # 200 deny ip from any to 127.0.0.0/8
     5  # 300 deny ip from 127.0.0.0/8 to any
     6
     7  # разрешаем все через интерфейс локальной сети
     8  add 1030 allow ip from any to any via bge1
     9  # пока разрешаем всё через интерфейс внешней сети
    10  add 1040 allow ip from any to any via bge0
    11
    12  # боимся непонятного
    13  add 1050 deny ip from any to 192.168.0.0/16 in recv bge0
    14  add 1060 deny ip from 192.168.0.0/16 to any in recv bge0
    15  add 1070 deny ip from any to 172.16.0.0/12 in recv bge0
    16  add 1080 deny ip from 172.16.0.0/12 to any in recv bge0
    17  add 1090 deny ip from any to 10.0.0.0/8 in recv bge0
    18  #add 10100 deny ip from 10.0.0.0/8 to any in recv bge0
    19  add 10110 deny ip from any to 169.254.0.0/16 in recv bge0
    20  add 10120 deny ip from 169.254.0.0/16 to any in recv bge0
    21
    22  # настройка ната.
    23  # опции переноса строк "\" надо убрать все должно быть в одну строчку
    24  # опции redirect_port приведены для примера - как делать "проброс портов"
    25  nat 1 config log if bge0 reset same_ports deny_in
    26  #redirect_port tcp 10.29.61.25:6881 6881
    27  #redirect_port udp 10.29.61.25:4444 4444
    28  #redirect_port tcp 10.29.61.24:25 25
    29
    30  # заварачиваем все что проходит через внешний интерфейс в нат
    31  add 10130 nat 1 ip from any to any via bge0
    32
    33  # боимся непонятного
    34  add 65534 allow all from any to any

Код: Выделить всё

/root/>/etc/rc.d/ipfw restart & ipfw show
[1] 1251
00100   0     0 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
01030 123 12590 allow ip from any to any via bge1
01040 407 37706 allow ip from any to any via bge0
01050   0     0 deny ip from any to 192.168.0.0/16 in recv bge0
01060   0     0 deny ip from 192.168.0.0/16 to any in recv bge0
01070   0     0 deny ip from any to 172.16.0.0/12 in recv bge0
01080   0     0 deny ip from 172.16.0.0/12 to any in recv bge0
01090   0     0 deny ip from any to 10.0.0.0/8 in recv bge0
10110   0     0 deny ip from any to 169.254.0.0/16 in recv bge0
10120   0     0 deny ip from 169.254.0.0/16 to any in recv bge0
10130   0     0 nat 1 ip from any to any via bge0
65534   0     0 allow ip from any to any
65535   0     0 deny ip from any to any
/root/>net.inet.ip.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
01030 allow ip from any to any via bge1
01040 allow ip from any to any via bge0
01050 deny ip from any to 192.168.0.0/16 in recv bge0
01060 deny ip from 192.168.0.0/16 to any in recv bge0
01070 deny ip from any to 172.16.0.0/12 in recv bge0
01080 deny ip from 172.16.0.0/12 to any in recv bge0
01090 deny ip from any to 10.0.0.0/8 in recv bge0
10110 deny ip from any to 169.254.0.0/16 in recv bge0
10120 deny ip from 169.254.0.0/16 to any in recv bge0
ipfw nat 1 config if bge0 log deny_in same_ports reset
10130 nat 1 ip from any to any via bge0
65534 allow ip from any to any
Firewall rules loaded.

Код: Выделить всё

/root/>ipfw nat 1 show config
ipfw nat 1 config if bge0 log deny_in same_ports reset

_vadim64
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение _vadim64 » 2011-05-05 15:25:56

немножко не так сделали как я просил.
работает всё?

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-05 16:10:24

Да, всё работает. Спасибо. Я сам увидел, что не так, и уже исправил.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-05 19:13:35

Рано обрадовался! Не могу создать разрешения только на нужные сайты. У меня, как видно из конфигов, обе сетки начинаются на 10. Одна - 10.29.61.0/24, как бы внешняя, и вторая - 10.52.11.0/24. И если правила 1090 и 1100 не закомментированы, то доступа нет никуда и ниоткуда, какие бы разрешения ни писал до них (ясное дело, с меньшими номерами, а не по тексту). А если нет, то доступ, естественно, полный. При этом запрет на какой-то IP поставить можно, а вот запретить всё кроме него - не получается. На всякий случай показываю теперешные конфиги.

Код: Выделить всё

/home/admin/#cat -n /etc/rc.conf
     1
     2  # -- sysinstall generated deltas -- # Thu May  5 20:32:59 2011
     3  # Created: Thu May  5 20:32:59 2011
     4  # Enable network daemons for user convenience.
     5  # Please make all changes to this file, not to /etc/defaults/rc.conf.
     6  # This file now contains just the overrides from /etc/defaults/rc.conf.
     7  defaultrouter="10.29.61.1"
     8  font8x14="cp866-8x14"
     9  font8x16="cp866b-8x16"
    10  font8x8="cp866-8x8"
    11  gateway_enable="YES"
    12  hostname="NNV-G1-SRV-W3.faugi.ru"
    13  ifconfig_bge0="inet 10.29.61.25  netmask 255.255.255.0"
    14  ifconfig_bge1="inet 10.52.11.254 netmask 255.255.255.0"
    15  keymap="ru.koi8-r"
    16  keyrate="normal"
    17  mousechar_start="3"
    18  scrnmap="koi8-r2cp866"
    19  sshd_enable="YES"
    20  hald_enable="YES"
    21  dbus_enable="YES"
    22  firewall_nat_enable="YES"
    23  dummynet_enable="YES"
    24  firewall_enable="YES"
    25  firewall_type="/etc/firewall"

/home/admin/#cat -n /etc/firewall
     1  # правила разрешающие трафик через локальный интерфейс lo0
     2  # будут добавляться автоматически сами при старте фаервола
     3  # 100 allow ip from any to any via lo0
     4  # 200 deny ip from any to 127.0.0.0/8
     5  # 300 deny ip from 127.0.0.0/8 to any
     6
     7  # разрешаем все через интерфейс локальной сети
     8  add 1030 allow ip from any to any via bge1
     9
    10  # боимся непонятного
    11  add 1050 deny ip from any to 192.168.0.0/16 in recv bge0
    12  add 1060 deny ip from 192.168.0.0/16 to any in recv bge0
    13  add 1070 deny ip from any to 172.16.0.0/12 in recv bge0
    14  add 1080 deny ip from 172.16.0.0/12 to any in recv bge0
    15  #add 1090 deny ip from any to 10.0.0.0/8 in recv bge0
    16  #add 1100 deny ip from 10.0.0.0/8 to any in recv bge0
    17  add 1110 deny ip from any to 169.254.0.0/16 in recv bge0
    18  add 1120 deny ip from 169.254.0.0/16 to any in recv bge0
    19  add 1130 deny ip from any to 240.0.0.0/4 in recv bge0
    20  add 1140 deny ip from 240.0.0.0/4 to any in recv bge0
    21  add 1150 deny ip from any to any frag
    22  add 1160 deny log icmp from any to 255.255.255.255 in recv bge0
    23  add 1170 deny log icmp from any to 255.255.255.255 out recv bge0
    24
    25  # настройка ната.
    26  # опции переноса строк "\" надо убрать все должно быть в одну строчку
    27  # опции redirect_port приведены для примера - как делать "проброс портов"
    28  nat 1 config log if bge0 reset same_ports deny_in
    29  # redirect_port tcp 10.29.61.25:6881 6881
    30  #redirect_port udp 10.29.61.25:4444 4444
    31  #redirect_port tcp 10.52.11.24:25 25
    32
    33  # заварачиваем все что проходит через внешний интерфейс в нат
    34  add 10130 nat 1 ip from any to any via bge0
    35
    36  # Страхуемся на первый случай
    37  add 65534 deny all from any to any

/home/admin/#/etc/rc.d/ipfw restart
net.inet.ip.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
01030 allow ip from any to any via bge1
01050 deny ip from any to 192.168.0.0/16 in recv bge0
01060 deny ip from 192.168.0.0/16 to any in recv bge0
01070 deny ip from any to 172.16.0.0/12 in recv bge0
01080 deny ip from 172.16.0.0/12 to any in recv bge0
01110 deny ip from any to 169.254.0.0/16 in recv bge0
01120 deny ip from 169.254.0.0/16 to any in recv bge0
01130 deny ip from any to 240.0.0.0/4 in recv bge0
01140 deny ip from 240.0.0.0/4 to any in recv bge0
01150 deny ip from any to any frag
01160 deny log logamount 100 icmp from any to 255.255.255.255 in recv bge0
01170 deny log logamount 100 icmp from any to 255.255.255.255 out recv bge0
ipfw nat 1 config if bge0 log deny_in same_ports reset
10130 nat 1 ip from any to any via bge0
65534 deny ip from any to any
Firewall rules loaded.

/home/admin/#ipfw show
00100  0    0 allow ip from any to any via lo0
00200  0    0 deny ip from any to 127.0.0.0/8
00300  0    0 deny ip from 127.0.0.0/8 to any
01030 58 5127 allow ip from any to any via bge1
01050  0    0 deny ip from any to 192.168.0.0/16 in recv bge0
01060  0    0 deny ip from 192.168.0.0/16 to any in recv bge0
01070  0    0 deny ip from any to 172.16.0.0/12 in recv bge0
01080  0    0 deny ip from 172.16.0.0/12 to any in recv bge0
01110  0    0 deny ip from any to 169.254.0.0/16 in recv bge0
01120  0    0 deny ip from 169.254.0.0/16 to any in recv bge0
01130  5  860 deny ip from any to 240.0.0.0/4 in recv bge0
01140  0    0 deny ip from 240.0.0.0/4 to any in recv bge0
01150  0    0 deny ip from any to any frag
01160  0    0 deny log logamount 100 icmp from any to 255.255.255.255 in recv bge0
01170  0    0 deny log logamount 100 icmp from any to 255.255.255.255 out recv bge0
10130 37 3023 nat 1 ip from any to any via bge0
65534  0    0 deny ip from any to any
65535  0    0 deny ip from any to any

/home/admin/#ipfw nat 1 show config
ipfw nat 1 config if bge0 log deny_in same_ports reset

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-05 19:51:52

вам нужно рядом с правилом 1030 до правил 1090 и 1100 добавить разрешающее правило для этих ваших сетей на ВАН интерфейсе. при этом обратите внимание на то какие направления вы хотите натить, а какие просто роутить, внимательно подумайте об этом
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-05-05 21:04:51

какие направления вы хотите натить, а какие просто роутить,
А в чём разница, точнее, как это выглядит в написании правила? Мне надо, чтобы из 10.52.11.0 ходили в 10.29.61.0 и в интернет, но только на те сайты, какие разрешены. Из 10.29.61.0 через Firewall ничего не нужно, там и так всё есть. И в 10.52.11.0 им тоже не обязательно, хотя и прямой запрет не требуется. Т.е. как я понимаю из 10.52.11.0 в 10.29.61.0 надо роутить, а в итернет - натить. Из 10.29.61.0 ничего не нужно. Правильно? Только как это записать я затрудняюсь, молод ещё во FreeBSD.

Аватара пользователя
NickSmith
ефрейтор
Сообщения: 56
Зарегистрирован: 2008-08-10 15:08:47

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение NickSmith » 2011-05-27 14:05:35

Добрый день!

настроил ядерный NAT по статье. вроде все заработало.
Но столкнулся с проблемой, которую никак не могу решить.
Мне нужно порезать канал на полосы следующим образом:
1 выделить фиксированную полосу для VOIP
2 Загнать в фиксированную полосу трафик с двух удаленных IP (с них валится видеонаблюдение)
3 выделить фиксированную полосу на всех юзверей в лавке.

конфигурация:

Код: Выделить всё

[root@GW /home/ni]# uname -a
FreeBSD GW.SOS 8.2-STABLE FreeBSD 8.2-STABLE #5: Wed May 25 16:33:23 MSD 2011     root@GW.SOS:/usr/obj/usr/src/sys/24052011.cern  i386

Код: Выделить всё

[root@GW /home/ni]# sysctl -a | grep one_pass
net.inet.ip.fw.one_pass: 1
(Хотя в /etc/sysctl.conf net.inet.ip.fw.one_pass=0 ?????)

Код: Выделить всё

[root@GW /home/ni]# kldstat
Id Refs Address    Size     Name
 1    4 0xc0400000 6d8df0   kernel
 2    1 0xc7c95000 3000     daemon_saver.ko

Код: Выделить всё

[root@GW /home/ni]# cat /etc/firewall
#!/bin/sh
add 400 allow ip from any to any via re0
#Провайдер дал блок из пяти публичных адресов висит на внтутреннем интерфейсе. 
#Раньше все работало без каких либо шаманств, теперь пришлось проброс сделать
add 410 allow ip from 1.5.8.105/29 to any via em0

загоняю трафик с IP   1.9.3.15 идущий извне в турбу.
add 420 pipe 1 ip from 1.9.3.15 to any via em0
pipe 1 config bw 1500Kbit/s

nat 1 config log if em0 reset same_ports
add 490 nat 1 ip from any to any via em0

Код: Выделить всё

[root@GW /home/ni]# ipfw show
00100      0         0 allow ip from any to any via lo0
00200      0         0 deny ip from any to 127.0.0.0/8
00300      0         0 deny ip from 127.0.0.0/8 to any
00400 619488 576879361 allow ip from any to any via re0
00410   2217    630909 allow ip from 1.5.8.104/29 to any via em0 
00420    949     45552 pipe 1 ip from 1.9.3.15 to any via em0
00490 613552 573462850 nat 1 ip from any to any via em0
65535      0         0 deny ip from any to any
В итоге вижу tcpdump, что у меня пакеты извне приходят, до машины в локальной сетке ,
а ответы от этой машины не уходят обратно.
Подскажите, что крутануть, что бы тунелились потоки..
И как лучше реализовать мою задачу задачу?
на ум приходит делать тунели с разными приоритетами и пропускной способностью, и выстраивать ирархию
по принципу самый высокий- VOIP, средний- юзвери,самый низкий IP cam из интеа????