URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90762
[ Назад ]

Исходное сообщение
"ipfw. Публикация сервера приложения из вне"

Отправлено mslabousov , 19-Янв-11 16:23 
Какая стоит задача.
Есть шлюзовая машина 8.1-RELEASE FreeBSD 8.1 с двумя сетевыми картами: одна внешняя, другая внутренняя.

Втунтреняя карта смотрит в локальную сетку, внешняя в инет. Требуется, чтобы извне по ссылке https://внешний_IP/  - отзывался мой сервер приложения, который стоит у меня в локальной сети и имеет ip 192.168.0.230 и работает через 443 и 9091 порты.
Много чего я перепробовал – но результата не смог добиться.
Раньше делал это на MS ISA и на Ubuntu iptables – проблем не было! Тут же что то никак!!
Помогите! Укажите как надо!
Делал и через nat и natd и просто правилами проброса портов – ну никак и все!!!
Я все лишнее убрал из правил firewall’a

1. Информация о системе:

whitegate:root->/root# uname -a
FreeBSD whitegate.nmbank.ru 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Thu Jan 13 10:38:49 MSK 2011     gridin@whitegate.nmbank.ru:/usr/src/sys/i386/compile/NMBKERN1  i386

2. Ядро скомпилировано с такими параметрами:

options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT

3. rc.conf

hostname="whitegate.nmbank.ru"
defaultrouter="IP шлюза"
ifconfig_igb0="inet 192.168.0.215  netmask 255.255.255.0"
ifconfig_igb1="inet внешний_IP  netmask 255.255.255.0"
inetd_enable="NO"
gateway_enable="YES"
firewall_enable="YES"
firewall_type="closed"

#NAT
natd_enable="YES"
natd_interface="igb1"
natd_flags="-f /etc/natd.conf"

4. natd.conf

same_ports yes
use_sockets yes

5.    /etc/rc.d/ipfw-nmb-slab

#!/bin/sh
ipfw='/sbin/ipfw -q'
ournet='192.168.0.0/24'
uprefix='192.168.0'
ifout='igb1'
ifuser='igb0'
IpOut='внешний_IP'
IpIn='192.168.0.215'

${ipfw} flush
${ipfw} add 100 check-state
${ipfw} add 200 allow ip from any to any via lo
${ipfw} add 300 allow ip from any to any via ${ifuser}
${ipfw} nat 1 config log if ${ifout} reset same_ports deny_in redirect_port tcp 192.168.0.230:443 443
${ipfw} nat 2 config log if ${ifout} reset same_ports deny_in redirect_port tcp 192.168.0.230:9091 9091

#Admin
${ipfw} add 1003 allow ip from ${uprefix}.24 to any via ${ifuser}
${ipfw} add 1003 allow ip from any to ${uprefix}.24 via ${ifuser}

#Deny all
${ipfw} add 65534 deny ip from any to any

6.    sh /etc/rc.d/ipfw-nmb-slab  - перезапуск firewall’a

Пишет вот такую вот ошибку…

ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument

Ядро у меня сконфигурировано с options IPFIREWALL_NAT

Что ему надо? И что вообще я делаю не так?

Спасибо!!!


Содержание

Сообщения в этом обсуждении
"ipfw. Публикация сервера приложения из вне"
Отправлено oo , 19-Янв-11 16:34 
>[оверквотинг удален]
> ${ipfw} add 1003 allow ip from any to ${uprefix}.24 via ${ifuser}
> #Deny all
> ${ipfw} add 65534 deny ip from any to any
> 6. sh /etc/rc.d/ipfw-nmb-slab  - перезапуск firewall’a
> Пишет вот такую вот ошибку…
> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
> Ядро у меня сконфигурировано с options IPFIREWALL_NAT
> Что ему надо? И что вообще я делаю не так?
> Спасибо!!!

В rc.conf  запускаешь natd
А в ipfw-nmb-slab конфигурируешь nat
так задумано?


