IPB

Здравствуйте, гость ( Вход | Регистрация )

 Forum Rules ПРАВИЛА ФОРУМА. ЧИТАТЬ ВСЕМ !
> ipfw + natd
cub0
1.09.2003 - 10:10
Сообщение #1



Гость










Добрый день!
Возникли некоторые вопросы, прошу помочь.
Сеть у меня такая:

Код
Локалка --------/   FreeBSD    /----------- Провайдер
192.168.0.0/24                   195.239.210.0/26
              rl0                        ed0
         192.168.0.1     195.239.210.50       195.239.210.1

Что я хочу:
1) Обезопасить роутер.
2) Чтобы пользователи локальной сети принудительно ходили в интернет через Squid,
чтоб у них работала аська.
3) Чтоб на внутреннем интерфейсе было доступно: DNS, HTTP, SMTP, POP3, telnet, ssh
4) Наружу - DNS, ssh

Сначала хотел все быстро предварительно настроить (нужно было срочно сделать
замену упавшему роутеру с линуксом), а потом уже ручки крутить. Взял за основу
rc.firewall из статьи Кузьмича на www.hub.ru - крутил, вертел, не смог заставить
работать (кроме как add allow all from any to any). Начал разбираться, наткнулся
на статью SergeyKa, взял за основу его список правил.

Т.к. я начал делать на natd, решил с ним и разобраться до конца, да и ipnat у меня
сразу не заработал - он почему-то преобразовывал адреса из локалки в 195.239.210.1 (по ipnat -l),
а не в 195.239.210.50. Что у меня не правильно?

rc.conf:
defaultrouter="195.239.210.1"
gateway_enable="YES"
ifconfig_ed0="inet 195.239.210.50 netmask 255.255.255.192"
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
kern_securelevel_enable="NO"
linux_enable="YES"
sshd_enable="YES"
firewall_enable="YES"
firewall_script="/usr/local/billing/rc.firewall"
firewall_quiet="NO"
firewall_flags=""
ipnat_enable="YES"
ipnat_program="/sbin/ipnat -CF -f"
ipnat_rules="/etc/ipnat.rules"
ipnat_flags=""

ipnat.rules
map ed0 0/0 -> 0/32 proxy port ftp ftp/tcp
map ed0 192.168.0.0/24 -> 195.239.210.50/26 proxy port ftp ftp/tcp
map ed0 192.168.0.0/24 -> 195.239.210.50/26

После этого я выключил ipnat и включил natd
В список правил добавил divert. Только это правило пришлось разместить
перед правилом, пропускающим established. Правильно?

rc.firewall:
fwcmd="/sbin/ipfw"

LanOut="ed0"
IPOut="195.239.210.50"

LanIn="rl0"
NetIn="192.168.0.0/24"

MyIP1="192.168.0.24"

${fwcmd} -q -f flush
${fwcmd} -q add pass all from any to any via lo0

# NAT
${fwcmd} -q add divert natd ip from any to any via ${LanOut}

# Пропускаем все соединения с установленным битом RST или ACK
${fwcmd} -q add pass tcp from any to any established via ${LanOut}
# Разрешаем все пакеты выходящие из внешнего интерфейса с внешнего IP
${fwcmd} -q add pass ip from ${IPOut} to any out xmit ${LanOut}


# Stop private networks (RFC1918) from entering the outside interface.
${fwcmd} -q add deny ip from 192.168.0.0/16 to any in via ${LanOut}
${fwcmd} -q add deny ip from 172.16.0.0/12 to any in via ${LanOut}
${fwcmd} -q add deny ip from 10.0.0.0/8 to any in via ${LanOut}

# www только по заданным интерфейсам - остальные через squid
${fwcmd} -q add pass tcp from ${MyIP1} to any 20,21,22,23,80,443
${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP1}

# Forwarding to Squid
${fwcmd} -q add fwd 127.0.0.1,3128 tcp from ${NetIn} to any http via ${LanIn}

# Запрещаем - FTP, терминал, Squid - снаружи
${fwcmd} -q add deny tcp from any to any 20,21,23,3128 in via ${LanOut}

# Запрещаем - www, FTP, терминал - изнутри
${fwcmd} -q add deny tcp from any to any 20,21,22,23,80,443 in via ${LanIn}
# Это для чего?
${fwcmd} -q add deny tcp from any to any 8000-8104 in via ${LanIn}

# Разрешаем ssh, почту, DNS
${fwcmd} -q add pass tcp from any to any 22,25,110 via ${LanOut}
${fwcmd} -q add pass tcp from any 22,25,110 to any via ${LanOut}
${fwcmd} -q add pass udp from any to any 53 via ${LanOut}
${fwcmd} -q add pass udp from any 53 to any via ${LanOut}

${fwcmd} -q add pass all from any to any via ${LanIn}

# Доступен сервер www из внешнего мира
#${fwcmd} -q add pass tcp from ${IPOut} 80 to any via ${LanOut}
#${fwcmd} -q add pass tcp from any to ${IPOut} 80 via ${LanOut}

#ICMP
${fwcmd} -q add allow icmp from any to ${IPOut} in via ${LanOut} icmptype 0,3,4,
${fwcmd} -q add allow icmp from any to ${NetIn} in via ${LanOut} icmptype 0,3,4,
${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} icmptype 3,8,1
${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} frag
${fwcmd} -q add deny log icmp from any to any in via ${LanOut}
${fwcmd} -q add reject log icmp from any to any out via ${LanOut}

${fwcmd} -q add deny log all from any to any
Go to the top of the page
+
 
Reply to this topicStart new topic
Ответов(1 - 5)
DIeMONd
1.09.2003 - 10:26
Сообщение #2


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 3
Регистрация: 5.06.2003

Пользователь №: 11713




Мне тоже интересно но у меня на фре ещё стоят всякие сервисы, как сделать так, чтобы порты форвардились с freebsd на windows? т.е. чтобы я мог на виндовс создать сервер и заходя на ип адрес freebsd виделся сервер винды?
User is offlineProfile Card PM
Go to the top of the page
+
SergeyKa
1.09.2003 - 11:54
Сообщение #3



The NetWork Assistant
Group Icon
Группа: Старейшины
Сообщений: 342
Регистрация: 18.02.2003

Пользователь №: 6704




cub0

1) Проблема с ipnat где то на поверхности - проверяй еще раз
все что написал - правельно - должно работать - скорее всего проблема из за невнимательности.
ipnat -l (должен выводить примерно следующее)
MAP 192.168.0.21 2609 <- -> 195.239.210.50 2609 [217.16.28.102 80]

2) natd от ipnat отличается в первую очередь моментом переписывания заголовков.

natd - переписывает заголовок в момент передачи ему пакета из файрвол, а ipnat делает это автоматически при поступлении пакета на внешний интерфейс. (подробнее смотри тут => http://www.sergeyka.h10.ru/fw_io.html )

3) Встречный вопрос - с natd работает?

DIeMONd
У тебя ситуация другая - тебе сюда :) -http://www.opennet.ru/tips/info/467.shtml
User is offlineProfile Card PM
Go to the top of the page
+
cub0
2.09.2003 - 12:46
Сообщение #4



Гость










1) Хорошо, попробую еще раз (может это из-за того, что у меня в ядре IPFILTER не включено?). А может и не буду пробовать, поскольку см. 3)
2) Перечитал еще раз http://www.sergeyka.h10.ru/fw_io.html и совсем запутался - там про ipnat все правильно?
По-моему должно быть:
out xmit rl0
Код
ipfw add 90 pass log tcp from any to any out xmit rl0
Смотрим лог
195.195.95.15:4244 80.15.235.143:80 out via rl0

out recv rl0
Код
ipfw add 90 pass log tcp from any to any out recv rl0
Смотрим лог
-80.15.235.143:80 192.168.10.98:3182 out via rl1
+195.195.95.15:???? 192.168.10.98:3182 out via rl1

in recv rl0
Код
-ipfw add 90 pass log tcp from any to any out recv rl0
+ipfw add 90 pass log tcp from any to any in recv rl0
Смотрим лог
-80.15.235.143:80 192.168.10.98:3182 in via rl0
+80.15.235.143:80 195.195.95.15:4244 in via rl0

3) С natd работает

Т.е.
rl1 - внутренний, rl0 - внешний. Правила будут срабатывать в этом порядке? Для ipnat:
in recv rl1 (здесь реальный адрес)
out recv rl1 (здесь подмененный ?)
out xmit rl0 (то-же правило, что и выше или нет??) (подмененный)

in recv rl0 (подмененный)
out recv rl0 (подмененный?)
out xmit rl1 (реальный)

Для natd нужно вставить divert в позиции:
in recv rl1 (здесь реальный адрес)
divert (после диверта попадет опять в fw на выходе?)
out recv rl1 (здесь подмененный ?)
out xmit rl0 (то-же правило, что и выше или нет??) (подмененный)

in recv rl0 (подмененный)
out recv rl0 (подмененный?)
divert (здесь или выше?)
out xmit rl1 (реальный)
Go to the top of the page
+
SergeyKa
3.09.2003 - 08:22
Сообщение #5



The NetWork Assistant
Group Icon
Группа: Старейшины
Сообщений: 342
Регистрация: 18.02.2003

Пользователь №: 6704




Цитата
out recv rl0
Код
ipfw add 90 pass log tcp from any to any out recv rl0
Смотрим лог
-80.15.235.143:80 192.168.10.98:3182 out via rl1
+195.195.95.15:???? 192.168.10.98:3182 out via rl1

Тут все правельно - тебя запутал интерфейс просто для файрвол правило считается провереным в тот момент когда пакет полностью ему соответствует - тоесть "пакет проходящий через интерфейс" - отсюда в правилах rl0 а в логах rl1

Цитата
in recv rl0
Код
-ipfw add 90 pass log tcp from any to any out recv rl0
+ipfw add 90 pass log tcp from any to any in recv rl0

Тут опечатка - ) виноват - исправил. Спасибо что заметил.
Цитата
Смотрим лог
-80.15.235.143:80 192.168.10.98:3182 in via rl0
+80.15.235.143:80 195.195.95.15:4244 in via rl0

Все верно нат уже свершил свое темное дело :) Тут как раз сработала оговорка - "ipnat работает автоматически", кстати за это данную связку используют не часто и правила отличаются от правил с natd
User is offlineProfile Card PM
Go to the top of the page
+
SergeyKa
3.09.2003 - 08:35
Сообщение #6



The NetWork Assistant
Group Icon
Группа: Старейшины
Сообщений: 342
Регистрация: 18.02.2003

Пользователь №: 6704




cub0
По пункту 3 - если често - не пробовал :)
Все что касается связки ipfw+ipnat скопировано с консоли с изменением реальных IP адресов. А потом уже делались соответствующие выводы :)
User is offlineProfile Card PM
Go to the top of the page
+
Реклама

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



- Текстовая версия Сейчас: 29.03.2024 - 13:53
]]> ]]>
]]> Яндекс.Метрика ]]>