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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Perfectus
рядовой
Сообщения: 30
Зарегистрирован: 2012-11-05 13:54:04

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

Непрочитанное сообщение Perfectus » 2012-12-06 7:27:28

Вроде решил проблему. Не хочется сглазить:-), но после того как поменял кабели местами - то есть re0 теперь внешний интерфейс, а alc0 внутренний, все стало работать как надо. На внешнем соответственно отключил RXCSUM,TXCSUM.
Пару дней сервак принимает входящие соединения в не зависимости от включенности машин за ним. Может кому, то поможет мой опыт:-)
Благодарю terminus'a за статью и конфиг.

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

BaRRagA
проходил мимо
Сообщения: 2
Зарегистрирован: 2012-12-13 17:16:25

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

Непрочитанное сообщение BaRRagA » 2012-12-13 17:51:43

Привет!
Есть следующая проблемка - ядерный нат не пробрасывает порт. Всё по мануалу
Вот конфиги:
1. Ядро:

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

#my options
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT
options         DUMMYNET
options         LIBALIAS
options         IPSEC
device          crypto
options         IPSEC_DEBUG
options         IPSEC_FILTERTUNNEL
#######
2. /etc/rc.conf:

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

hostname="testfree"
gateway_enable="YES"
#outside net
ifconfig_em0="inet 192.168.0.249 netmask 255.255.255.0 -rxcsum -txcsum -tso"
#inside net
ifconfig_em1="inet 192.168.10.249 netmask 255.255.255.0 -rxcsum -txcsum -tso"

defaultrouter="192.168.0.209"

firewall_enable="YES"
firewall_script="/etc/test.fw"
firewall_nat_enable="YES"
dummynet_enable="YES"
3. /etc/test.fw :

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

#!/bin/sh
ipfw -f flush
cmd="/sbin/ipfw add"
out_if="192.168.0.249"
in_if="192.168.10.249"

$cmd allow all from any to any via em1
$cmd allow all from me to 192.168.0.153 via em0
$cmd allow all from 192.168.0.153 to me
ipfw nat 1 config log if em0 reset same_ports deny_in redirect_port tcp 192.168.10.154:3389 3389
ipfw add nat 1 ip from any to any via em0
$cmd deny all from any to any
4./etc/sysctl.conf:

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

