Страница 1 из 1

ipfw+nat - помогите составить правило

Добавлено: 2013-05-22 13:44:06
Sabrewulf
Суть в чём. Есть локальная сеть 10.0.0.0/8 на одном сетевом интерфейсе (em1), есть инет интерфейс с адресом 1.2.3.4 (em0). Инет натится во внутреннюю сеть правилом:

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

add nat 1 ip from any to any via em0 
Также работает проброс портов типа:

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

nat 1 config log if em0 reset same_ports redirect_port tcp 10.0.0.25:25 25 redirect_port tcp 10.0.0.110:110 110 
Необходимо чтобы пользователи из локальной сети обратившись по 1.2.3.4:25 попадали по действие правила проброса портов, т.е. на 10.0.0.25:25 (или 10.0.0.110:110 при обращении на 1.2.3.4:110)

Как?

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-28 11:36:26
mak_v_
"Из локальной сети ---> обратно" - никак. Вариант решения проблемы: views на ДНС.

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 6:44:23
vadim64
ТС, дайте более полный список правил

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 9:09:33
mak_v_
vadim64, ну уже же разбирали не один десяток раз:
Вот из свежего
http://forum.lissyara.su/viewtopic.php? ... 82#p346067

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 10:24:08
Sabrewulf
vadim64 писал(а):ТС, дайте более полный список правил

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

ipfw="ipfw -q"
int_if="em0"
int_lan="10.0.0.0/8"
ext_if="em1"
ext_ip="1.2.3.4"

$ipfw flush

$ipfw nat 1 config log if $ext_if reset same_ports deny_in unreg_only \
    redirect_port tcp ... список пробрасываемых портов (13 шт)

# loopback
$ipfw add 10 pass ip from any to any via lo0
$ipfw add 20 deny ip from any to 127.0.0.0/8
$ipfw add 30 deny ip from 127.0.0.0/8 to any

# режем локальные адреса на внешнем интерфейсе
$ipfw add 40 deny ip from any to 192.168.0.0/16 in recv $ext_if
$ipfw add 45 deny ip from 192.168.0.0/16 to any in recv $ext_if
$ipfw add 50 deny ip from any to 172.16.0.0/12 in recv $ext_if
$ipfw add 55 deny ip from 172.16.0.0/12 to any in recv $ext_if
$ipfw add 60 deny ip from any to 10.0.0.0/8 in recv $ext_if
$ipfw add 65 deny ip from 10.0.0.0/8 to any in recv $ext_if
$ipfw add 70 deny ip from any to 169.254.0.0/16 in recv $ext_if
$ipfw add 75 deny ip from 169.254.0.0/16 to any in recv $ext_if

# разрешаем все через интерфейс локальной сети
$ipfw add 100 pass ip from any to any via $int_if

# разрешаем ICMP и веб для всех
$ipfw add 1000 nat 1 icmp from $int_lan to any via $ext_if icmptypes 0,3,8,11,12,13,14
$ipfw add 1100 nat 1 tcp from $int_lan to any 80,443 via $ext_if

# разрешаем всё VIP-ам и серверам
$ipfw add 1200 nat 1 ip from table\(1\) to any via $ext_if

# разрешаем бухгалтерии клиет-банки и прочий бухгалтерский софт
$ipfw add 1300 nat 1 tcp from table\(2\) to any 465,... via $ext_if
# ...

# остальное запрещаем
$ipfw add 1999 deny ip from $int_lan to any via $ext_if

# разрешаем ответы для правил выше
$ipfw add 2000 nat 1 ip from any to any via $ext_if

#default 65535  deny ip from any to any

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 10:44:49
vadim64
mak_v_ писал(а):vadim64, ну уже же разбирали не один десяток раз:
Вот из свежего
http://forum.lissyara.su/viewtopic.php? ... 82#p346067
очень ценное сообщение
я правильно понял, что это, по-вашему, решается через ssh-проброс?

Sabrewulf, попробуйте добавить

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

$ipfw add 1110 nat 1 tcp from $int_lan to me 25 via $ext_if
[/quote]

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 10:55:51
mak_v_
vadim64, буду краток....
Какой нахер проброс? Уже [классический секс] отвечать на эти однотипные вопросы:
Вот точно такой топик http://forum.lissyara.su/viewtopic.php?f=53&t=38574
Вот рассос темы (конкретная ситуация с примером!) http://forum.lissyara.su/viewtopic.php? ... 74#p341230
Так что с ссш и с мудрым пиздежом - попробуйте воспроизвести

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 11:41:24
vadim64
mak_v_ писал(а):vadim64, ну уже же разбирали не один десяток раз:
Вот из свежего
http://forum.lissyara.su/viewtopic.php? ... 82#p346067
вот в этом топике Вы предлагали взглянуть на тему по ссылке для поиска решений
в этой теме описано два решения:
rinetd
ssh TcpForwarding
в теме где Вы что то "обсосали" не содержится решения

