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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

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

Непрочитанное сообщение terminus » 2009-12-01 12:38:26

ядро должно быть собрано с

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

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

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

Div
сержант
Сообщения: 168
Зарегистрирован: 2007-11-19 10:36:57

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

Непрочитанное сообщение Div » 2009-12-01 13:31:00

terminus писал(а):вам тогда вообще никаких настроек ната не надо делать. он должен работать на внешнем интерфейсе (как сейчас вроде правильно) и не надо redirect_port.

единственное если vpn pptp то надо еще запустить модуль libalias:

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

kldload alias_pptp.ko
Как это не надо?
Если я на локальной машине 192.168.2.15 запускаю прибор и на нем выставляю адрес другого конца 1.2.3.5, то по маршруту в это внешнюю сеть пакеты идут до 192.168.2.252 и должны натится. Клиент на ipsec-e.
Значит рутер должен натить ipsec трафик на внешний адрес...
С уважением Сергей

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-01 13:32:41

terminus писал(а):ядро должно быть собрано с

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

options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
а так пойдёт?

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

zabbix# sysctl -a | grep net.inet.ip.fw.verbose
net.inet.ip.fw.verbose_limit: 50
net.inet.ip.fw.verbose: 1
zabbix#
JunOS kernel based on FreeBSD UNIX.

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

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

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

"настроек ната не надо делать" - в смысле редиректов портов как у вас выше было (redirect_port udp 1.2.3.4:500 500). Зачем это если клиент за натом, а VPN сервер вообще где-то в другой сети?

vpn клиент и сервер умеют работать через нат? обычно в их настройках есть специальная галочка с названием типа "via NAT device" - тогда трафик IPSec инкапсулируется в UDP и спокойно ходит через нат. проверьте.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

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

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

Непрочитанное сообщение terminus » 2009-12-01 13:39:15

vintovkin писал(а):
а так пойдёт?

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

zabbix# sysctl -a | grep net.inet.ip.fw.verbose
net.inet.ip.fw.verbose_limit: 50
net.inet.ip.fw.verbose: 1
zabbix#
хз :pardon:
заработало?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Div
сержант
Сообщения: 168
Зарегистрирован: 2007-11-19 10:36:57

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

Непрочитанное сообщение Div » 2009-12-01 13:48:28

terminus писал(а):"настроек ната не надо делать" - в смысле редиректов портов как у вас выше было (redirect_port udp 1.2.3.4:500 500). Зачем это если клиент за натом, а VPN сервер вообще где-то в другой сети?

vpn клиент и сервер умеют работать через нат? обычно в их настройках есть специальная галочка с названием типа "via NAT device" - тогда трафик IPSec инкапсулируется в UDP и спокойно ходит через нат. проверьте.
Да вы правы... Есть такая галка UDP/NAT , но он доходит тока до интерфейса xl2 рутера и там и дохнет. А вот куда дальше пакеты деваются я не могу посмотреть. Потому и прошу совета. Если я убираю редирект - та же картина. Давайте итог подведем. Что я должен оставить из правил и настроек ната? Я все поправлю и отпишу результат... И еще... Отдебажить поподробнее прохождение пакетов через интерфейсы и нат можно как-то или нет?
С уважением Сергей

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-01 13:50:00

terminus писал(а):
хз :pardon:
заработало?
куда оно денется?!
конечно заработает.
меня больше всего синтаксис интересует:
как само првило писать\составлять??
слово log куда вставлять?
JunOS kernel based on FreeBSD UNIX.

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

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

Непрочитанное сообщение terminus » 2009-12-01 13:55:45

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

ipfw add log deny icmp from any to any 

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

tail -f /var/log/security
Последний раз редактировалось terminus 2009-12-01 14:47:23, всего редактировалось 2 раза.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

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

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

Непрочитанное сообщение terminus » 2009-12-01 14:04:33

Div писал(а): Да вы правы... Есть такая галка UDP/NAT , но он доходит тока до интерфейса xl2 рутера и там и дохнет. А вот куда дальше пакеты деваются я не могу посмотреть. Потому и прошу совета. Если я убираю редирект - та же картина. Давайте итог подведем. Что я должен оставить из правил и настроек ната? Я все поправлю и отпишу результат... И еще... Отдебажить поподробнее прохождение пакетов через интерфейсы и нат можно как-то или нет?

у вас в данный момент ошибок в настройке ipfw нет? вывод ipfw show соответсвует конфигурационному файлу?

попробуйте добавить правило (192.168.2.23 - vpn клиент)

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

ipfw add 1 allow all from 192.168.2.23 to any via xl2
ipfw add 2 allow all from ant to 192.168.2.23 via xl2
и проверить при нем - заработает или нет.
да и вообще у 192.168.2.23 интернет через нат будет или нет?

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

Div
сержант
Сообщения: 168
Зарегистрирован: 2007-11-19 10:36:57

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

Непрочитанное сообщение Div » 2009-12-01 14:21:32

Да соответствует...
Вот по tcpdump смотрел - по обеим интерфейсам и на инт. xl1 никогда пакетов из локальной сети во всех случаях не возникало... А как проверить, ваааще НАТ работает или нет? :)
Счас последний пост проверю и отпишу...

И еще... Мне необходимо только с одной локальной машины именно только этот трафик натить...
С уважением Сергей

Div
сержант
Сообщения: 168
Зарегистрирован: 2007-11-19 10:36:57

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

Непрочитанное сообщение Div » 2009-12-01 17:22:27

Ну во все сделал все ОК...
Ниже, что я поправил...
-----------------
Итак заменил правило

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

# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
${fwcmd} add deny all from any to 192.168.0.0:255.255.0.0 via ${oif}
на

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

# Stop RFC1918 nets on the outside interface
${fwcmd} add deny tcp from 192.168.0.0:255.255.0.0 to any via ${oif}
${fwcmd} add deny tcp from any to 192.168.0.0:255.255.0.0 via ${oif}
далее ввел

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

ip_vpn="1.2.3.5" #внешняя машина с випин сервером
И далее получились такие правила ната

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

# Allow NAT udp out from adm mashine
${fwcmd} add allow udp from ${iadmip} to ${ip_vpn} via ${iif}
${fwcmd} add allow udp from ${ip_vpn} to ${iadmip} via ${iif}
${fwcmd} nat 10 config if ${oif} reset same_ports deny_in redirect_port udp ${oip}:500 500
${fwcmd} add nat 10 udp from ${iadmip} to any out xmit ${oif}
${fwcmd} add nat 10 udp from ${ip_vpn} to any in recv ${oif}
Ну вот и все... летает как надо...
Всем спасибо за внимание. :bn:
С уважением Сергей

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-02 10:04:04

