Есть такая задача:
- Стоит шлюз (2 интерфейса) с NATом и IPFW;
- Пров выделил реальную подсеть;
Нужно эту подсеть грамотно вывести в инет...
(в данной подсети есть www, ftp и т.д.)
Проблем особых не вижу.
Прочитай, там всё написано http://www.freebsd.bip.ru/natd.shtml,
а с помощью rinetd можно ftp и www держать в локальной сети.
Для начала привожу конфиги:
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 anyICMP до любой машины из подсети "У" идёт и 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 hostsockstat c yyy.yyy.yyy.1
nobody ftpd 481 0 tcp4 *:21 *:*
если честно - не очень понятно что ты хочешь сделать...
Если тебе нужно DMZ , то делай его.
Если ты хочешь перебрасывать соединения с одного порта на другой ip-port, то и это делай.
Твоя конфигурация - это ТОЛЬКО NAT из локалки но НЕ в локалку...
И не забывай что "Серые" адреса не маршрутизируемые (все провы их "бьют")...для переброски трафика "кури" NAT, но мне больше нравится redir из портов , так как он СТАБИЛЬНЕЕ работает, (хотя я этот выбор сделал еще на 4.3)
http://www.opennet.me/openforum/vsluhforumID10/1476.html
может тебе это решение подойдет
alias neobhodim если у тебя единственный!!!!!!!!!!!!!! interfaсe
и если будешь раздавать виртуальные серваки.
Если их два(interface), то NAT i pravila ipfw вешаешь наружу (real IP)
"via (iface for IP_ISP)"
если помогло OK! нет-> пиши aidsvv@ms.odessa.ua
Кстати, с помощью ipfilter вроде можно вынести в DMZ целый интерфейс ...
А вот в ipfw я такого не нашёл...
Я как раз поставил третью сетевуху для "белой" сетки.
Если в ipfw нельзя выделить в DMZ интерфейс, то как тогда в нём будут выглядеть правила?
xl0 - внешний
xl1 - "серая" сеть
rl0 - "белая" сеть
Правильно поставленный вопрос - это половина ответа... ;)
(это не я сказал , но цитирую ОООчень часто..;)) )
Хорошо, попробую ещё раз... :)
Итак, есть роутер (теперь уже с тремя интерфейсами).
"Серую" сеть предприятия нужно выводить через 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, проблема была бы решена? Если да, то как это реализовать?
>Выделив 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НО на самом деле , нужно разрешить только те порты , на которых ты будешь оказывать инет услуги .... остальное -низяяяяяяя
Низяяяяяяя?
А как быть в таком случае если там на каждом из 10 серверов стоит по апачу, фтп, днс?
>Низяяяяяяя?
так я и грю... все что нужно разрешаешь... ;)
Итак, по итогам треда у меня выходит следующее (при условии что безопасность меня пока не интересует):
#!/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