по текущей теме:
человек спрашивает варианты решений, я предлагаю один из вариантов, который можно попробовать
не заработает - предложим другое
и так пока не найдётся решение
не понимаю Вашего батхёрта. если Вы обладаете инфой о стопроцентном решении на базе IPFW - приведите правило/правила, которые ТСу необходимо добавить в свой набор правил
вот и все, делов-то 8)

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 11:50:50
mak_v_
решение ИЗЯЩНОЕ - views на DNS и обращение по DNS-имени
ПРАВИЛЬНОГО, красивого решения на ipfw, rinetd и прочей ХЭ - НЕТ - Сетевой уровень в терминологии ОSI.
Можно конечно сделать двойной нат через lo с маршрутизацией всего через него - будет работать.
Наливать?

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 11:52:14
mak_v_
Ещё раз, дабы советов по ipfw не давали - тут обсосал http://forum.lissyara.su/viewtopic.php? ... 74#p341230

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:21:11
vadim64
*ушёл поднимать пачку виртуалок

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:31:46
Sabrewulf
vadim64 писал(а): Sabrewulf, попробуйте добавить

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

$ipfw add 1110 nat 1 tcp from $int_lan to me 25 via $ext_if
Это правило срабатывать не будет, т.к. не выполняется условие via $ext_if.

Если убрать это условие, то пакеты доходят до нужного сервера, но ничего не работает. Для примера, комп с которого я пытаюсь зайти на страничку компании 10.0.1.100. Адрес странички https://1.2.3.4:443/, которая должна по правилам проброса портов преобразовываться в 10.0.0.143. Если добавить правило:

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

ipfw add 90 nat 1 tcp from $int_lan to me 443
То на 10.0.0.143 получим:

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

#tcpdump -i em0 'tcp port 443' | grep 10.0.1.100
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:14:15.472536 IP 10.0.1.100.57173 > 10.0.0.143.https: Flags [S], seq 3733476007, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:15.472562 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:15.472726 IP 10.0.1.100.57174 > 10.0.0.143.https: Flags [S], seq 1031767560, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:15.472737 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:18.467745 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:18.467751 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:18.476979 IP 10.0.1.100.57173 > 10.0.0.143.https: Flags [S], seq 3733476007, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:18.476996 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:18.477001 IP 10.0.1.100.57174 > 10.0.0.143.https: Flags [S], seq 1031767560, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:18.477008 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:21.467791 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:21.467797 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:24.477096 IP 10.0.1.100.57173 > 10.0.0.143.https: Flags [S], seq 3733476007, win 8192, options [mss 1460,nop,nop,sackOK], length 0
12:14:24.477118 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:24.477121 IP 10.0.1.100.57174 > 10.0.0.143.https: Flags [S], seq 1031767560, win 8192, options [mss 1460,nop,nop,sackOK], length 0
12:14:24.477125 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:27.467741 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:27.467746 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:33.467761 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:33.467767 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:36.472849 IP 10.0.1.100.57180 > 10.0.0.143.https: Flags [S], seq 1120379206, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:36.472875 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:36.472900 IP 10.0.1.100.57181 > 10.0.0.143.https: Flags [S], seq 627968612, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:36.472907 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:39.467760 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:39.467770 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:39.474957 IP 10.0.1.100.57180 > 10.0.0.143.https: Flags [S], seq 1120379206, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:39.474972 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:39.474976 IP 10.0.1.100.57181 > 10.0.0.143.https: Flags [S], seq 627968612, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:39.474981 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:42.467750 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:42.467756 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:42.962598 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [S], seq 4065520194, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:14:42.962621 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [S.], seq 1609760230, ack 4065520195, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:42.963652 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [.], ack 1, win 16425, length 0
12:14:42.964112 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [P.], seq 1:187, ack 1, win 16425, length 186
12:14:42.964465 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [P.], seq 1:146, ack 187, win 1026, length 145
12:14:42.966083 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [P.], seq 187:1360, ack 146, win 16388, length 1173
12:14:42.991443 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [P.], seq 146:950, ack 1360, win 1026, length 804
12:14:43.190067 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [.], ack 950, win 16187, length 0
12:14:45.467765 IP 10.0.0.143.https > 10.0.1.100.57174: Flags [S.], seq 127519211, ack 1031767561, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:45.467770 IP 10.0.0.143.https > 10.0.1.100.57173: Flags [S.], seq 2021188711, ack 3733476008, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:45.470074 IP 10.0.1.100.57180 > 10.0.0.143.https: Flags [S], seq 1120379206, win 8192, options [mss 1460,nop,nop,sackOK], length 0
12:14:45.470087 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:45.470090 IP 10.0.1.100.57181 > 10.0.0.143.https: Flags [S], seq 627968612, win 8192, options [mss 1460,nop,nop,sackOK], length 0
12:14:45.470094 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:47.997850 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [P.], seq 950:987, ack 1360, win 1026, length 37
12:14:47.997881 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [F.], seq 987, ack 1360, win 1026, length 0
12:14:47.998377 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [.], ack 988, win 16178, length 0
12:14:47.998571 IP 10.0.1.100.57185 > 10.0.0.143.https: Flags [F.], seq 1360, ack 988, win 16178, length 0
12:14:47.998601 IP 10.0.0.143.https > 10.0.1.100.57185: Flags [.], ack 1361, win 1026, length 0
12:14:48.467774 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:48.467783 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:54.467771 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:14:54.467781 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:15:06.467776 IP 10.0.0.143.https > 10.0.1.100.57180: Flags [S.], seq 3304254948, ack 1120379207, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
12:15:06.467781 IP 10.0.0.143.https > 10.0.1.100.57181: Flags [S.], seq 3027749728, ack 627968613, win 65535, options [mss 1460,nop,wscale 6,sackOK,eol], length 0
Т.е. компы даже пытаються общаться, но в браузере ничего не открывается.

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:38:30
vadim64
Sabrewulf, а если так

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

