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

Исходное сообщение
"IPFW, NAT и реальные IP..."

Отправлено Scrooge , 05-Авг-04 15:41 
Есть такая задача:
- Стоит шлюз (2 интерфейса) с NATом и IPFW;
- Пров выделил реальную подсеть;
Нужно эту подсеть грамотно вывести в инет...
(в данной подсети есть www, ftp и т.д.)

Содержание

Сообщения в этом обсуждении
"IPFW, NAT и реальные IP..."
Отправлено Ahiles , 05-Авг-04 17:37 
Проблем особых не вижу.
Прочитай, там всё написано http://www.freebsd.bip.ru/natd.shtml,
а с помощью rinetd можно ftp и www держать в локальной сети.


"IPFW, NAT и реальные IP..."
Отправлено Scrooge , 06-Авг-04 17:40 
Для начала привожу конфиги:
FreeBSD 5.2.1-RELEASE
#cat /etc/rc.conf
defaultrouter="xxx.xxx.xxx.21"
gateway_enable="YES"
ifconfig_xl0="inet xxx.xxx.xxx.22  netmask 255.255.255.252"
ifconfig_xl1="inet yyy.yyy.yyy.1 netmask 255.255.255.240"
ifconfig_xl1_alias0="inet 192.168.0.1 netmask 255.255.255.0"
firewall_enable="YES"
firewall_type="open"
natd_enable="YES"
natd_interface="xl0"

#ipfw list
00050 divert 8668 ip from any to any via xl0
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
65000 allow ip from any to any

ICMP до любой машины из подсети "У" идёт и TRACEROUTE проходит.
Невозможно достучаться ни до одного порта из этой подсети...
#telnet yyy.yyy.yyy.1 21
Trying yyy.yyy.yyy.1...
telnet: connect to address yyy.yyy.yyy.1: Connection refused
telnet: Unable to connect to remote host

sockstat c yyy.yyy.yyy.1
nobody   ftpd    481   0  tcp4   *:21                  *:*


"IPFW, NAT и реальные IP..."
Отправлено lamerusha , 07-Авг-04 11:48 

если честно - не очень понятно что ты хочешь сделать...
  Если тебе нужно DMZ , то делай его.
  Если ты хочешь перебрасывать соединения с одного порта на другой ip-port, то и это делай.
   Твоя конфигурация - это ТОЛЬКО NAT из локалки но НЕ в локалку...
И не забывай что "Серые" адреса не маршрутизируемые (все провы их "бьют")...

для переброски трафика "кури" NAT, но мне больше нравится redir из портов , так как он СТАБИЛЬНЕЕ работает, (хотя я этот выбор сделал еще на 4.3)

http://www.opennet.me/openforum/vsluhforumID10/1476.html
может тебе это решение подойдет


"IPFW, NAT и реальные IP..."
Отправлено Alexfree , 08-Авг-04 04:38 
alias neobhodim если у тебя единственный!!!!!!!!!!!!!! interfaсe
и если будешь раздавать виртуальные серваки.
Если их два(interface), то  NAT i pravila ipfw вешаешь наружу (real IP)
"via (iface for IP_ISP)"
если помогло OK! нет-> пиши aidsvv@ms.odessa.ua

"IPFW, NAT и реальные IP..."
Отправлено Scrooge , 10-Авг-04 00:50 
Кстати, с помощью ipfilter вроде можно вынести в DMZ целый интерфейс ...
А вот в ipfw я такого не нашёл...
Я как раз поставил третью сетевуху для "белой" сетки.
Если в ipfw нельзя выделить в DMZ интерфейс, то как тогда в нём будут выглядеть правила?
xl0 - внешний
xl1 - "серая" сеть
rl0 - "белая" сеть

"IPFW, NAT и реальные IP..."
Отправлено lamerusha , 10-Авг-04 10:02 
Правильно поставленный вопрос - это половина ответа... ;)


(это не я сказал , но цитирую ОООчень часто..;)) )


"IPFW, NAT и реальные IP..."
Отправлено Scrooge , 10-Авг-04 11:31 
Хорошо, попробую ещё раз... :)
Итак, есть роутер (теперь уже с тремя интерфейсами).
"Серую" сеть предприятия нужно выводить через NAT (с этим проблем нет...).
"Белую" сеть нужно просто вывести в инет без всяких NATов.
ifconfig_xl0="inet xxx.xxx.xxx.22  netmask 255.255.255.252"
ifconfig_rl0="inet yyy.yyy.yyy.1 netmask 255.255.255.240"
ifconfig_xl1="inet 192.168.0.1 netmask 255.255.255.0"
Вопрос заключается в том, как правильно написать правила IPFW или сконфигурировать NAT, чтобы вся подсеть "Y" была полностью видна в инете.
Выделив rl0 в DMZ, проблема была бы решена? Если да, то как это реализовать?

"IPFW, NAT и реальные IP..."
Отправлено lamerusha , 10-Авг-04 11:45 
>Выделив rl0 в DMZ, проблема была бы решена? Если да, то как
>это реализовать?

rc.conf
gateway_enable="YES"
firewall_enable="YES"

rc.firewall
dmz = "yyy.yyy.yyy.1/255.255.255.240"

ipfw add allow ip from $dmz to any
... from any to $dmz

НО на самом деле , нужно разрешить только те порты , на которых ты будешь оказывать инет услуги .... остальное -низяяяяяяя


"IPFW, NAT и реальные IP..."
Отправлено Scrooge , 10-Авг-04 11:49 
Низяяяяяяя?
А как быть в таком случае если там на каждом из 10 серверов стоит по апачу, фтп, днс?

"IPFW, NAT и реальные IP..."
Отправлено lamerusha , 10-Авг-04 13:19 
>Низяяяяяяя?
так я и грю... все что нужно разрешаешь... ;)

"IPFW, NAT и реальные IP..."
Отправлено Scrooge , 10-Авг-04 15:59 
Итак, по итогам треда у меня выходит следующее (при условии что безопасность меня пока не интересует):
#!/bin/sh
ipfw="/sbin/ipfw -q"

# Out
OutInterface="xl0"
OutIp="xxx.xxx.xxx.22"
OutMask="255.255.255.252"
# DMZ
DMZInterface="rl0"
DMZIp="yyy.yyy.yyy.1"
DMZMask="255.255.255.240"
# Grey
GrInterface="xl1"
GrIp="192.168.0.1"
GrMask="255.255.255.0"

${fwcmd} -f flush

${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny ip from ${GrIp}:${GrMask} to any in via ${OutInterface}

# DMZ
${fwcmd} add 700 pass ip from ${DMZIp}:${DMZMask} to any
${fwcmd} add 800 pass ip from any to ${DMZIp}:${DMZMask}
# NAT
${fwcmd} add 300 divert natd ip from ${GrIp}:${GrMask} to any out via ${OutInterface}
${fwcmd} add 400 divert natd ip from any to ${OutIp}:${OutMask} in via ${OutInterface}
${fwcmd} add 500 pass tcp from any to any established
${fwcmd} add 600 pass ip from ${OutIp}:${OutMask} to any out xmit ${OutInterface}
# END
${fwcmd} add pass all from any to any via ${GrInterface}
${fwcmd} add deny all from any to any