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

ipfw - проброс порта

Добавлено: 2009-03-27 22:03:02
igin
Добрый день!
Я с FreeBSD работаю недавно. Помогите решить проблему.
Надо пробросить порт через роутер FreeBSD для доступа снаружи на локальный Web-сервер IIS.
Прежде чем задать вопрос, я на этом сайте пытался найти ответ и в форуме и среди статей
http://www.lissyara.su/?id=1356
http://www.lissyara.su/?id=1159
http://forum.lissyara.su/viewtopic.php?t=5466
но с проблемой, тем не менее, не справился.
Конфигурация сети такая:
Шлюз FreBSD 7.1 – первая сетевая карта (fxp0: 93.73.142.132) смтотрит наружу в Инет и получает адрес динамически от провайдера, вторая (rl0: 192.168.0.1) смотрит в локалку. FreeBSD,также настроен как DHCP-сервер и раздает адреса клиентам в локальную сеть, диапазон адресов - 192.168.0.0/24. DHCP-сервер настроен на привязку к MAC-адресам клиентов, поэтому все клиенты всегда получают одни и те адреса.
Среди этих клиентов и находится Web-сервер IIS с ip-адресом: 192.168.0.11 на котором на порту 35433 крутится сайт.
Надо чтобы при запросе: http://93.73.142.132:35433 запрос перебрасывался redirect(ом) на Web-сервер в локальной сети 192.168.0.11:35433.

Я сделал следующее:
1. Nat поднят – клиенты из сети 192.168.0.0/24 успешно ходят в Инет. Трафик – свободно в обе стороны.
2. Ядро с option IPDIVERT я не пересобирал, так как в /boot/kernel присутствует ipdivert.ko, то есть передача пакета в natd уже реализована на уровне ядра, как я понял. Поэтому я ограничился firewall_enable=”YES” и firewall_type=”/usr/local/etc/firewall.conf” в rc.conf.

Вот мои конфигурационные файлы:

rc.conf:

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

firewall_enable="YES"
firewall_type="/usr/local/etc/firewall.conf"
natd_enable="YES"
natd_flags="-dynamic -f /usr/local/etc/natd.conf"
natd_interface="fxp0"
gateway_enable="YES"
natd.conf (весь файл):

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

interface fxp0
same_ports
unregistered_only
redirect_port tcp 192.168.0.11:35433 35433
firewall.conf (весь файл):

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

add divert natd all from any to any via fxp0
add allow all from any to any
add allow tcp from any to 192.168.0.11 35433 via fxp0
вот вывод команды ipfw list:

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

FreeBSD# ipfw list
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 deny ip from 192.168.0.11 to any out
00500 divert 8668 ip from any to any via fxp0
00600 allow ip from any to any
00700 allow tcp from any to 192.168.0.11 dst-port 35433 via fxp0
65535 deny ip from any to any
В общем, я старался следовать примерам из статей и на форуме, но проброс порта не работает.
Подскажите плииз, в чем я ошибаюсь..?

Re: ipfw - проброс порта

Добавлено: 2009-03-27 22:10:50
hizel

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

deny ip from 192.168.0.11 to any out
зачем все закрыли? :)

Re: ipfw - проброс порта

Добавлено: 2009-03-27 23:18:03
igin
Поправил...
Сейчас в firewall.conf имею:

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

add divert natd all from any to 192.168.0.11 35433 in via fxp0
add divert natd all from any to any via fxp0
add allow all from any to any
в natd.conf:

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

interface fxp0
same_ports
unregistered_only
redirect_port tcp 192.168.0.11:35433 35433

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

FreeBSD# ipfw list
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 divert 8668 ip from any to 192.168.0.11 dst-port 35433 in via fxp0
00500 divert 8668 ip from any to any via fxp0
00600 allow ip from any to any
65535 deny ip from any to any
Но эффекта никакого... я готов искать информацию и разбираться в проблеме, но подскажите - в какую сторону "копать"? Что может быть не так в приведенных выше настройках..?

Re: ipfw - проброс порта

Добавлено: 2009-03-28 0:35:02
hizel
достаточно этих правил :)

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

divert 8668 ip from any to any via fxp0
add allow all from any to any
дальше смотреть tcpdump-ом идут ли пакетики ;)

Re: ipfw - проброс порта

Добавлено: 2009-03-28 8:50:57
reLax
А разве в 7.1 не KERNEL NAT (там несколько различается синтаксис) ? (давно не имел дело с ipfw) .Там что-то вроде

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