$ipfw add 1110 nat 1 tcp from $int_lan to me 25 via $int_if

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:41:13
Sabrewulf
Так ситуация не меняется

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:46:07
vadim64
ну тогда ждём виртуалки

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 12:51:29
mak_v_
ждем ценное подверждение справедливого батхерта.
Запросы идут на дст 1.2.3.4, а ответы приходят с срц 10.0.1.100, почему не от деда Матвея?

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 14:47:51
hizel
Включить nat на внутреннем интерфейсе и все заработает. Типа(em0 внешний, em1 внутренний):

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

nat 1 config log if em0 redirect_port tcp 192.168.3.2:22 2222
add 1000 nat 1 ip from any to any via em0
add 1001 nat 1 ip from any to any via em1
Засолить по вкусу.

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-05-29 15:10:01
mak_v_
hizel писал(а):Включить nat на внутреннем интерфейсе и все заработает. Типа(em0 внешний, em1 внутренний):

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

nat 1 config log if em0 redirect_port tcp 192.168.3.2:22 2222
add 1000 nat 1 ip from any to any via em0
add 1001 nat 1 ip from any to any via em1
Засолить по вкусу.
Ждем эпических коментариев!

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-06-08 12:56:53
mikie
пользуюсь pf-ом, может такой вариант сработает...

nat on $int_if from $ext_if to $int_net -> $ext_if

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-07-04 10:18:58
mak_v_
vadim64, прошел месяц.
Где там виртуалка и результаты, дядя?

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-07-04 10:52:48
vadim64
бля...
я забил
ты - крут, фря - отсос, ipfw - шавно

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-07-04 11:07:58
mak_v_
Жесть...а пена чего шла?
А фря тут при чем? а ipfw &

Re: ipfw+nat - помогите составить правило

Добавлено: 2013-11-21 9:56:27
slb51
Насколько я понял, человек хочет, чтобы помогли написать правило для ipfw+nat на тот случай, когда надо из интернета запустить программу "АБВГД", установленную на компьютере "MyComp", и использующую для подключения порт, например, 80. У меня, конкретно, вопрос такой же. Надо набрать на iPad "http://88.86.77.71/cm/edportal.nfs/start?readform" и получить доступ к означенному ресурсу на сервере "MyComp", адрес которого в локальной сети 10.10.10.195, порт 80 (предположительно). 88.86.77.71 - это FreeBSD с IPFW+NAT. Если это так сложно, то может лучше и не надо?