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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

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

Непрочитанное сообщение demonsked » 2009-09-13 7:26:54

Решил свою проблему. Причина кривой нат - все заворачивалось фиг знает как.
Нас в ребут, а мы крепчаем.

Хостинговая компания 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/

Snake
ефрейтор
Сообщения: 53
Зарегистрирован: 2009-06-17 14:02:58

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

Непрочитанное сообщение Snake » 2009-09-13 10:37:53

blackjackchik писал(а): менял все не лету на рабочем сервере,

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

[root@router /home/admin]# uname -a
FreeBSD router.ua 7.1-RELEASE-p6 FreeBSD 7.1-RELEASE-p6 #2: Tue Jul 21 20:05:02 EEST 2009     admin@router.ua:/usr/obj/usr/src/sys/GATE_NEW  i386
Увы, но ничего не выходит. Делал тоже самое.

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

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

Непрочитанное сообщение demonsked » 2009-09-13 16:58:30

Проблема с пайпами была в данном правиле

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

# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via vr0
если я его использовал именно в таком виде, то шейпер не работает.
Вернулся к старому варианту

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

# разрешаем траффик внутренней сети на внутреннем интерфейсе
add 60 allow all from any to 172.16.0.0/24 in via vr0
add 61 allow all from 172.16.0.0/24 to any out via vr0
как итог все работает.
Нас в ребут, а мы крепчаем.

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

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

Непрочитанное сообщение terminus » 2009-09-13 18:11:01

Вы по второму примеру натсраевали нат+шейпер? если так то предъява не принимается :smile: так как вы его слишком сильно модифицировали. у меня схема такая (упрощенно)

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


nat 1 config log if em0 reset same_ports deny_in redirect_port tcp 192.168.1.24:25 25

pipe 1 config bw 10Mbit/s queue 60 gred 0.002/10/30/0.1
queue 1 config pipe 1 mask src-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

pipe 2 config bw 10Mbit/s queue 60 gred 0.002/10/30/0.1
queue 2 config pipe 2 mask dst-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

add 1040 allow ip from any to any via fxp0

add 10150 queue 1 ip from any to any out xmit em0
add 10160 nat 1 ip from any to any via em0
add 10170 queue 2 ip from any to any in recv em0

add 10180 allow all from any to any

add 65534 deny all from any to any
а у вас такая (обратно упрощенно):

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

#лимиты скорости
pipe 1 config bw 256k queue 10
pipe 2 config bw 256k queue 10
pipe 3 config bw 512k queue 10
pipe 4 config bw 512k queue 10
pipe 5 config bw 512k queue 10
pipe 6 config bw 512k queue 10
pipe 7 config bw 2048k queue 10
pipe 8 config bw 2048k queue 10

# настройка ната
nat 1 config log if sis0 reset same_ports deny_in redirect_port tcp 172.16.0.10:50983

# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via vr0

# для sshit
add 10180 deny ip from table(0) to any

# заварачиваем все что проходит через внешний интерфейс в нат
add 10190 nat 1 ip from any to any via sis0

#режем скорость
add 11100 pipe 1 all from 172.16.0.11 to any
add 11200 pipe 2 all from any to 172.16.0.11
add 11300 pipe 3 all from 172.16.0.12 to any
add 11400 pipe 4 all from any to 172.16.0.12
add 11500 pipe 7 all from 172.16.0.10 to any
add 60 pipe 8 all from any to 172.16.0.10

# Блокируем все остальные попытки соединения с занесением в логи
add 65534 deny log all from any to any
у вас после ната на пайпы уходит модифицированный трафик в котором адрес отправителя замен => правила 11100, 11300, 11500 не работают...
:pardon:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

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

Непрочитанное сообщение demonsked » 2009-09-14 22:00:54

Эмм делал по первому примеру.
Надо разъяснить ситуацию.
172.16.0.0/24 сеть локальная на vr0, sis0 соответсвенно внешний интерфейс
Вот конфиг на данный момент

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

[root@skedteam ~]$ cat /etc/ipfw_new.conf
#IPFW rules for server
#
#

# сбрасываем все правила
flush
# сбрасываем все pipe
pipe flush

#создаем нат
nat 1 config if sis0 same_ports redirect_port udp 172.16.0.10:52146 52146 redirect_port tcp 172.16.0.10:52146 52146

#лимиты скорости
pipe 1 config bw 256k
pipe 2 config bw 256k
pipe 3 config bw 256k
pipe 4 config bw 256k
pipe 5 config bw 512k
pipe 6 config bw 512k
pipe 7 config bw 1024k
pipe 8 config bw 1024k
#pipe 9 config bw 2048k
#pipe 10 config bw 2048k

#разрешаем весь траффик по внутреннему интерфейсу
add 10 allow all from any to any via lo0
#рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0
add 11 deny all from any to 127.0.0.0/8
add 12 deny all from 127.0.0.0/8 to any

# разрешаем траффик внутренней сети на внутреннем интерфейсе
add 13 allow all from any to 172.16.0.0/24 in via vr0
add 14 allow all from 172.16.0.0/24 to any out via vr0

# боимся непонятного
add 20 deny ip from any to 192.168.0.0/16 in recv sis0
add 21 deny ip from 192.168.0.0/16 to any in recv sis0
add 22 deny ip from any to 10.0.0.0/8 in recv sis0
add 23 deny ip from 10.0.0.0/8 to any in recv sis0
add 24 deny ip from any to 169.254.0.0/16 in recv sis0
add 25 deny ip from 169.254.0.0/16 to any in recv sis0

# для sshit
add 35 deny ip from table(0) to any

# рубим пакеты `типа от внутренней сети, но на внешнем интерфейсе`
add 40 deny ip from 172.16.0.0/24 to any in via sis0
# рубим пакеты `типа от внешней сети, но на внутреннем интерфейсе`
add 41 deny ip from 172.16.1.0/24 to any in via vr0

# рубим автоконфигуреную частную сеть
add 50 deny ip from any to 169.254.0.0/16 in via sis0

# рубим мультикастовые рассылки
add 60 deny ip from 224.0.0.0/4 to any out via sis0
add 61 deny ip from any to 240.0.0.0/4 in via sis0

# рубим фрагментированные icmp
add 70 deny icmp from any to any frag

# рубим широковещательные icmp на внешнем интерфейсе
add 81 deny log icmp from any to 255.255.255.255 in via sis0
add 82 deny log icmp from any to 255.255.255.255 out via sis0

#используем нат
add 100 nat 1 all from any to any via sis0

#режем скорость
add 111 pipe 1 all from 172.16.0.11 to any
add 112 pipe 2 all from any to 172.16.0.11
add 113 pipe 3 all from 172.16.0.12 to any
add 114 pipe 4 all from any to 172.16.0.12
add 115 pipe 7 all from 172.16.0.10 to any
add 116 pipe 8 all from any to 172.16.0.10

# Блокируем все остальные попытки соединения с занесением в логи
add 65534 deny log all from any to any
Нас в ребут, а мы крепчаем.

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

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

Непрочитанное сообщение molot » 2009-09-15 9:34:09

У меня вопрос.....
Пример пятый... 2 интернета 1 локаль(несколько подситей у меня)

em0 = 1 inet
em1 = 2 inet
em2 = local
нужно сделать чтобы пользователи со squid и socks5 гуляли в инет например с em1
а сам сервак гулял например с em0 тоесть чтобы люди и железяка отдельнобыли и друг другу не мешали.

molotok_2003
проходил мимо
Сообщения: 1
Зарегистрирован: 2009-09-15 9:35:54
Контактная информация:

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

Непрочитанное сообщение molotok_2003 » 2009-09-15 9:49:44

Эт мое сообщение
molot писал(а):У меня вопрос.....
Пример пятый... 2 интернета 1 локаль(несколько подситей у меня)