nat 3 config if ${ExtIf} log redirect_port tcp ${httpd_jail}:443 443
add nat 3 tcp from ${ExtIp} 443 to any
add nat 3 tcp from any to any
должно быть...

Re: ipfw - проброс порта

Добавлено: 2009-03-28 10:26:23
princeps
Релакс дело говорит про ядерный нат, если подставить даные тредстартера получится что-то вроде:

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

nat 3 config if fxp0 log redirect_port tcp 192.168.0.11:35443 35443
add nat 3 ip from 93.73.142.132 to any out via fxp0
add nat 3 ip from any to 93.73.142.132 in via fxp0

Re: ipfw - проброс порта

Добавлено: 2009-03-28 18:57:48
Laa
+1
я тоже поддерживаю ядреный нат.
Лучше его, раз уж 7.1

Re: ipfw - проброс порта

Добавлено: 2009-03-29 21:12:25
redhot
тоже недавно пробовал реализовать сабж, че-то не пошло с ipfw, поискал инфу в инете, и обнаружил, что установка rinetd экономит массу времени и нервов %)

Re: ipfw - проброс порта

Добавлено: 2009-03-30 0:57:16
buryanov
Прописал проброс порта

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

# NAT via 195.5.17.254
${FwCMD} nat 1 config ip 195.5.17.254 log redirect_port tcp 10.4.2.79:1723 1723 \
                                            redirect_port tcp 10.4.30.85:23 23
${FwCMD} add nat 1 all from table\(1\) to not table\(1\) out via vlan11
${FwCMD} add nat 1 all from any to 195.5.17.254 in via vlan11
в частности порт 23.
Мои параметры:
vlan11 - ukrtel-254.telesens.com.ua - 195.5.17.254
vlan1 - ws-060-new.hq.telesens.lan - 10.4.30.85

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

[root@hqgw2 /etc]# ipfw table 1 list
10.4.0.0/16 0
192.168.130.0/24 0
[root@hqgw2 /etc]# ifconfig vlan11
vlan11: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        inet 195.5.17.254 netmask 0xfffffff8 broadcast 195.5.17.255
        vlan: 11 parent interface: fxp0
[root@hqgw2 /etc]# ifconfig vlan1
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        inet 10.4.250.2 netmask 0xffff0000 broadcast 10.4.255.255
        vlan: 1 parent interface: fxp0
В чём проблема:

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

[root@hqgw2 /etc]# tcpdump -i vlan11 port 23
22:32:08.765330 IP 163.231.249.80.customer.teleportsv.net.61175 > ukrtel-254.telesens.com.ua.telnet: S 3149225259:3149225259(0) win 65535 <mss 1452,nop,wscale 3,sackOK,timestamp 4082716145 0>
22:32:08.765904 IP ws-060-new.hq.telesens.lan.telnet > 163.231.249.80.customer.teleportsv.net.61175: S 3629022507:3629022507(0) ack 3149225260 win 65340 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>
на шлюзе, который после этого

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

00:32:17.903970 IP 163.231.249.80.customer.TeleportSV.net.61175 > ukrtel-254.telesens.com.ua.telnet: S 3149225259:3149225259(0) win 65535 <mss 1452,nop,wscale 3,sackOK,timestamp 4082716145 0>
00:32:17.904678 IP ws-060-new.hq.telesens.lan.telnet > 163.231.249.80.customer.TeleportSV.net.61175: S 3629022507:3629022507(0) ack 3149225260 win 65340 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>
0
то есть, мой шлюз не натит после ответа машини на которую идёт редирект. Нат, просто как нат, работает

Re: ipfw - проброс порта

Добавлено: 2009-03-30 1:59:06
fox
Добрый вечер ребята!
Вот вам в помощь действующие конфиги, а то я вижу вы совсем запарились! :-)
Для проброса портов, можно через SSH сделать туннель, но при динамическом IP шлюза могут быть проблемы по этому покажу через нат:

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

rc.conf
firewall_enable="YES"
firewall_script="/etc/rc.fws"
natd_enable="YES"
natd_interface="vr0"
natd_flags="-m -u -f /etc/natd.conf"

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

ipfw:
divert 8668 ip4 from 192.168.0.0/16 to any out xmit vr0
divert 8668 ip4 from any to me in recv vr0
...
allow ip from any to any dst-port 23 #Правела для проброшеных портов!
allow ip from any to any dst-port 7424 #Правела для проброшеных портов!
allow ip from any to any dst-port 7425 #Правела для проброшеных портов!

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

natd.conf
log                     no
deny_incoming           no
use_sockets             yes
same_ports              yes
unregistered_only       yes

redirect_port   tcp     192.168.216.1:23 23
redirect_port  tcp     192.168.216.1:7424 7424
redirect_port  tcp     192.168.216.1:7425 7425
И на всякий случай ядро, но предупреждая там много лишнего вам нужно всё что касается FireWall и Diverta:

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

#IPFW_NETGRAPH
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET
options         HZ=1000
options         NETGRAPH
options         NETGRAPH_PPPOE
options         NETGRAPH_ASYNC
options         NETGRAPH_BPF
options         NETGRAPH_BRIDGE
options         NETGRAPH_CISCO
options         NETGRAPH_ECHO
options         NETGRAPH_ETHER
options         NETGRAPH_FRAME_RELAY
options         NETGRAPH_GIF
options         NETGRAPH_GIF_DEMUX
options         NETGRAPH_HOLE
options         NETGRAPH_IFACE
options         NETGRAPH_IP_INPUT
options         NETGRAPH_KSOCKET
options         NETGRAPH_L2TP
options         NETGRAPH_LMI
options         NETGRAPH_ONE2MANY
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_RFC1490
options         NETGRAPH_SOCKET
options         NETGRAPH_TEE
options         NETGRAPH_TTY
options         NETGRAPH_UI
options         NETGRAPH_VJC

#MPPC
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_MPPC_COMPRESSION

options         NETGRAPH_TCPMSS

#GRAPHIS KARD
options         SC_PIXEL_MODE
options         VGA_WIDTH90
options         SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options         SC_NORM_REV_ATTR=(FG_YELLOW|BG_GREEN)
options         SC_KERNEL_CONS_ATTR=(FG_WHITE|BG_BLUE)

#LINUX
options COMPAT_LINUX
Но я думаю ядро вам мало поможет, если у вас по стандарту НАТ и FireWall поднят, то всё с этими конфигами заведётся с пол пенка, только на всякий случай переребудте машину, а то бывают казусы с НАТД, тогда точно должно всё работать!!!
Удачи, всё должно работь! :-)

Re: ipfw - проброс порта

Добавлено: 2009-03-30 9:14:04
princeps
Можно и так. Но ядерный нат ИМХО правильней.
fox писал(а):Для проброса портов, можно через SSH сделать туннель, но при динамическом IP шлюза могут быть проблемы по этому покажу через нат:
Проблемы будут, когда у тебя почтовые и www-сервера за натом :) 2 buryanov: не совсем понял твою проблему, напиши еще раз, что там не работает у тебя.

Re: ipfw - проброс порта

Добавлено: 2009-03-30 9:37:44
buryanov
у меня идёт проброс порта на внутрений ip, когда пакет позвращается назад, то он не натится. ipfw в стадии отстройки, поэтому правила типа ipfw add 10 deny ip from 10.4.0.0/16 to any via $extif сейчас не прописано. Дамп с роутера который после того, который я настраиваю

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

ws-060-new.hq.telesens.lan.telnet > 163.231.249.80.customer.TeleportSV.net.61175
ws-060-new.hq.telesens.lan - 10,4,30,85

Re: ipfw - проброс порта

Добавлено: 2009-03-30 10:59:44
princeps
1. Сервер, на который пробрасывается порт, у тебя, случаем, не в table(1)?
2. Нет ли какого-нибудь правила, рубящего исходящие от сервера пакеты до того, как они попадают в нат?

Re: ipfw - проброс порта

Добавлено: 2009-03-30 11:01:41
princeps
По первому пункту понял, невнимательно прочитал твои листинги сначала :)

Re: ipfw - проброс порта

Добавлено: 2009-03-30 11:16:11
buryanov
В table(1) - это таблица моих сетей

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

[root@hqgw2 /etc]# ipfw table 1 list
10.4.0.0/16 0
192.168.130.0/24 0

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

[root@hqgw2 /etc]# ipfw show
00050       0         0 deny ip from table(100) to any via xl0
00100       0         0 check-state
00200       0         0 allow ip from any to any via lo0
00300       0         0 deny ip from any to 127.0.0.0/8
00400       0         0 deny ip from 127.0.0.0/8 to any
00500       0         0 deny icmp from any to any frag
00600     126     10160 allow tcp from any to any established
00700       0         0 allow udp from any to any established
00800       0         0 allow udp from table(9) to me dst-port 500
00900       0         0 allow esp from me to table(9)
01000       0         0 allow esp from table(9) to me
01100       0         0 fwd 195.5.17.250 ip from 195.5.17.254 to not 10.4.0.0/16 out
01200       0         0 nat 1 ip from table(1) to not table(1) out via vlan11
01300       0         0 nat 1 ip from any to 195.5.17.254 in via vlan11
65535 1240086 137720974 allow ip from any to any