net.inet.ip.fw.one_pass=1
Конфигурация тестовая. 9-я фря. Для проверки пробрасываем порт rdp на машину 192.168.10.154. C указанным конфигом - не работает :( Если ставлю например rinetd - чудесно пробрасывает...
Ткните плз, где ошибка? Уже мозг плывёт.
В этой теме нарыл что для рдп надо ставить net.inet.ip.fw.one_pass=0 - но так тоже не работает.

BaRRagA
проходил мимо
Сообщения: 2
Зарегистрирован: 2012-12-13 17:16:25

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

Непрочитанное сообщение BaRRagA » 2012-12-14 12:16:05

Ошибка была в правиле

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

$cmd allow all from me to 192.168.0.153 via em0
$cmd allow all from 192.168.0.153 to me
Из-за него пакеты до ната не доходят..
Но теперь другая проблема - Делаю похожие правила на резервном шлюзе, привожу фаерволл до следующего вида:

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

#!/bin/sh
ipfw -f flush
cmd="/sbin/ipfw add"
host="82.207.116.20"
pif="tun0"

#Allow localnet
$cmd allow all from any to any via nfe0

ipfw nat 1 config log if tun0 reset same_ports deny_in redirect_port tcp 192.168.0.49:3389 3389
ipfw add nat 1 ip from any to any via tun0
$cmd allow ip from any to any
И проброс по-прежнему не работает.. Собственно, из-за этого и была сделана тестовая конфигурация.
Может проблема в том что соединение установлено по pppoe? Но внешний интерфейс указан правильно - tun0.

Вот rc.conf:

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

gateway_enable="YES"
ifconfig_nfe0="inet 192.168.0.209  netmask 255.255.255.0 -rxcsum -txcsum -tso" #inside net
firewall_enable="YES"
firewall_script="/etc/f_test.fw"
firewall_nat_enable="YES"
dummynet_enable="YES"

ppp_enable="YES"
ppp_mode="ddial"
#ppp_nat="YES"
ppp_profile="ukrtel"
Вот вывод ipfw show:

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

gate2 ipfw -d show
00100 74131 61592365 allow ip from any to any via nfe0
00200 77427 56664711 nat 1 ip from any to any via tun0
00300   220    26928 allow ip from any to any
65535    32     6132 deny ip from any to any
gate# ipfw nat 1 show
nat 1: icmp=9, udp=86, tcp=362, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=457

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

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

Непрочитанное сообщение ReSet » 2012-12-20 10:46:11

В общем, дело было в том что всё это дело происходило на РЕЗЕРВНОМ шлюзе.
Соответственно на сервере терминалов 192.168.0.49 шлюзом по умолчанию стоит IP основного шлюза.
Как только поменял на 192.168.0.209 всё стало чудно пробрасывать.

StalkerNOVA
проходил мимо
Сообщения: 2
Зарегистрирован: 2012-12-25 6:02:46

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

Непрочитанное сообщение StalkerNOVA » 2012-12-25 6:11:30

Пока так и не нашёл нормального решения:
Есть 2 канала в и-нет (безлимит основной и помегабайтный резервный). При этом каналы переключаются вручную (автоматика слишком часто ошибалась из-за низкого качества), в случае выпадения основного канала (придумал небольшой костыль на основе первого примера).
Нужно, чтобы сервера, скрытые за NAT, были доступны на обоих внешних интерфейсах. Как это можно реализовать?

StalkerNOVA
проходил мимо
Сообщения: 2
Зарегистрирован: 2012-12-25 6:02:46

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

Непрочитанное сообщение StalkerNOVA » 2012-12-26 8:22:55

Так же не могу разобраться со стыковкой squid в режиме net.inet.ip.fw.one_pass=0

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

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

Непрочитанное сообщение risk94 » 2013-01-15 0:02:14

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

это у всех так или я такой везучий?

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-15 13:13:28

Всем бобра!
Начинающий админ взывает к сообществу за помощью.
Пытаюсь реализовать схему из примера 7 статьи, но с учетом того что локальная сеть разбита на vlan-ы (пусть будет 100 штук, интерфейсы bge1.100 - bge1.200).
DHCP работает на этом же сервере и выдает параметры клиентам в vlan-ах на интерфейсах bge1.xxx (адреса 10.1.xxx.0/24, шлюз 10.1.xxх.1).
Кусок rc.conf (адреса изменены)

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

ifconfig_bge0="inet 11.22.33.44 netmask 255.255.255.240 -rxcsum -tso"
ifconfig_bge0_alias0="inet 11.22.33.45 netmask 255.255.255.255"
ifconfig_bge0_alias1="inet 11.22.33.46 netmask 255.255.255.255"
ifconfig_bge0_alias2="inet 11.22.33.47 netmask 255.255.255.255"
ifconfig_bge0_alias3="inet 11.22.33.48 netmask 255.255.255.255"
ifconfig_bge1="inet 192.168.0.1 netmask 255.255.255.0"
#
cloned_interfaces="bge1.100 ... bge1.200"
ifconfig_bge1_100="inet 10.1.100.1/24"
...
ifconfig_bge1_200="inet 10.1.200.1/24"
Отчасти все хорошо, сейчас vlan-ы имеют доступ в интернет, трафик балансируется, но для этого в правилах ipfw пришлось каждый виртуальный интерфейс прописывать (для включения балансировки на каждый vlan-интерфейс приходится 10 строк правил prob...skipto и skipto...tag, учитывая использование 5 public IP).
Вопрос #0: может я "придумываю велосипед" и подобное реализуется другим способом?
Вопрос #1: можно ли как-то сократить количество правил?
Вопрос #2: все клиенты в vlan{100-200} имеют доступ друг к другу (пингуются хосты этих сетей), а так же к ip-адресу 192.168.0.1 сети vlan0 (default vlan, inet 192.168.0.0/24). Как бы запретить им делать это, оставив возможность обмена трафиком внутри отдельно взятого vlan, а так же некоторым хостам в vlan0? С vlan0 вот что еще непонятно. Например, если запустить ping от 10.1.100.11 до 192.168.0.11 то "Превышен интервал ожидания запроса...", а если сначала сделать ping от 192.168.0.11 до 10.1.100.11, то потом в обратном направлении ping между этими клиентами тоже заработает.
Если подобное обсуждалось - не пинайте сильно, не удалось найти. Прошу помочь кто чем сможет.

P.S. Автору статьи огромнейший респект за проделанную работу, давно прописалась в избранном. Viva la terminus! =)

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-15 20:01:02