em0 = 1 inet
em1 = 2 inet
em2 = local
нужно сделать чтобы пользователи со squid и socks5 гуляли в инет например с em1
а сам сервак гулял например с em0 тоесть чтобы люди и железяка отдельнобыли и друг другу не мешали.

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

# блокируем сеть на интерфейс em0
add deny all from em3 to any via em0
Это так выглядит или я чет напутал

а вот как направить саму железяку на интерфейс em0 я не знаю(((

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

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

Непрочитанное сообщение terminus » 2009-09-15 9:55:23

вам четвертый пример надо под себя модифицировать - том жестко прописывается кому через какое подключение ходить, а в пятом динамическое распределение...

у вас сквид на том же сервере запущен или он на другой машине в локальной сети?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

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

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

Непрочитанное сообщение Seregy001 » 2009-09-17 6:26:03

У меня возник один интересный вопрос. Я подключаюсь к инету по ADSL и IP у меня динамический. Как мне настраивать NAT когда у меня внешний интерфейс все врема разный???

Snake
ефрейтор
Сообщения: 53
Зарегистрирован: 2009-06-17 14:02:58

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

Непрочитанное сообщение Snake » 2009-09-17 7:15:45

Внешний интерфейс у вас будет один - например, ng0 в случае использования mpd. Имя интерфейса задается исключительно программой, с помощью которой поднимаете pppoe

Гость
проходил мимо

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

Непрочитанное сообщение Гость » 2009-09-17 7:33:17

А как мне узнать какой програмой я его поднимаю? Для того что бы подключится к инету я набираю ppp -ddial provider Какой у меня в этом случае внешний интерфейс?


Гость
проходил мимо

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

Непрочитанное сообщение Гость » 2009-09-17 9:07:43

Спс для меня это виртуальный интерфейс tun0.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2009-09-17 14:04:19

Кто подскажет зачем нужна опция, добавляемая в ядро

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

options HZ="1000"
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

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

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

Непрочитанное сообщение terminus » 2009-09-17 14:47:32

http://www.freebsd.org/cgi/man.cgi?quer ... ormat=html
DUMMYNET(4) FreeBSD Kernel Interfaces Manual DUMMYNET(4)

NAME
dummynet -- traffic shaper, bandwidth manager and delay emulator

DESCRIPTION
The dummynet system facility permits the control of traffic going through
the various network interfaces, by applying bandwidth and queue size lim-
itations, implementing different scheduling and queue management poli-
cies, and emulating delays and losses.

The user interface for dummynet is implemented by the ipfw(8) utility, so
please refer to the ipfw(8) manpage for a complete description of the
dummynet capabilities and how to use it.

Kernel Options
The following options in the kernel configuration file are related to
dummynet operation:

IPFIREWALL enable ipfirewall (required for dummynet)
IPFIREWALL_VERBOSE enable firewall output
IPFIREWALL_VERBOSE_LIMIT limit firewall output
DUMMYNET enable dummynet operation
HZ set the timer granularity

Generally, the following options are required:

options IPFIREWALL
options DUMMYNET
options HZ=1000 # strongly recommended

Additionally, one may want to increase the number of mbuf clusters (used
to store network packets) according to the sum of the bandwidth-delay
products and queue sizes of all configured pipes.

SEE ALSO
setsockopt(2), if_bridge(4), ip(4), ipfw(8), sysctl(8)

HISTORY
The dummynet facility was initially implemented as a testing tool for TCP
congestion control by Luigi Rizzo <luigi@iet.unipi.it>, as described on
ACM Computer Communication Review, Jan.97 issue. Later it has been modi-
fied to work at the IP and bridging levels, integrated with the ipfw(4)
packet filter, and extended to support multiple queueing and scheduling
policies.

FreeBSD 7.2 October 28, 2002 FreeBSD 7.2
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2009-09-17 14:55:37

а в кавычках или без?

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

options HZ="1000"
- в разных источниках по-разному
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

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

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

Непрочитанное сообщение terminus » 2009-09-17 15:38:00

да по-ходу все равно... у меня в кавычках
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Snake
ефрейтор
Сообщения: 53
Зарегистрирован: 2009-06-17 14:02:58

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

Непрочитанное сообщение Snake » 2009-09-17 15:57:42

Появилась возможность наконец протестировать два подключения в инет на одной машине :). Предварительный результат - натится трафик только на один из интерфейсов. На втором все заканчивается еще на разрешающих правилах. Собственно, есть два вопроса - надо ли использовать skipto для юзеров, отправляемых по второму каналу и надо ли использовать routetables?

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2009-09-17 16:06:05

Так оно еще может на заработать (ядерный нат на двух каналах в инет) ?? :-o
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

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

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

Непрочитанное сообщение terminus » 2009-09-17 16:24:45

Snake писал(а):Собственно, есть два вопроса - надо ли использовать skipto для юзеров, отправляемых по второму каналу
непонял...
Snake писал(а):и надо ли использовать routetables?
в рецепте написано, что ядро надо пересобрать с опцыей включающей 2 таблицы. сделали так?
скрипт для выставления defoultroute во второй таблице при загрузке подкдючили?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Snake
ефрейтор
Сообщения: 53
Зарегистрирован: 2009-06-17 14:02:58

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

Непрочитанное сообщение Snake » 2009-09-17 16:39:24

опцию при сборке ядра включил, да. число таблиц 2
скрипт для выставления defoultroute во второй таблице при загрузке подкдючили?
Вот я и говорю, надо ли использовать setfib?
непонял...
Ну в смысле у меня есть две таблицы с айпишниками. Одну таблицу надо пустить по одному маршруту, вторую - по другому. Я так понял уже можно жестко назначить, кому какую таблицу маршрутизации назначать?

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

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

Непрочитанное сообщение terminus » 2009-09-17 16:49:14

Snake писал(а):Вот я и говорю, надо ли использовать setfib?
без этого нельзя. а иначе во второй таблице default маршрута не будет и смысла в использовании ipfw setfib не станет.
Ну в смысле у меня есть две таблицы с айпишниками. Одну таблицу надо пустить по одному маршруту, вторую - по другому. Я так понял уже можно жестко назначить, кому какую таблицу маршрутизации назначать?
в пятом примере вся фишка в динамическом распределении соединений через prob 0.5 и keep-state. имеет ли смысл "жестко назначать"? может тогда четвертый пример за основу брать?

правила ipfw покажите
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Jungo
рядовой
Сообщения: 13
Зарегистрирован: 2008-08-24 18:01:24

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

Непрочитанное сообщение Jungo » 2009-09-17 21:54:19

странно но получается полный бред по первому варианту
раньше с natd мне не приходилось открывать все порты
файрволл работал в allow all
теперь если применить nat

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

00100    818   352261 nat 123 ip from any to any via ng0
00200    280   196629 allow ip from any to any
65535 376377 55138181 deny ip from any to any
входящие обращения на порты ng0 подпадают видимо под нат
то есть ни до одного порта не достучатся
хоть их и слушают

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

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

Непрочитанное сообщение terminus » 2009-09-17 21:58:56

там в заметке много букав :smile: среди них есть описание работы директивы deny_in и параметра sysctl net.inet.ip.fw.one_pass.

покажите:

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

ipfw nat 123 show config
и

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

sysctl -a | grep one_pass
---

а если по-быстрому, то решение проблемы либо делать дырки в фаерволе - ставить правила разрешающие прохождение трафика на конкретные порты перед заворачиванием трафика в нат, либо делать дыкри в самом нате с помощью директивы redirect_port.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Jungo
рядовой
Сообщения: 13
Зарегистрирован: 2008-08-24 18:01:24

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

Непрочитанное сообщение Jungo » 2009-09-17 22:10:15

убрал deny in побежали пакетики)
спасибо очень оперативно
а one pass я задаю прямо в конфиге
вот так

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

${ipfw} enable one_pass