обновил ОС до 8.0
и отвалился фаер((
сейчас я его откл совсем, как вылечить где грабля?
dmesg -a

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

Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
Firewall rules loaded.
Firewall logging enabled.
net.inet.ip.fw.enable:
1
 ->
1

Additional IP options:
.
Mounting NFS file systems:
.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat /usr/local/lib/compat/pkg /usr/local/lib/mysql
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
Creating and/or trimming log files:
.
Starting syslogd.
Checking for core dump on /dev/ad4s1b...
savecore: no dumps found
Initial i386 initialization:
.
Additional ABI support:
.
Clearing /tmp (X related).
Starting local daemons:
.
Updating motd
.
Mounting late file systems:
.
Starting proftpd.
 - setting default address to 10.1.1.213
Starting nmbd.
rl0: link state changed to UP
/libexec/ld-elf.so.1:
/usr/local/sbin/nmbd: invalid PT_PHDR

Starting smbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/smbd: invalid PT_PHDR

Starting mysql.
Starting zabbix_server.
Starting zabbix_agentd.
Starting squid.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Configuring syscons:
 keymap
 scrnmap
 font8x16
 font8x14
 font8x8
 blanktime
 allscreens
.
Starting sshd.
Starting cron.
Local package initialization:
.
net.inet.ip.fw.verbose_limit:
0
 ->
50

Starting inetd.
Starting background file system checks in 60 seconds.

Wed Dec  2 09:24:39 MSK 2009
Dec  2 09:24:45 zabbix login: ROOT LOGIN (root) ON ttyv0
ipfw: size mismatch (have 64 want 68)
ipfw: size mismatch (have 76 want 80)
ipfw: size mismatch (have 92 want 96)
ipfw: size mismatch (have 68 want 72)
ipfw: size mismatch (have 68 want 72)
Dec  2 09:29:28 zabbix shutdown: shutdown by root:
Stopping inetd.
Shutting down daemon processes:
.
Stopping cron.
Stopping sshd.
Stopping apache22.
Waiting for PIDS: 750
.
Stopping squid.
Waiting for PIDS: 710
.
Stopping zabbix_agentd.
Waiting for PIDS: 691 702 703 704 705 706 707
.
Stopping zabbix_server.
Waiting for PIDS: 684 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742
.
Stopping mysql.
Stopping proftpd.
Waiting for PIDS: 616
.
Shutting down local daemons:
.
Stopping devd.
Writing entropy file:
.
.
Dec  2 09:29:41 zabbix syslogd: exiting on signal 15
Enter full pathname of shell or RETURN for
/bin/sh
:
#
#
#
Loading configuration files.
kernel dumps on /dev/ad4s1b
Entropy harvesting:
 interrupts
 ethernet
 point_to_point
 kickstart
.
Fast boot: skipping disk checks.
Setting hostuuid: 80a28947-502c-1210-825b-8fd1742a55b4.
Setting hostid: 0x75b7ade6.
Mounting local file systems:
.
net.inet6.ip6.auto_linklocal:
0
 ->
0

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:19:db:52:4c:3c
        inet 10.1.1.213 netmask 0xffff0000 broadcast 10.255.255.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
add net default: gateway 10.1.1.1
Additional routing options:
.
Starting devd.
ipfw: size mismatch (have 64 want 68)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 76 want 80)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 92 want 96)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
Firewall rules loaded.
Firewall logging enabled.
net.inet.ip.fw.enable:
1
 ->
1

Additional IP options:
.
Mounting NFS file systems:
.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat /usr/local/lib/compat/pkg /usr/local/lib/mysql
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
Creating and/or trimming log files:
.
Starting syslogd.
Checking for core dump on /dev/ad4s1b...
savecore: no dumps found
Initial i386 initialization:
.
Additional ABI support:
.
Clearing /tmp (X related).
Starting local daemons:
.
Updating motd
.
Mounting late file systems:
.
Starting proftpd.
 - setting default address to 10.1.1.213
Starting nmbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/nmbd: invalid PT_PHDR

Starting smbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/smbd: invalid PT_PHDR

Starting mysql.
Starting zabbix_server.
Starting zabbix_agentd.
Starting squid.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Configuring syscons:
 keymap
 scrnmap
 font8x16
 font8x14
 font8x8
 blanktime
 allscreens
.
Starting sshd.
Starting cron.
Local package initialization:
.
Starting inetd.
Starting background file system checks in 60 seconds.

Wed Dec  2 09:30:00 MSK 2009
Dec  2 09:30:05 zabbix login: ROOT LOGIN (root) ON ttyv0
zabbix#
JunOS kernel based on FreeBSD UNIX.

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

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

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

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

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-02 13:30:06

terminus писал(а):плохо обновились значит. или мир не пересобрали/не поставили, или сторонний софт который с ядром работает.
да да да!!!!!!!!!!!!!
это вы точно подметили!

