ipfw + natd |
Здравствуйте, гость ( Вход | Регистрация )
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 |
DIeMONd |
1.09.2003 - 10:26
Сообщение
#2
|
Novice Группа: Пoльзователь Сообщений: 3 Регистрация: 5.06.2003 Пользователь №: 11713 |
Мне тоже интересно но у меня на фре ещё стоят всякие сервисы, как сделать так, чтобы порты форвардились с freebsd на windows? т.е. чтобы я мог на виндовс создать сервер и заходя на ип адрес freebsd виделся сервер винды?
|
SergeyKa |
1.09.2003 - 11:54
Сообщение
#3
|
The NetWork Assistant Группа: Старейшины Сообщений: 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 |
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 (реальный) |
SergeyKa |
3.09.2003 - 08:22
Сообщение
#5
|
The NetWork Assistant Группа: Старейшины Сообщений: 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 |
SergeyKa |
3.09.2003 - 08:35
Сообщение
#6
|
The NetWork Assistant Группа: Старейшины Сообщений: 342 Регистрация: 18.02.2003 Пользователь №: 6704 |
cub0
По пункту 3 - если често - не пробовал :) Все что касается связки ipfw+ipnat скопировано с консоли с изменением реальных IP адресов. А потом уже делались соответствующие выводы :) |
Реклама
|
|
|
|
|
|
Текстовая версия | Сейчас: 19.04.2024 - 14:27 |
|