The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Ipfw kernel nat не пробрасывает порт"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от RESET (ok) on 13-Дек-12, 15:22 
Привет!
Есть следующая проблемка - ядерный нат не пробрасывает порт. Всё по этому мануалу:
http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/
Вот конфиги:

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. 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
$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 - чудесно пробрасывает...
Вопрос из разряда ЧЯДНТ. Ткните плз, где ошибка? Уже мозг плывёт.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от sirius (??) on 13-Дек-12, 16:31 
>[оверквотинг удален]
> $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
> $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
> - чудесно пробрасывает...
> Вопрос из разряда ЧЯДНТ. Ткните плз, где ошибка? Уже мозг плывёт.

С какого ip подключаетесь к 192.168.0.249:3389?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от RESET (ok) on 13-Дек-12, 16:33 
> С какого ip подключаетесь к 192.168.0.249:3389?

Со 192.168.0.153. Разрешающее правило есть.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от sirius (??) on 13-Дек-12, 16:34 
>[оверквотинг удален]
> $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
> $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
> - чудесно пробрасывает...
> Вопрос из разряда ЧЯДНТ. Ткните плз, где ошибка? Уже мозг плывёт.

вобщем помимо конфига ната его еще нужно добавить в ipfw, ipfw add nat 1 ip from any to any via em0

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от RESET (ok) on 13-Дек-12, 16:51 
> вобщем помимо конфига ната его еще нужно добавить в ipfw, ipfw add
> nat 1 ip from any to any via em0

Добавлял. Эффект нулевой.
testfree# ipfw list
00100 allow ip from any to any via em1
00200 allow ip from me to 192.168.0.153 via em0
00300 allow ip from 192.168.0.153 to me
00400 allow ip from 192.168.10.154 to me
00500 allow ip from me to 192.168.10.154
00600 nat 1 ip from any to any via em0
00700 deny ip from any to any

testfree# ipfw nat show
nat 1: icmp=1, udp=28, tcp=8, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=37

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от sirius (??) on 13-Дек-12, 17:53 
>[оверквотинг удален]
> testfree# ipfw list
> 00100 allow ip from any to any via em1
> 00200 allow ip from me to 192.168.0.153 via em0
> 00300 allow ip from 192.168.0.153 to me
> 00400 allow ip from 192.168.10.154 to me
> 00500 allow ip from me to 192.168.10.154
> 00600 nat 1 ip from any to any via em0
> 00700 deny ip from any to any
> testfree# ipfw nat show
> nat 1: icmp=1, udp=28, tcp=8, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=37

если вобщем то проще будет сделать
ipfw nat 1 config ip 192.168.10.249 redirect_port tcp 192.168.10.154:3389 192.168.0.249:3389
ipfw add nat 1 ip from any to any
ipfw add deny ip from any to any
оно заработает и отсюда дальше набрасывать правила, от простого к сложному, если нужно только, чтоб 192.168.0.153 ходил на 192.168.10.154 rdp, то правила примут вид

ipfw nat 1 config ip 192.168.10.249 redirect_port tcp 192.168.10.154:3389 192.168.0.249:3389

ipfw add nat 1 tcp from 192.168.0.153 to 192.168.0.249 in recv em0
ipfw add nat 1 tcp from 192.168.10.154 to 192.168.0.153 out xmit em0
ipfw add nat 1 tcp from 192.168.10.154 to 192.168.10.249 in recv em1
ipfw add nat 1 tcp from 192.168.0.153 to 192.168.10.154 out xmit em1
ipfw add deny ip from any to any

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от RESET (ok) on 13-Дек-12, 18:13 
> если вобщем то проще будет сделать
> ipfw nat 1 config ip 192.168.10.249 redirect_port tcp 192.168.10.154:3389 192.168.0.249:3389

C таким правилом нат вообще вырубается, машину 192.168.10.154 никуда не пускает.
> ipfw add nat 1 ip from any to any

тут бы добавить via em0 - без этого не работает
> ipfw add deny ip from any to any
> оно заработает и отсюда дальше набрасывать правила, от простого к сложному, если
> нужно только, чтоб 192.168.0.153 ходил на 192.168.10.154 rdp, то правила примут
> вид
> ipfw nat 1 config ip 192.168.10.249 redirect_port tcp 192.168.10.154:3389 192.168.0.249:3389

Не работает при таком раскладе ни нат ни проброс...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от AdVv (ok) on 20-Дек-12, 09:22 
>[оверквотинг удален]
> testfree# ipfw list
> 00100 allow ip from any to any via em1
> 00200 allow ip from me to 192.168.0.153 via em0
> 00300 allow ip from 192.168.0.153 to me
> 00400 allow ip from 192.168.10.154 to me
> 00500 allow ip from me to 192.168.10.154
> 00600 nat 1 ip from any to any via em0
> 00700 deny ip from any to any
> testfree# ipfw nat show
> nat 1: icmp=1, udp=28, tcp=8, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=37

Выдержка из man ipfw:
   allow | accept | pass | permit
             Allow packets that match rule.  The search terminates.

Вас ничего не смущает ?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от user (??) on 13-Дек-12, 20:10 
>[оверквотинг удален]
> 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 -d show не видно по кол-ву байт? Сначала направляете трафик в нат, а потом разрешающие.
Обратите внимание на deny_in, которые добавляет нюансы в прохождение правил с НАТом.

> ipfw nat 1 config log if em0 reset same_ports deny_in redirect_port tcp
> 192.168.10.154:3389 3389
> $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
> - чудесно пробрасывает...
> Вопрос из разряда ЧЯДНТ. Ткните плз, где ошибка? Уже мозг плывёт.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от RESET (ok) on 14-Дек-12, 13:12 
Спасибо огромное!
На тестовой конфигурации всё заработало.. Но..
Делаю похожие правила на резервном шлюзе, привожу фаерволл до следующего вида:
#!/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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Ipfw kernel nat не пробрасывает порт"  +/
Сообщение от AdVv (ok) on 20-Дек-12, 09:33 
>[оверквотинг удален]
>
 
> 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

$cmd allow all from any to any via nfe0 уберите
Пакеты из локальной сети попадают на allow и не попадают на nat
allow  должны быть ПОСЛЕ NAT
http://nuclight.livejournal.com/124348.html

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру