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

Firewall

Добавлено: 2007-06-26 2:06:07
Евгений
Начал делать фаир. Как на сайте "Штатный фаирволл"
Нечего не получилось. В результате пришел к следующему конфигу который меня вообще не устраивает.
Надо добиться следующего:
Есть интерфейс A который подключен к провайдеру rl0( )

rc.conf
defaultrouter="212.56.205.193"
gateway_enable="YES"
ifconfig_rl0="inet 212.56.205.194 netmask 255.255.255.252"

rc.firewall
LanOut0="rl0"
NetOut0="212.56.205.192/30"
IpOut0="212.56.205.194"

Есть интерфейс B. Сеть из 16 реальных IP для серверов.

rc.conf
ifconfig_vr0="inet 212.56.205.177 netmask 255.255.255.240"

rc.firewall
LanOut="vr0"
NetOut="212.56.205.176/28"
IpOut="212.56.205.177"

Есть внутренние сети C,D

rc.conf
ifconfig_rl2="inet 172.16.2.254 netmask 255.255.255.0"
ifconfig_rl3="inet 172.16.3.254 netmask 255.255.255.0"


rc.firewall
LanIn2="rl2"
NetIn2="172.16.2.0/24"

LanIn3="rl3"
NetIn3="172.16.3.0/24"

Задача:
Сети C и D должны ходить в интернет через нат используя интерфейс B и чтоб с наружи был виден IP 212.56.205.177.
Сеть реальных IP должна ходить в интернет сама по себе (без ната и т.д.)
----------------------------------
В чем проблема у меня вот мой конфиг, который надо переделать но ума не приложу как.
/etc/rc.firewall

#!/bin/sh

FwCMD="/sbin/ipfw"

LanOut="vr0"
NetOut="212.56.205.176/28"
IpOut="212.56.205.177"

LanOut0="rl0"
NetOut0="212.56.205.192/30"
IpOut0="212.56.205.194"

LanIn2="rl2"
NetIn2="172.16.2.0/24"

LanIn3="rl3"
NetIn3="172.16.3.0/24"

${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush

${FwCMD} add divert natd all from any to any via ${LanOut0}
#${FwCMD} add divert natd all from ${LanIn3} to any via ${LanOut0}

${FwCMD} add allow all from any to any
-----------------
/etc/rc.conf
natd_enable="YES"
natd_interface="rl0"
natd_flags="-m -u"
----------------------
Если я использую ${FwCMD} add divert natd all from any to any via ${LanOut0} нат работает, но естественно через интерфейс А "212.56.205.194. Натятся все сетки и реальные тоже.
natd_flags="-m -u" флаг -u не работает почему-то.

Если я в rc.conf ставлю natd_interface="vr0" и использую тоже правило только ${LanOut0} меняю на
${LanOut}. ${FwCMD} add divert natd all from any to any via ${LanOut} - не работает ничего. ТЕ. в интернет никто попасть из сетей не может.

Если я использую natd_interface="rl0", но пишу в фаире #${FwCMD} add divert natd all from ${LanIn3} to any via ${LanOut0} - нат для сети LanIn3="rl3" NetIn3="172.16.3.0/24" не работает.

Если я использую natd_interface="vr0", и пишу в фаире #${FwCMD} add divert natd all from ${LanIn3} to any via ${LanOut0} - нат для сети LanIn3="rl3" NetIn3="172.16.3.0/24" также не пашет.

Я бы хотел сделать в фаирволе правила нат для каждой из внутрених сетей. ТК. Будет ещё один интерфейс к провайдеру, для местного траффика. И одна из сетей должна будет на него переехать.
Но это уже другая пестня, когда доберусь до этого буду спрашивать если не получится.

Скажите, что я не так делаю? ОС FreeBSD 6.2 В ядро вкомпилил всё что надо.
Заранее спасибо. При встрече - ставлю ПИВО!

Добавлено: 2007-06-26 10:11:17
dikens3
Я так полагаю что провайдер у тебя 1, но интернет подключений 2?
Одно для серверов, другое для твоих сетей?

Если так, тогда нужно понять что такое маршрутизация. Я писал статью. Почитай про fwd.

Если же у тебя IP-Роутинг настроен, то сказать нужно бы. :-)

Добавлено: 2007-06-26 13:42:20
Urgor
Зачем же натить все подряд? Пропиши нат для внутренней сетки:

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

# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from 192.168.2.0/24 to any out via rl0
${FwCMD} add divert natd ip from 192.168.3.0/24 to any out via rl0
${FwCMD} add divert natd ip from any to 212.56.205.194 in via rl0
А для реальных сервантов просто пропиши разрешающие правила для того что там вертится....

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

# разрешаем ftp снаружи (оба правила - для пасивного режима):
${FwCMD} add allow tcp from any to 212.56.205.177/28 21
${FwCMD} add allow tcp from any to 212.56.205.177/28 40000-65534

Добавлено: 2007-06-26 13:57:54
reshekpc
1 провайдер 1 канал. Будет другой
"Но это уже другая пестня, когда доберусь до этого буду спрашивать если не получится."

Статью читал. Но до неё ещё рано.
Мне с моим натом бы, чтоб реальная сеть бегала НЕ через нат. А сетки внутренние через нат IP !!!! НЕ !!!! тот что на внешнем интерфейсе к прову (212.56.205.194), а через ту сеть которую он на меня рутит ТЕ на рутере есть сетевуха с 212.56.205.177.
LanOut="vr0"
NetOut="212.56.205.176/28"
IpOut="212.56.205.177"

Если не трудно, помогите. Какой нинить простенький рабочий конфиг. Я уже весь мозг себе сломал. ХЗ почему не работает. Постарался подробней всё описать, чтоб не возникло странных вопросов.

Добавлено: 2007-06-26 14:02:48
reshekpc
Urgor писал(а):Зачем же натить все подряд? Пропиши нат для внутренней сетки:

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

# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from 192.168.2.0/24 to any out via rl0
${FwCMD} add divert natd ip from 192.168.3.0/24 to any out via rl0
${FwCMD} add divert natd ip from any to 212.56.205.194 in via rl0
А для реальных сервантов просто пропиши разрешающие правила для того что там вертится....

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

# разрешаем ftp снаружи (оба правила - для пасивного режима):
${FwCMD} add allow tcp from any to 212.56.205.177/28 21
${FwCMD} add allow tcp from any to 212.56.205.177/28 40000-65534
Первое попробую, не понимаю смысл этого ${FwCMD} add divert natd ip from any to 212.56.205.194 in via rl0. Как в контексте звучит?
а реальники фаирволится не должны вообще. Некоторые из них как рутеры выступать будут. Мне на них как на вход, так и на выход полный сетевой доступ. Без запретов.

Добавлено: 2007-06-26 14:07:32
Urgor
Первое попробую, не понимаю смысл этого ${FwCMD} add divert natd ip from any to 212.56.205.194 in via rl0. Как в контексте звучит?
Натить пакеты входящие на 212.56.205.194 с "улицы". Т.е. обратная трансляция адресов.

Добавлено: 2007-06-26 14:11:33
Urgor
ТЕ на рутере есть сетевуха с 212.56.205.177.
LanOut="vr0"
NetOut="212.56.205.176/28"
IpOut="212.56.205.177"
Есть интерфейс A который подключен к провайдеру rl0( )
rc.conf
defaultrouter="212.56.205.193"
gateway_enable="YES"
ifconfig_rl0="inet 212.56.205.194 netmask 255.255.255.252"
Я что-то не пойму, через что у тя инет заведен от прова? :)

Добавлено: 2007-06-26 17:39:45
dikens3
Тоже прикалолся? :-)
Хочу заметить что Default маршрут тоже один. :-)

reshekpc
Рассказывай как инет настроил и что тут за фигня. Вобщем что сам знаешь и как это у тебя работает. :-)
Интерфейсы понятно, но как через одно подключение в 2-а разных интерфейса приходят данные, причём на разные IP?

Добавлено: 2007-06-27 0:13:36
reshekpc
dikens3 писал(а):Тоже прикалолся? :-)
Хочу заметить что Default маршрут тоже один. :-)

reshekpc
Рассказывай как инет настроил и что тут за фигня. Вобщем что сам знаешь и как это у тебя работает. :-)
Интерфейсы понятно, но как через одно подключение в 2-а разных интерфейса приходят данные, причём на разные IP?
Итак, всё по порядку....

1) Пришел провайдер и поставил модем
2) Воткнул кабель в ноутбук(ВИНДОВС) и прописал на нем IP: 212.56.205.194 Netmask 255.255.255.252 Gateway 212.56.205.193 DNS: 195.22.225.11
3) ping mail.ru - О счастье! Пингуется!
4) Пишет мне на бумаге эти параметры и говорит. на IP 212.56.205.194 рутится ваша сеть из 16 IP: 212.56.205.176/28
5) Ну я ему и говорю, типа спасибо, типа до свидания.
6) Втыкаю провод в свою фрю и прописываю на ней rl0(причём без вые№;нов netconfig-ом):

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 212.56.205.194 netmask 0xfffffffc broadcast 212.56.205.195
ether 00:40:f4:6f:94:44
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
соответственно в rc.conf
defaultrouter="212.56.205.193"
gateway_enable="YES"
7) ping mail.ru - О счастье 2! Пингуется 2!
8) Дальше больше.... нуно включить почтовик в сеть. На стене у меня висит свич, а на нём значёк "Дежурный по связи". Из него выходит провод и втыкается в сетевуху на моём рутере, бортовая карта (vr0).
9) В этот же свич, подключен почтовик тоже специальным кабелем (UTP 5-ой категории).
10) Я, значит, лезу на рутер и прописываю первый IP из тех 16-ти что мне пров выдал на vr0. А именно
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 212.56.205.177 netmask 0xfffffff0 broadcast 212.56.205.191
ether 00:11:2f:b3:e9:69
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
11) Далее прусь на почтовик и прописываю на нём IP: 212.56.205.180 Netmask 255.255.255.240 !!! GW 212.56.205.177 !!! DNS: 195.22.225.11
12) ping mail.ru - О счастье 3! Пингуется 3!
13) Директор в это время сидит без интернета и почты. Надо его включать, прописываю на сетевухе:
rl3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 172.16.3.254 netmask 0xffffff00 broadcast 172.16.3.255
ether 00:c0:df:0d:64:3f
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active

НУ ВОТ и подошли к задаче. НАТ нужен через vr0 212.56.205.177 для этой сети 172.16.3.0/24, но чтоб мой почтовик был сам по себе со своим IP без всяких натов и пробросов портов.
Теперь читаем исчо раз первый пост, и хз... не втыкаю уже ни туя.

Добавлено: 2007-06-27 0:21:04
reshekpc
Для совсем полной картины. Могу дать шелл для более чёткого представления картины.

Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 212.56.205.193 UGS 0 67386 rl0
127.0.0.1 127.0.0.1 UH 0 766 lo0
172.16.1/24 link#2 UC 0 0 rl1
172.16.2/24 link#3 UC 0 0 rl2
172.16.2.253 00:80:48:2d:f0:68 UHLW 1 315 rl2 700
172.16.3/24 link#4 UC 0 0 rl3
172.16.3.16 00:60:52:0a:36:74 UHLW 1 23 rl3 1181
172.16.3.31 00:0f:fe:b2:38:20 UHLW 1 32 rl3 1181
172.16.3.42 00:c0:df:0d:e3:53 UHLW 1 1 rl3 1181
172.16.3.253 00:80:48:2e:0d:b9 UHLW 1 177 rl3 742
172.16.4/24 link#6 UC 0 0 rl4
212.56.205.176 ff:ff:ff:ff:ff:ff UHLWb 1 21 vr0 =>
212.56.205.176/28 link#5 UC 0 0 vr0
212.56.205.177 00:11:2f:b3:e9:69 UHLW 1 8 lo0
212.56.205.180 00:04:23:47:27:8e UHLW 1 23942 vr0 1043
212.56.205.191 ff:ff:ff:ff:ff:ff UHLWb 1 17 vr0
212.56.205.192/30 link#1 UC 0 0 rl0
212.56.205.193 00:08:e3:18:a3:70 UHLW 2 0 rl0 1178
212.56.205.195 ff:ff:ff:ff:ff:ff UHLWb 1 1 rl0

Добавлено: 2007-06-27 7:16:48
Urgor
reshekpc, дай вывод ifconfig, cat /etc/resolv.conf и ipfw show на гейте и почтаре. И эта.... для кода есть кнопочка code, читать будет проще.

Добавлено: 2007-06-27 7:49:53
Urgor
Как я понимаю:

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

inet  -- rl0 -- 212.56.205.194/30 --> далее к прову
dmz   -- vr0 -- 212.56.205.177/28 --> к почтовику, etc.
local -- rl3 -- 172.16.3.254/24 --> локалка
212.56.205.180 -- почтовик
Тогда:

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

# для NAT
${FwCMD} add divert natd ip from 172.16.3.0/24 to any out via rl0 
${FwCMD} add divert natd ip from any to 212.56.205.194 in via rl0
#для почтовика
${FwCMD} add allow tcp from 212.56.205.180 to any
${FwCMD} add allow tcp from any to 212.56.205.180

Добавлено: 2007-06-27 8:20:56
reshekpc
Ща, пришел со смены. Очухаюсь и продолжим. Потом статью напишем.

Добавлено: 2007-06-27 10:00:11
dikens3
reshekpc писал(а):Ща, пришел со смены. Очухаюсь и продолжим. Потом статью напишем.
Есть похожая.

Добавлено: 2007-06-27 10:14:36
dikens3
Итак, мы имеем обычную настройку ipfw для DMZ. В вышеприведённой ссылке есть мой конфиг фаера. На мост не обращай внимание(я уже переделал на IP-Роутинг), ipfw при этом не изменяется.

Фаер на почтовике (212.56.205.180) должен быть такой (потом сам можешь переделать):

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

allow ip from any to any via Lo
allow ip from any to any via ИНТЕРФЕЙС_212.56.205.180
Больше для него пока не надо.
С настройками у тебя всё нормально, нужно действительно разрулить с помощью NATD только локальную сеть. При этом натить на vr0 ничего не нужно!!!. Чуть позже продолжение напишу.
Тут я описывал, как отлавить глюки и разобраться с помощью ping куда и что бегает.

Добавлено: 2007-06-27 11:05:24
dikens3
Далее тебе на шлюзе нужно перехватывать трафик на DMZ(почтовый сервер):
Лучше где-нибудь в начале забабахать:
1. Пропускать входящие пакеты из локальной сети в DMZ.

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

${fwcmd} add allow all from 172.16.2.0/24,172.16.3.0/24 to 212.56.205.180 in { via rl2 or via rl3 }
2. Пропускать исходящие пакеты с интерфейса vr0 (от нашей сети) к почтовому серверу, которые уже были приняты верхними правилами.

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

${fwcmd} allow ip from 172.16.2.0/24,172.16.3.0/24 to 212.56.205.180 out { recv rl2 or recv rl3 } xmit vr0
Итак чаcть дела сделана. На DMZ из локальной сети пакеты приходят. Теперь делаем чтобы они ещё и назад возвращались.
3. Пропускать входящие пакеты идущие из DMZ от почтового сервера в нашу сеть.

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

${fwcmd} add allow ip from 212.56.205.180 to 172.16.2.0/24,172.16.3.0/24 in via vr0
4. Пропускать исходящие пакеты в нашу сеть.

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

${fwcmd} add pass all from 212.56.205.180 to 172.16.2.0/24,172.16.3.0/24 out recv vr0 { xmit rl2 or xmit rl3 }
Аналогично делается и для интернета и шлюза (для него тоже надо :-) )
Для интернета может служить примером такая конструкция:

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

Входящий траффик на почтовик:
${fwcmd} add allow all from any to 212.56.205.180 in via rl0
${fwcmd} add pass all from any to 212.56.205.180 out recv rl0 xmit vr0
Исходящий трафик на почтовик:
${fwcmd} add allow all from 212.56.205.180 to any in via vr0
${fwcmd} add pass all from 212.56.205.180 to any out recv vr0 xmit rl0
Как видно из примеров(реальных), никакого nat'а не используется.
Рекомендовал бы не пропускать из инета на DMZ IP-Адреса локальных сетей.

Добавлено: 2007-06-27 11:25:19
reshekpc
Ёу! вот это жесть. Короче, простыми способами не получается.
${FwCMD} add divert natd ip from 172.16.3.0/24 to any out via rl0
такая хреновина не проходит. Работает только
00400 166156 82349882 divert 8668 ip from any to any via rl0
-------------------------
Читаю изучаю пробую. Опишу результат. Дальше будем думать. Блин, в теории всё так просто и понятно - а реале хз кто писал ити хэндбуки( я про handbook freebsd). Дальше будет исчо сложнее - локальный (типа молдавский, украинский, российский) трафик распределять +бэкап канал автоматиццки переключать.
И САМОЕ ГЛАВНОЕ! НА на опеннете никто на это пост до сих пор не ответил :-)
Всем Респект и уважуха! Я думаю мы осилим этот фаир![/code]

Добавлено: 2007-06-27 11:26:42
reshekpc
Я ночью обычно фигячу с 00 по мск.

Добавлено: 2007-06-27 11:32:58
Alex Keda
обычные люди писали.
невозмоно написать инструкцию под каждый конкретный случай.

Добавлено: 2007-06-27 11:38:45
reshekpc
А мы постараемся! Лиссяра, в Москоу буду - с меня простава.

Добавлено: 2007-06-27 11:42:02
reshekpc
Гыыы, есть такая штюка fwbuilder. Может кто им и пользуется, может кто-то и профи. Но обрисовав ему свою сютуёвину - он выругался, и сказал что такого быть не может :-)))

Добавлено: 2007-06-27 11:52:17
Urgor
Ёу! вот это жесть. Короче, простыми способами не получается.
${FwCMD} add divert natd ip from 172.16.3.0/24 to any out via rl0
такая хреновина не проходит. Работает только
00400 166156 82349882 divert 8668 ip from any to any via rl0
Дык, там два правила должно быть, одно на выход, другое на вход. А так ты все подряд натить будешь.
Гыыы, есть такая штюка fwbuilder. Может кто им и пользуется, может кто-то и профи. Но обрисовав ему свою сютуёвину - он выругался, и сказал что такого быть не может ))
Да, тут не с первого стакана въедишь... :lol:

Добавлено: 2007-06-27 12:31:51
dikens3
reshekpc писал(а):Дальше будет исчо сложнее - локальный (типа молдавский, украинский, российский) трафик распределять +бэкап канал автоматиццки переключать.
И САМОЕ ГЛАВНОЕ! НА на опеннете никто на это пост до сих пор не ответил :-)
Всем Респект и уважуха! Я думаю мы осилим этот фаир!
Неответили потому что там там профессионалы своё время не хотят тратить, а чайникам (их там ой как много) это не дано. Они галку только в Windows firewall поставить могут. Последний прикол (не opennet) был в том, что блокировать пинг это круто и защищает от атак. Я ржал.

А разделять трафик зачем? Учёт? Список IP-Сетей в таблицу и делов то.

Добавлено: 2007-06-27 12:47:41
Alex Keda
[offtop]
люди, а кто таблицы в файрволле юзает?
Может кто статью бы накропал по теме - с реальным применением - про деление сетей, траффика и т.п. - а то мне вроде как применить это некуда а в чистой теории невъезжаю :(
[/offtop]

Добавлено: 2007-06-27 13:43:17
reshekpc
ЭЭЭЭЭЭЭ братку! про таблицы я тебе ночью отпишусь! Рульная тема!