я сделал билдворлд
потом мэйк кернел - ребут ...
... хост в дауне ...
потопал в сервачную с монитором и клавой((((((((((

откл фаер и потом уже мержамастер и инстал ворлд!
щас вроде всё ок. но как назад фаер прикруить? также?
вдруг косяк!!!опять топать к нему надо(

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

zabbix# uname -a
FreeBSD zabbix 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Tue Dec  1 15:24:26 MSK 2009     ed@zabbix:/usr/obj/usr/src/sys/GENERIC  i386
zabbix#
JunOS kernel based on FreeBSD UNIX.

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-03 11:38:59

terminus писал(а):

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

ipfw add log deny icmp from any to any 

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

tail -f /var/log/security
что делает таил?
для чего он ?
JunOS kernel based on FreeBSD UNIX.

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

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

Непрочитанное сообщение terminus » 2009-12-03 12:11:58

логи фаервола пойдут в файл /var/log/security

команда tail -f /var/log/security используется для слежения за изменениями в файле в реальном времени - будет выводить все, что появляется в /var/log/security на экран.

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

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1291
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

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

Непрочитанное сообщение vintovkin » 2009-12-03 12:17:16

terminus писал(а):логи фаервола пойдут в файл /var/log/security

команда tail -f /var/log/security используется для слежения за изменениями в файле в реальном времени - будет выводить все, что появляется в /var/log/security на экран.

:unknown:
спс
всё работает))
JunOS kernel based on FreeBSD UNIX.

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

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

Непрочитанное сообщение Rainbow » 2009-12-05 17:41:33

А в от какое место в схеме прохождения пакета занимает fwd? Где оно выполняется и что происходит с пакетом?

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

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

Непрочитанное сообщение terminus » 2009-12-05 17:45:44

Читайте статью nuclight'а http://nuclight.livejournal.com/124348.html
Функция ip_output() первым делом смотрит в таблицу маршрутизации, определяя,
каков шлюз и на каком интерфейсе он находится. С этой информацией пакет вновь
передается в ipfw, в котором опять пробегается по всем правилам. После выхода
из ipfw_chk() в ip_output(), если ядро было скомпилировано с соответствующей
опцией, проверяется, не был ли применен ipfw fwd - если да, то просмотр
таблицы маршрутизации выполняется заново с целью получить MAC-адрес нового
шлюза. Затем пакет в точке (7) покидает ip_output() и передается дальше, на
L2 и потом к драйверам интерфейсов.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

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

Непрочитанное сообщение shamahn » 2009-12-10 5:22:51

Доброго времени суток!
Ситуация такая же как в первом примере, только разница в следующем:
внешний интерфейс rl0 получает айпи динамически+интернет через pppoe. Внешний айпи, тож динамически присваивается (будь он неладен)
Необходимо пробросить udp/nat +прозрачный прокси

Без заворота в проксик, все нормально, и заворачивается тож несложно, а вот из нее уже не возвращается) Точнее даже возвращается, но в правило которое у меня как черная дыра =)

Собственно статистика

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

01040   219    20500 allow ip from any to any via sk0
01050     0        0 deny ip from any to 192.168.0.0/16 in recv tun0
01060     0        0 deny ip from 192.168.0.0/16 to any in recv tun0
01070     0        0 deny ip from any to 172.16.0.0/12 in recv tun0
01080     0        0 deny ip from 172.16.0.0/12 to any in recv tun0
01090     0        0 deny ip from any to 10.0.0.0/8 in recv tun0
10100     0        0 deny ip from 10.0.0.0/8 to any in recv tun0
10110     0        0 deny ip from any to 169.254.0.0/16 in recv tun0
10120     0        0 deny ip from 169.254.0.0/16 to any in recv tun0
10125    14     1984 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130    40     2508 nat 1 ip from any to any via tun0
65534     1      328 deny ip from any to any
65535 51839 16671754 allow ip from any to any
и, собственно, правила

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

#!/bin/sh
ipfw='ipfw'
innet='192.168.1.0/24'
inif='sk0'
outip='93.91.236.61'
outif='tun0'

${ipfw} -f flush
# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any

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

# боимся непонятного
${ipfw} add 1050 deny ip from any to 192.168.0.0/16 in recv ${outif}
${ipfw} add 1060 deny ip from 192.168.0.0/16 to any in recv ${outif}
${ipfw} add 1070 deny ip from any to 172.16.0.0/12 in recv ${outif}
${ipfw} add 1080 deny ip from 172.16.0.0/12 to any in recv ${outif}
${ipfw} add 1090 deny ip from any to 10.0.0.0/8 in recv ${outif}
${ipfw} add 10100 deny ip from 10.0.0.0/8 to any in recv ${outif}
${ipfw} add 10110 deny ip from any to 169.254.0.0/16 in recv ${outif}
${ipfw} add 10120 deny ip from 169.254.0.0/16 to any in recv ${outif}

#Заворачиваем трафик в проксик
${ipfw} add 10125  fwd 127.0.0.1,3128 tcp from ${innet} to any http out via ${outif}

# настройка ната (хоть убей не понимаю что делается этой сточкой)
${ipfw} nat 1 config log if ${outif} reset same_ports deny_in redirect_port tcp ${outip}:6881 6881 redirect_port udp ${outip}:4444 4444 redirect_port tcp 192.168.1.24:25 25

# заварачиваем все что проходит через внешний интерфейс в нат
${ipfw} add 10130 nat 1 ip from any to any via ${outif}

# боимся непонятного
${ipfw} add 65534 deny all from any to any
Если бы кто-нить рассказал, что же мы делаем той загадочной сточкой =) и что за странные айпи 192.168.1.24

Оо... После перезагрузки правил, - все работает, даже если внешний ${outip} указан неверно. И так до ребута. После ребута снова Hostname lookup failure. Перезагружаешь правила файервола, - и снова все бегает, хотя вшенший ip уже другой. Во чудо

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

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

Непрочитанное сообщение terminus » 2009-12-10 10:51:00

Если бы кто-нить рассказал, что же мы делаем той загадочной сточкой и что за странные айпи 192.168.1.24
Это ведь просто пример был для того чтобы показать как делать пробрасивание портов. Зачем копируете не разобравшись (тем более, что в прмере все было расписано о том, что как работает)? Уберите все redirect_port.

Оо... После перезагрузки правил, - все работает, даже если внешний ${outip} указан неверно. И так до ребута. После ребута снова Hostname lookup failure. Перезагружаешь правила файервола, - и снова все бегает, хотя вшенший ip уже другой. Во чудо
интерфейс tun0 скорее всего появляетя после того как в процессе загрузки отрабатывает фаервол - ipfw при старте не имеет информации о tun0 поэтому и ниче не работает. поместите ваш скрипт с настройками касающимеся запуска ната в /usr/local/etc/rc.c/firewallstart.sh тогда он будет отрабатывать после запуска демона pppoe и сможет настроить нат как надо.

вот это вырежте из основного скрипта и закинте в тот отдельный firewallstart.sh:

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

#!/bin/sh
ipfw='ipfw'
outif='tun0'

# настройка ната 
${ipfw} nat 1 config log if ${outif} reset same_ports deny_in

# заварачиваем все что проходит через внешний интерфейс в нат
${ipfw} add 10130 nat 1 ip from any to any via ${outif}


и не копируйте никогда чужие конфиги и примеры не разобравшись как следует в них самих, и в комментариях к ним.
Потому как:

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

# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any
было для случая когда правила фаепвола указаны в firewall_type="/etc/firewall", при этом системный скрипт запуска фаервола сам их добывит. А так как вы вместо системного используете свой собственный, то о них уже никто не заботится, что и видно потом в вашем листинге с ваводом ipfw show...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

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

Непрочитанное сообщение shamahn » 2009-12-10 17:36:34

Всем доброго утра :)
terminus писал(а):Это ведь просто пример был для того чтобы показать как делать пробрасивание портов. Зачем копируете не разобравшись (тем более, что в прмере все было расписано о том, что как работает)? Уберите все redirect_port.

Да сам терпеть не могу тупой копипаст, но обстоятельства сильнее. Завтра, кровь из носа, надо показать шефу как у нас народ ходит через сервер, и даже после перезгрузки сервера, показать как мы собираем статистику и пр. А еще 4 дня назад, я тупо смотрел в пустой черный экран с приглашением proxy# . Главное на данный момент, сделать чтобы работало как-то, все равно это только подготовка и до момента пока это станет сервером у меня еще будет время разобрать в правилах ipfw. Главное пережить завтрашний натиск :cz2:
terminus писал(а):интерфейс tun0 скорее всего появляетя после того как в процессе загрузки отрабатывает фаервол - ipfw при старте не имеет информации о tun0 поэтому и ниче не работает.
Мне эта мысль сегодня во сне пришла. Я уже даже во сне настриваю серв =)
terminus писал(а):вот это вырежте из основного скрипта и закинте в тот отдельный firewallstart.sh:
Сделано. Там только больший кусок надо переместить, и первый блок "боимся всего непонятного" - он же тож внешний интерфейс слушает. И заворот на проксик, он тоже слушает его.
terminus писал(а):и не копируйте никогда чужие конфиги и примеры не разобравшись как следует в них самих, и в комментариях к ним.
Обещаю исправиться! Очень тяжко заставить мозг работать после форточек
terminus писал(а):поместите ваш скрипт с настройками касающимеся запуска ната в /usr/local/etc/rc.c/firewallstart.sh тогда он будет отрабатывать после запуска демона pppoe и сможет настроить нат как надо.
Сделал. После рестарта сервера имею:

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

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
01040 247 25428 allow ip from any to any via sk0
65534  55 14924 deny ip from any to any
65535   0     0 allow ip from any to any
#sh /usr/local/etc/rc.d/firewallstart.sh

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

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
01040 545 57694 allow ip from any to any via sk0
01050   0     0 deny ip from any to 192.168.0.0/16 in recv tun0
01060   0     0 deny ip from 192.168.0.0/16 to any in recv tun0
01070   0     0 deny ip from any to 172.16.0.0/12 in recv tun0
01080   0     0 deny ip from 172.16.0.0/12 to any in recv tun0
01090   0     0 deny ip from any to 10.0.0.0/8 in recv tun0
10100   0     0 deny ip from 10.0.0.0/8 to any in recv tun0
10110   0     0 deny ip from any to 169.254.0.0/16 in recv tun0
10120   0     0 deny ip from 169.254.0.0/16 to any in recv tun0
10125  15  3379 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130  63 13220 nat 1 ip from any to any via tun0
65534  71 19892 deny ip from any to any
65535   0     0 allow ip from any to any
Скрипт почему-то не стартует автоматом =(

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

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

Непрочитанное сообщение terminus » 2009-12-10 18:46:10

Скрипт почему-то не стартует автоматом =(
сделайте так

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

chmod 755 /usr/local/etc/rc.d/firewallstart.sh
и попробуйте сново
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

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

Непрочитанное сообщение shamahn » 2009-12-10 19:31:04

terminus писал(а):сделайте так

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

chmod 755 /usr/local/etc/rc.d/firewallstart.sh
и попробуйте сново
Божественно!!! =) теперь только squidGuard выпендривается, но сейчас будем делать)
Спасибо огромное

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

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

Непрочитанное сообщение shamahn » 2009-12-11 4:24:51

Сейчас проверял, и заметил что в правиле

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

${ipfw} nat 1 config log if ${outif} reset same_ports deny_in 
deny_in как-то не работает. И фтп мой доступен с наружи, и хттп, и ssh.. хотя ничего не разрешал
Вот ipfw show

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

00100   60  13998 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
01040 2680 799218 allow ip from any to any via sk0
01050    0      0 deny ip from any to 192.168.0.0/16 in recv tun0
01060    0      0 deny ip from 192.168.0.0/16 to any in recv tun0
01070    0      0 deny ip from any to 172.16.0.0/12 in recv tun0
01080    0      0 deny ip from 172.16.0.0/12 to any in recv tun0
01090    0      0 deny ip from any to 10.0.0.0/8 in recv tun0
10100    0      0 deny ip from 10.0.0.0/8 to any in recv tun0
10110    0      0 deny ip from any to 169.254.0.0/16 in recv tun0
10120    0      0 deny ip from 169.254.0.0/16 to any in recv tun0
10125  525 102113 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130 1315 494071 nat 1 ip from any to any via tun0
65534   20   4891 deny ip from any to any
65535    0      0 allow ip from any to any 
тут как-то динай_ина и не видно ((