Re: ipfw - проброс порта

Добавлено: 2009-03-30 11:22:27
buryanov
вот в чём проблема была

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

00600     126     10160 allow tcp from any to any established

Re: ipfw - проброс порта

Добавлено: 2009-03-30 11:25:56
princeps
правило 1100 не пробовал отключить? Кстати, зачем оно?

Re: ipfw - проброс порта

Добавлено: 2009-03-30 11:44:34
buryanov
когда у меня было vlan1(10.4..) - dafault route оно служило для доступа к 195,5,17,254(vlan11)

Re: ipfw - проброс порта

Добавлено: 2009-03-30 12:28:20
zingel
а легче было теги во вланах проставить

Re: ipfw - проброс порта

Добавлено: 2009-03-30 13:45:41
princeps
по-моему как раз оно заворачивает ответы от твоего сервера до того, как они попадают в нат.

Re: ipfw - проброс порта

Добавлено: 2009-03-30 16:39:42
redhot
может проще прочитать один раз http://www.lissyara.su/?id=1736 и сделать, как сказано, а не забивать этим себе голову?)))

Re: ipfw - проброс порта

Добавлено: 2012-06-19 9:53:31
volkss
Добрый день всем гуру FreeBSD!
Прошу у вас помощи в решении организации ipfw nat в FreeBSD 7.2.
За основу был взят http://www.lissyara.su/articles/freebsd ... #example_1 пример 1:
1. Ядро FreeBSD не прособиралось ограничился записями в /etc/rc.conf
Firewall_nat_enable=”YES”
Dummynet_enable=”YES”
2. Конфигурация сети такая:
первая сетевая карта (vr0: 172.19.9.X) маска: 255.255.255.Х, Шлюз: 172.19.9.X , DNS: 193.109.164.X смотрит наружу в Инет, вторая (rl0: 192.168.0.X) смотрит в локалку.
/etc/rc.conf содержит:

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

firewall_nat_enable=”YES”
dummynet_enable=”YES” 
ifconfig_vr0="inet 172.19.9.X netmask 255.255.255.X - rxcsm"
ifconfig_rl0="inet 192.168.0.X netmask 255.255.255.X "
defaultrouter="172.19.9.X "
gateway_enable="YES"
firewall_enable="YES"
firewall_type="/etc/firewall"
/etc/sysctl.conf содержит:

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

net.inet.ip.fw.one=1
/etc/firewall содержит:

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

# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via rl0
# боимся непонятного
add 1050 deny ip from any to 192.168.0.0/16 in recv vr0
add 1060 deny ip from 192.168.0.0/16 to any in recv vr0
add 1070 deny ip from any to 172.16.0.0/12 in recv vr0
add 1080 deny ip from 172.16.0.0/12 to any in recv vr0
add 1090 deny ip from any to 10.0.0.0/8 in recv vr0
add 10100 deny ip from 10.0.0.0/8 to any in recv vr0
add 10110 deny ip from any to 169.254.0.0/16 in recv vr0
add 10120 deny ip from 169.254.0.0/16 to any in recv vr0

# настройка ната.
nat 1 config log if vr0 reset same_ports deny_in redirect_port tcp 172.19.9.X:6881 6881 redirect_port udp 172.19.9.X:4444 4444 redirect_port tcp 192.168.1.X:25 25

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

# боимся непонятного
add 65534 deny all from any to any
Как тюлька стартует /etc/firewall праброса нет ping ya.ru выдает ping: sendto: No route to host ,что сделал не так и как с этим бороться???

Re: ipfw - проброс порта

Добавлено: 2012-06-19 10:20:49
hizel

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

ifconfig_vr0="inet 172.19.9.X netmask 255.255.255.X - rxcsm"
...
add 1070 deny ip from any to 172.16.0.0/12 in recv vr0
add 1080 deny ip from 172.16.0.0/12 to any in recv vr0
подумайте над этим

P.S. и зачяем вы занимаетесь некропостингом?

Re: ipfw - проброс порта

Добавлено: 2012-06-22 16:14:05
volkss
Не хочет запускать 10130 правило де нужно разбираться???

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

# настройка ната.
nat 1 config log if vr0 reset same_ports deny_in redirect_port tcp 172.19.9.X:6881 6881 redirect_port udp 172.19.9.X:4444 4444 redirect_port tcp 192.168.1.X:25 25

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

Re: ipfw - проброс порта

Добавлено: 2012-06-22 16:20:19
hizel
я вас не алё