С доступом к 192.168.0.11 разобрался - на машине был прописан другой шлюз, наверное на него и уходили ответы. Остальное пробую решать. Anyone?
P.S. По вопросу хождения трафика между vlan: есть мнение что надо переписывать без правила 1070, описывая каждый vlan - кому куда можно или нельзя. Но это еще больше увеличивает количество правил... Даже не знаю. Кто может подсказать?

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 7:16:58

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

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 8:25:37

В приведенном куске есть строка

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

cloned_interfaces="bge1.100 ... bge1.200"
и далее описание этих интерфейсов. Если это не указывает на использование vlan, то вот еще вырезка

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

serv# ifconfig
...
bge1.120: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=103<RXCSUM,TXCSUM,TSO4>
	ether 00:23:7d:9b:4d:95
	inet 10.1.120.1 netmask 0xffffff00 broadcast 10.1.120.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	vlan: 120 parent interface: bge1
...

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 8:44:23

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

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 9:12:01

Вывод сократил, но думаю что все будет понятно

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

serv# ipfw show
00050      53       5143 deny log logamount 256 ip from any to any not antispoof in
00100       0          0 check-state
00100   13890     947526 allow ip from any to any via lo0
00200       0          0 deny log logamount 256 ip from any to 127.0.0.0/8
00300       0          0 deny log logamount 256 ip from 127.0.0.0/8 to any
01051   43845    4085871 prob 0.200000 skipto 1551 ip from any to any in recv bge1
01052  102440   11952231 prob 0.200000 skipto 1552 ip from any to any in recv bge1.100
01053    1399     129246 prob 0.200000 skipto 1553 ip from any to any in recv bge1.101
01054       0          0 prob 0.200000 skipto 1554 ip from any to any in recv bge1.102
...
01151   43703    4064704 prob 0.250000 skipto 1651 ip from any to any in recv bge1
01152  102085   11930331 prob 0.250000 skipto 1652 ip from any to any in recv bge1.100
01153    1333     122528 prob 0.250000 skipto 1653 ip from any to any in recv bge1.101
01154       0          0 prob 0.250000 skipto 1654 ip from any to any in recv bge1.102
...
01251   44032    4102283 prob 0.333000 skipto 1751 ip from any to any in recv bge1
01252  102245   11937945 prob 0.333000 skipto 1752 ip from any to any in recv bge1.100
01253    1417     130580 prob 0.333000 skipto 1753 ip from any to any in recv bge1.101
01254       0          0 prob 0.333000 skipto 1754 ip from any to any in recv bge1.102
...
01351   43540    4042570 prob 0.500000 skipto 1851 ip from any to any in recv bge1
01352  102956   12032820 prob 0.500000 skipto 1852 ip from any to any in recv bge1.100
01353    1346     121800 prob 0.500000 skipto 1853 ip from any to any in recv bge1.101
01354       0          0 prob 0.500000 skipto 1854 ip from any to any in recv bge1.102
...
01451   43548    4053160 prob 0.999000 skipto 1951 ip from any to any in recv bge1
01452  102075   11914370 prob 0.999000 skipto 1952 ip from any to any in recv bge1.100
01453    1372     124771 prob 0.999000 skipto 1953 ip from any to any in recv bge1.101
01454       0          0 prob 0.999000 skipto 1954 ip from any to any in recv bge1.102
...
01551  604685  128789649 skipto 5061 tag 1 ip from any to any via bge1 keep-state
01552 1738002 1212554093 skipto 5061 tag 1 ip from any to any via bge1.100 keep-state
01553    9299    1928687 skipto 5061 tag 1 ip from any to any via bge1.101 keep-state
01554       0          0 skipto 5061 tag 1 ip from any to any via bge1.102 keep-state
...
01651  467440  117654726 skipto 5061 tag 2 ip from any to any via bge1 keep-state
01652  779536  408061213 skipto 5061 tag 2 ip from any to any via bge1.100 keep-state
01653    8326    1671970 skipto 5061 tag 2 ip from any to any via bge1.101 keep-state
01654       0          0 skipto 5061 tag 2 ip from any to any via bge1.102 keep-state
...
01751  473747  124064375 skipto 5061 tag 3 ip from any to any via bge1 keep-state
01752 1168037  805750225 skipto 5061 tag 3 ip from any to any via bge1.100 keep-state
01753    8592    1537644 skipto 5061 tag 3 ip from any to any via bge1.101 keep-state
01754       0          0 skipto 5061 tag 3 ip from any to any via bge1.102 keep-state
...
01851  835869  140502680 skipto 5061 tag 4 ip from any to any via bge1 keep-state
01852  889129  482564770 skipto 5061 tag 4 ip from any to any via bge1.100 keep-state
01853    8314    1726200 skipto 5061 tag 4 ip from any to any via bge1.101 keep-state
01854       0          0 skipto 5061 tag 4 ip from any to any via bge1.102 keep-state
...
01951  621753  126738919 skipto 5061 tag 5 ip from any to any via bge1 keep-state
01952  836801  511185780 skipto 5061 tag 5 ip from any to any via bge1.100 keep-state
01953    8988    2024945 skipto 5061 tag 5 ip from any to any via bge1.101 keep-state
01954       0          0 skipto 5061 tag 5 ip from any to any via bge1.102 keep-state
...
05061 2499327  580723202 allow ip from any to any via bge1
09080       0          0 deny log logamount 256 ip from any to 192.168.0.0/16 in recv bge0
09090      49       6100 deny log logamount 256 ip from 192.168.0.0/16 to any in recv bge0
09100       0          0 deny log logamount 256 ip from any to 172.16.0.0/12 in recv bge0
09110     238      16388 deny log logamount 256 ip from 172.16.0.0/12 to any in recv bge0
09120       0          0 deny log logamount 256 ip from any to 10.0.0.0/8 in recv bge0
09130     325      39490 deny log logamount 256 ip from 10.0.0.0/8 to any in recv bge0
09140       0          0 deny log logamount 256 ip from any to 169.254.0.0/16 in recv bge0
09150       0          0 deny log logamount 256 ip from 169.254.0.0/16 to any in recv bge0
09160       0          0 deny log logamount 256 icmp from any to 255.255.255.255 in recv bge0
09170       0          0 deny log logamount 256 icmp from any to 255.255.255.255 out xmit bge0
10000 1379223  986960731 queue 1 ip from any to any out xmit bge0
10199    1588     173744 skipto 10601 tag 1 ip from me to any out xmit bge0
10201  355427  198619805 nat 2 ip from any to any out xmit bge0 tagged 2
10202  408258  127920244 nat 2 ip from any to 11.22.33.45 in recv bge0
10301  500819  396213001 nat 3 ip from any to any out xmit bge0 tagged 3
10302  507362  136466018 nat 3 ip from any to 11.22.33.46 in recv bge0
10401  518968  242445668 nat 4 ip from any to any out xmit bge0 tagged 4
10402  566391  138434091 nat 4 ip from any to 11.22.33.47 in recv bge0
10501  429041  253605037 nat 5 ip from any to any out xmit bge0 tagged 5
10502  469474  130324280 nat 5 ip from any to 11.22.33.48 in recv bge0
10601  764852  594201519 nat 1 ip from any to any out xmit bge0 tagged 1
10602  643792  145789275 nat 1 ip from any to 11.22.33.44 in recv bge0
20000 1208171  496334178 queue 2 ip from any to any in recv bge0
20620 7859021 4091368252 allow ip from any to any
65534       0          0 deny log logamount 256 ip from any to any
65535       1         48 deny ip from any to any

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 10:04:19

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

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 10:07:25

в статье делаются

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

add 1011 prob 0.2 skipto 1061 ip from any to any in recv fxp0
add 1012 prob 0.25 skipto 1063 ip from any to any in recv fxp0
add 1013 prob 0.333 skipto 1065 ip from any to any in recv fxp0
add 1014 prob 0.5 skipto 1067 ip from any to any in recv fxp0
add 1015 prob 1 skipto 1069 ip from any to any in recv fxp0
чтобы примерно равномерно разделить трафик на 5 частей, потому что предполагается 5 внешних адресов. вам это тоже требуется?

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

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 10:12:43

vadim64 писал(а):жесть
очень тяжело читается
Не без этого, потому и спрашивал про возможность сокращения кол-ва правил. :( (А интерфейсы нельзя указывать в table?)
vadim64 писал(а):чтобы примерно равномерно разделить трафик на 5 частей, потому что предполагается 5 внешних адресов. вам это тоже требуется?
Вы абсолютно правы, задача как и в статье, но сеть поделена на vlan.

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 10:33:18

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

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 11:17:48

а если так сразу?

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

add 10201 prob 0.25 nat 2 ip from any to any out xmit bge0
add 10202 nat 2 ip from any to 11.22.33.45 in recv bge0
add 10301 prob 0.333 nat 3 ip from any to any out xmit bge0
add 10302 nat 3 ip from any to 11.22.33.46 in recv bge0
add 10401 prob 0.5 nat 4 ip from any to any out xmit bge0
add 10402 nat 4 ip from any to 11.22.33.47 in recv bge0
add 10501 prob 1 nat 5 ip from any to any out xmit bge0
add 10502 nat 5 ip from any to 11.22.33.48 in recv bge0
add 10601 prob 0.2 nat 1 ip from any to any out xmit bge0
add 10602 nat 1 ip from any to 11.22.33.44 in recv bge0
соответственно все таги и скипы наxyй
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 12:54:36

Потери при ping g.co с клиентской машины составляют порядка 85%, сайты не открываются. Правила ipfw

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

serv# cat /etc/rc.ipfw
#!/bin/sh
fw="/sbin/ipfw "

if_out0="bge0"
ip_out0="11.22.33.44"
ip_out0_0="11.22.33.45"
ip_out0_1="11.22.33.46"
ip_out0_2="11.22.33.47"
ip_out0_3="11.22.33.48"

if_in0="bge1"

#
$fw -f flush

$fw add check-state
$fw add 50 deny log ip from any to any not antispoof in

$fw add 100 allow ip from any to any via lo0
$fw add 200 deny log ip from any to 127.0.0.0/8
$fw add 300 deny log ip from 127.0.0.0/8 to any

$fw add 5061 allow all from any to any via $if_in0

$fw add 9080 deny log ip from any to 192.168.0.0/16 in recv $if_out0
$fw add 9090 deny log ip from 192.168.0.0/16 to any in recv $if_out0
$fw add 9100 deny log ip from any to 172.16.0.0/12 in recv $if_out0
$fw add 9110 deny log ip from 172.16.0.0/12 to any in recv $if_out0
$fw add 9120 deny log ip from any to 10.0.0.0/8 in recv $if_out0
$fw add 9130 deny log ip from 10.0.0.0/8 to any in recv $if_out0
$fw add 9140 deny log ip from any to 169.254.0.0/16 in recv $if_out0
$fw add 9150 deny log ip from 169.254.0.0/16 to any in recv $if_out0
$fw add 9160 deny log icmp from any to 255.255.255.255 in recv $if_out0
$fw add 9170 deny log icmp from any to 255.255.255.255 out xmit $if_out0

$fw nat 1 config log ip $ip_out0 same_ports reset deny_in
$fw nat 2 config log ip $ip_out0_0 same_ports reset deny_in
$fw nat 3 config log ip $ip_out0_1 same_ports reset deny_in
$fw nat 4 config log ip $ip_out0_2 same_ports reset deny_in
$fw nat 5 config log ip $ip_out0_3 same_ports reset deny_in

$fw add 10201 prob 0.25 nat 2 ip from any to any out xmit $if_out0
$fw add 10202 nat 2 ip from any to $ip_out0_0 in recv $if_out0
$fw add 10301 prob 0.333 nat 3 ip from any to any out xmit $if_out0
$fw add 10302 nat 3 ip from any to $ip_out0_1 in recv $if_out0
$fw add 10401 prob 0.5 nat 4 ip from any to any out xmit $if_out0
$fw add 10402 nat 4 ip from any to $ip_out0_2 in recv $if_out0
$fw add 10501 prob 1 nat 5 ip from any to any out xmit $if_out0
$fw add 10502 nat 5 ip from any to $ip_out0_3 in recv $if_out0
$fw add 10601 prob 0.2 nat 1 ip from any to any out xmit $if_out0
$fw add 10602 nat 1 ip from any to $ip_out0 in recv $if_out0
$fw add 20620 allow all from any to any
$fw add 65534 deny log all from any to any

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

serv# ipfw show
00050     0       0 deny log logamount 256 ip from any to any not antispoof in
00100     0       0 check-state
00100   164    9840 allow ip from any to any via lo0
00200     0       0 deny log logamount 256 ip from any to 127.0.0.0/8
00300     0       0 deny log logamount 256 ip from 127.0.0.0/8 to any
05061 30933 3065358 allow ip from any to any via bge1
09080     0       0 deny log logamount 256 ip from any to 192.168.0.0/16 in recv bge0
09090     0       0 deny log logamount 256 ip from 192.168.0.0/16 to any in recv bge0
09100     0       0 deny log logamount 256 ip from any to 172.16.0.0/12 in recv bge0
09110     0       0 deny log logamount 256 ip from 172.16.0.0/12 to any in recv bge0
09120     0       0 deny log logamount 256 ip from any to 10.0.0.0/8 in recv bge0
09130     1     129 deny log logamount 256 ip from 10.0.0.0/8 to any in recv bge0
09140     0       0 deny log logamount 256 ip from any to 169.254.0.0/16 in recv bge0
09150     0       0 deny log logamount 256 ip from 169.254.0.0/16 to any in recv bge0
09160     0       0 deny log logamount 256 icmp from any to 255.255.255.255 in recv bge0
09170     0       0 deny log logamount 256 icmp from any to 255.255.255.255 out xmit bge0
10201  2864  363970 prob 0.250000 nat 2 ip from any to any out xmit bge0
10202   264   29763 nat 2 ip from any to 11.22.33.45 in recv bge0
10301  3760  491632 prob 0.333000 nat 3 ip from any to any out xmit bge0
10302   936  115279 nat 3 ip from any to 11.22.33.46 in recv bge0
10401  5653  727251 prob 0.500000 nat 4 ip from any to any out xmit bge0
10402   494   59932 nat 4 ip from any to 11.22.33.47 in recv bge0
10501 11364 1471230 nat 5 ip from any to any out xmit bge0
10502 15072 2188528 nat 5 ip from any to 11.22.33.48 in recv bge0
10601  2275  288267 prob 0.200000 nat 1 ip from any to any out xmit bge0
10602  4288  350264 nat 1 ip from any to 11.22.33.44 in recv bge0
20620 43343 5970361 allow ip from any to any
65534     0       0 deny log logamount 256 ip from any to any
65535     1      48 deny ip from any to any
Довольно интересно, получается что ~15% пакетов все-же проходят...

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 13:12:42

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

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 13:17:22

интересно, теряются исходящие или входящие?
попробуйте так

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

$fw add 10201 prob 0.2 nat 1 ip from any to any out xmit $if_out0
$fw add 10202 prob 0.25 nat 2 ip from any to any out xmit $if_out0
$fw add 10203 prob 0.333 nat 3 ip from any to any out xmit $if_out0
$fw add 10204 prob 0.5 nat 4 ip from any to any out xmit $if_out0
$fw add 10205 prob 1 nat 5 ip from any to any out xmit $if_out0

$fw add 10301 nat 1 ip from any to $ip_out0 in recv $if_out0
$fw add 10302 nat 2 ip from any to $ip_out0_0 in recv $if_out0
$fw add 10303 nat 3 ip from any to $ip_out0_1 in recv $if_out0
$fw add 10304 nat 4 ip from any to $ip_out0_2 in recv $if_out0
$fw add 10305 nat 5 ip from any to $ip_out0_3 in recv $if_out0
и потом наоборот
обращайте внимание на номера правил
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 14:55:52

vadim64 писал(а):попробуйте так
Такая-же ситуация, примерно 80% потерь
и потом наоборот
Извините за настойчивость, но "наоборот" - это как? Делать prob на пакетах в правилах in recv $if_out0 ?

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 15:16:56

что за ерунда...

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

sysctl -a net.inet.ip.fw.one_pass
покажьте
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 15:22:10

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

serv# sysctl -a net.inet.ip.fw.one_pass
net.inet.ip.fw.one_pass: 0
конфигурация фаервола получается такой (переменные опущу):

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

$fw -f flush

$fw add 50 deny log ip from any to any not antispoof in

$fw add 100 allow ip from any to any via lo0
$fw add 200 deny log ip from any to 127.0.0.0/8
$fw add 300 deny log ip from 127.0.0.0/8 to any

$fw add 5061 allow all from any to any via $if_in0

$fw add 9080 deny log ip from any to 192.168.0.0/16 in recv $if_out0
$fw add 9090 deny log ip from 192.168.0.0/16 to any in recv $if_out0
$fw add 9100 deny log ip from any to 172.16.0.0/12 in recv $if_out0
$fw add 9110 deny log ip from 172.16.0.0/12 to any in recv $if_out0
$fw add 9120 deny log ip from any to 10.0.0.0/8 in recv $if_out0
$fw add 9130 deny log ip from 10.0.0.0/8 to any in recv $if_out0
$fw add 9140 deny log ip from any to 169.254.0.0/16 in recv $if_out0
$fw add 9150 deny log ip from 169.254.0.0/16 to any in recv $if_out0
$fw add 9160 deny log icmp from any to 255.255.255.255 in recv $if_out0
$fw add 9170 deny log icmp from any to 255.255.255.255 out xmit $if_out0

$fw nat 1 config log ip $ip_out0 same_ports reset deny_in
$fw nat 2 config log ip $ip_out0_0 same_ports reset deny_in
$fw nat 3 config log ip $ip_out0_1 same_ports reset deny_in
$fw nat 4 config log ip $ip_out0_2 same_ports reset deny_in
$fw nat 5 config log ip $ip_out0_3 same_ports reset deny_in

$fw add 10201 prob 0.2 nat 1 ip from any to any out xmit $if_out0
$fw add 10202 prob 0.25 nat 2 ip from any to any out xmit $if_out0
$fw add 10203 prob 0.333 nat 3 ip from any to any out xmit $if_out0
$fw add 10204 prob 0.5 nat 4 ip from any to any out xmit $if_out0
$fw add 10205 prob 1 nat 5 ip from any to any out xmit $if_out0

$fw add 10301 nat 1 ip from any to $ip_out0 in recv $if_out0
$fw add 10302 nat 2 ip from any to $ip_out0_0 in recv $if_out0
$fw add 10303 nat 3 ip from any to $ip_out0_1 in recv $if_out0
$fw add 10304 nat 4 ip from any to $ip_out0_2 in recv $if_out0
$fw add 10305 nat 5 ip from any to $ip_out0_3 in recv $if_out0

$fw add 20620 allow all from any to any

$fw add 65534 deny log all from any to any

Аватара пользователя
Alvares
прапорщик
Сообщения: 470
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

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

Непрочитанное сообщение Alvares » 2013-02-18 15:36:59

80% - 4 ната из 5 в никуда. Видимо, работает, какой-то один :). С одним каналом и одним НАТом проблемы те же? Что-то в листинг вкурить тяжело...

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

$fw add 10601 prob 0.2 nat 1 ip from

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

$ip_out 
[/b]

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

to any out xmit $if_out0
$fw add 10602 nat 1 ip from any to $ip_out0 in recv $if_out0
если заНАТить вот так? и поработать с этим IP?
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...