Какая стоит задача.
Есть шлюзовая машина 8.1-RELEASE FreeBSD 8.1 с двумя сетевыми картами: одна внешняя, другая внутренняя.Втунтреняя карта смотрит в локальную сетку, внешняя в инет. Требуется, чтобы извне по ссылке https://внешний_IP/ - отзывался мой сервер приложения, который стоит у меня в локальной сети и имеет ip 192.168.0.230 и работает через 443 и 9091 порты.
Много чего я перепробовал – но результата не смог добиться.
Раньше делал это на MS ISA и на Ubuntu iptables – проблем не было! Тут же что то никак!!
Помогите! Укажите как надо!
Делал и через nat и natd и просто правилами проброса портов – ну никак и все!!!
Я все лишнее убрал из правил firewall’a1. Информация о системе:
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 i3862. Ядро скомпилировано с такими параметрами:
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT3. 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 yes5. /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 any6. 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} 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
так задумано?
>[оверквотинг удален]
>> 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: setsockopt(IP_FW_NAT_CFG): Invalid argument
>>> Ядро у меня сконфигурировано с options IPFIREWALL_NAT
>>> Что ему надо? И что вообще я делаю не так?
>>> Спасибо!!!
>> В rc.conf запускаешь natd
>> А в ipfw-nmb-slab конфигурируешь nat
>> так задумано?
> firewall_type="closed"
> это к чему? у тебя же свой скрипт и там нет такого
> раздела?Я уже пробовал и "open" и как только не пробовал - сейчас вообще убрал эту строку и разницы то никакой :(
>[оверквотинг удален]
>> 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} 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, а пытаетесь его настроить как если бы он был кернельный. Ну и правильно что файрвол ругается на недопустимый параметр :)
Спасибо!
Помогли!
У меня все получилось!!!
Я все понял!