"ipfw. Публикация сервера приложения из вне"
Отправлено oo , 19-Янв-11 16:35 
>[оверквотинг удален]
>> 6. sh /etc/rc.d/ipfw-nmb-slab  - перезапуск firewall’a
>> Пишет вот такую вот ошибку…
>> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>> Ядро у меня сконфигурировано с options IPFIREWALL_NAT
>> Что ему надо? И что вообще я делаю не так?
>> Спасибо!!!
> В rc.conf  запускаешь natd
> А в ipfw-nmb-slab конфигурируешь nat
> так задумано?

firewall_type="closed"
это к чему? у тебя же свой скрипт и там нет такого раздела?


"ipfw. Публикация сервера приложения из вне"
Отправлено mslabousov , 19-Янв-11 16:46 
>[оверквотинг удален]
>>> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>>> Ядро у меня сконфигурировано с options IPFIREWALL_NAT
>>> Что ему надо? И что вообще я делаю не так?
>>> Спасибо!!!
>> В rc.conf  запускаешь natd
>> А в ipfw-nmb-slab конфигурируешь nat
>> так задумано?
> firewall_type="closed"
> это к чему? у тебя же свой скрипт и там нет такого
> раздела?

Я уже пробовал и "open" и как только не пробовал - сейчас вообще убрал эту строку и разницы то никакой :(



"ipfw. Публикация сервера приложения из вне"
Отправлено mslabousov , 19-Янв-11 16:44 
>[оверквотинг удален]
>> 6. sh /etc/rc.d/ipfw-nmb-slab  - перезапуск firewall’a
>> Пишет вот такую вот ошибку…
>> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>> ipfw: setsockopt(IP_FW_NAT_CFG): Invalid argument
>> Ядро у меня сконфигурировано с options IPFIREWALL_NAT
>> Что ему надо? И что вообще я делаю не так?
>> Спасибо!!!
> В rc.conf  запускаешь natd
> А в ipfw-nmb-slab конфигурируешь nat
> так задумано?

Верно! Так и задумано! Но как его этот NAT сконфигурить - не знаю уже :(



"ipfw. Публикация сервера приложения из вне"
Отправлено Square , 19-Янв-11 18:17 
> ${ipfw} nat 1 config log if ${ifout} reset same_ports deny_in redirect_port tcp
> 192.168.0.230:443 443
> ${ipfw} nat 2 config log if ${ifout} reset same_ports deny_in redirect_port tcp
> 192.168.0.230:9091 9091

Вот эти два правила, попробуйте изменить на одно:
${ipfw} nat 1 config if ${ifout} log reset deny_in same_ports redirect_port tcp 192.168.0.230:443 443 redirect_port tcp 192.168.0.230:9091 9091

и еще...  эти строки - относятся к синтаксису кернельного ната, который в rc.conf устанавливается так:

firewall_enable="YES"
firewall_nat_enable="YES"
dummynet_enable="YES"
firewall_type="/etc/firewall"

а ваши строки в rc.conf , относядся к юзерспейсному нату natd, который конфигурируется ИНАЧЕ.
#NAT
natd_enable="YES"
natd_interface="igb1"
natd_flags="-f /etc/natd.conf"

в этом случае нужно писать в /etc/natd.conf
===
log
deny_incoming yes
use_sockets yes
same_ports yes
dynamic yes
verbose no
port natd
log_ipfw_denied no
proxy_only no
interface igb1
redirect_port tcp 192.168.0.230:443 443
redirect_port tcp 192.168.0.230:9091 9091
===
а не в строку файрвола. Строка файрвола при использовании natd должна выглядеть так:
add divert natd all from any to any via igb1

Кернельный nat и natd - это РАЗНЫЕ наты, которые конфигурируются по разному. Вы в rc.conf включаете natd, а пытаетесь его настроить как если бы он был кернельный. Ну и правильно что файрвол ругается на недопустимый параметр :)


"ipfw. Публикация сервера приложения из вне"
Отправлено mslabousov , 28-Янв-11 16:43 
Спасибо!
Помогли!
У меня все получилось!!!
Я все понял!