HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-12 14:49:34

Уважаемые гуру обясните неучу как сделать что бы пользователи в обход сквида могли получать и отправлять почту по 25 и 110 портам..... Схема проста: настроил связку FreeBSD+Squid+Sams+Rejik по логину и паролю по статье http://www.lissyara.su/articles/freebsd ... ams+rejik/ и к нему прекрутил IPFW по статье http://www.lissyara.su/articles/freebsd/tuning/ipfw/, для использования 25 и 110 портов на использование почты я прочитал что необходимо скомпилировать ядро с поддержкой фаервола что бы он собственно перенаправлял запросы...

При всём при этом интернет работает отправляя запросы пользователей на 3128 порт аутентифицируясь по логину и паролю тут всё нормально, а вот Outlook не могу никак прекрутить, я так понимаю нужно прописать правила перенаправляющие порты 25 и 110...

Вот мои конфиги по IPFW:

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

cat /etc/rc.conf

ifconfig_msk0="inet 195.158.31.6  netmask 255.255.255.252"        -(Это IP - в инет)
ifconfig_rl0="inet 192.168.10.250  netmask 255.255.255.0"            -(Это IP - в локалку)
firewall_enable="YES"
firewall_script="/usr/local/etc/rc.d/ipfw.sh"
firewall_type="SIMPLE"
natd_enable="YES"
natd_interface="msk0"
firewall_quiet="NO"
gateway_enable="YES"

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

cat /usr/local/etc/rc.d/ipfw.sh

#!/bin/sh

ipfw="/sbin/ipfw -q"

local="192.168.10.0/24"
net="195.158.31.6"

oif="rl0"
iif="msk0"

${ipfw} -f flush

${ipfw} add check-state

${ipfw} add 1 allow ip from any to any via lo0

${ipfw} add 2 allow tcp from any 22 to any
${ipfw} add 3 allow tcp from any to any 22

${ipfw} add 4 deny ip from any to 127.0.0.0/8
${ipfw} add 5 deny ip from 127.0.0.0/8 to any

${ipfw} add 6 deny ip from any to 10.0.0.0/8 in via ${iif}
${ipfw} add 7 deny ip from any to 172.16.0.0/12 in via ${iif}
${ipfw} add 8 deny ip from any to 192.168.0.0/16 in via ${iif}
${ipfw} add 9 deny ip from any to 0.0.0.0/8 in via ${iif}

${ipfw} add 10 deny ip from any to 169.254.0.0/16 in via ${iif}
${ipfw} add 11 deny ip from any to 240.0.0.0/4 in via ${iif}
${ipfw} add 12 deny icmp from any to any frag

${ipfw} add 13 deny log icmp from any to 255.255.255.255 in via ${iif}
${ipfw} add 14 deny log icmp from any to 255.255.255.255 out via ${iif}

${ipfw} add 15 fwd 127.0.0.1,3128 tcp from ${local} to any 80 via ${iif}

${ipfw} add 16 divert natd ip from ${local} to any out via ${iif}
${ipfw} add 17 divert natd ip from any to ${net} in via ${iif}

${ipfw} add 18 deny ip from 10.0.0.0/8 to any out via ${iif}
${ipfw} add 19 deny ip from 172.16.0.0/12 to any out via ${iif}
${ipfw} add 20 deny ip from 192.168.0.0/16 to any out via ${iif}
${ipfw} add 21 deny ip from 0.0.0.0/8 to any out via ${iif}

${ipfw} add 22 deny ip from 169.254.0.0/16 to any out via ${iif}
${ipfw} add 23 deny ip from 224.0.0.0/4 to any out via ${iif}
${ipfw} add 24 deny ip from 240.0.0.0/4 to any out via ${iif}

${ipfw} add 25 allow tcp from any to any established

${ipfw} add 26 allow ip from ${net} to any out xmit ${iif}

${ipfw} add 27 allow udp from any 53 to any via ${iif}
${ipfw} add 28 allow udp from any to any 53 via ${iif}
${ipfw} add 29 allow udp from any to any 123 via ${iif}
${ipfw} add 30 allow tcp from any to ${net} 21 via ${iif}

${ipfw} add 31 allow tcp from any to ${net} 49152-65535 via ${iif}

${ipfw} add 32 allow icmp from any to any icmptypes 0,8,11
${ipfw} add 33 allow tcp from any to ${net} 80 via ${iif}
${ipfw} add 34 allow tcp from any to ${net} 143 via ${iif}
${ipfw} add 35 allow tcp from any to ${net} 110 via ${iif}
${ipfw} add 36 allow tcp from any to any via ${oif}
${ipfw} add 37 allow udp from any to any via ${oif}
${ipfw} add 38 allow icmp from any to any via ${oif}
${ipfw} add 39 deny ip from any to any
${ipfw} add 40 allow tcp from any to ${net} 25 via ${iif}
Гуглил, искал везде все пишут по разному что только не пробовал не получается, помогите пожалуйста, проксю повесил на работе инет идёт ,а начальство требует дурацкий Outlook почту ещё чтоб фурычала.... Благодарю за ответ !!
Последний раз редактировалось f_andrey 2011-12-13 1:12:00, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения, и оформляйте его по человечески.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
kharkov_max
капитан
Сообщения: 1809
Зарегистрирован: 2008-10-03 14:56:40

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение kharkov_max » 2011-12-12 15:39:27

Squid для Вашей задачи не при чем.

Вам нужно настроить в фаерволе NAT - про это есть куча статей.
Условно правила любого фаервола можно разделить так:
1. Определение переменных (таблиц)
2. Правила нормализации трафика
3. Правила Nat, редиректа.
4. Правила фильтрации.

Вам нужно разобраться с 3 и 4.
Для начала включите в 4 allow all to all и настройте 3 пунк, когда заработает включайте 4й.
По сути Вам нужно дать внутренней сети Nat по портам 25 и 110.

Если Вы новичек - лучше начните с PF фаервола, он проще и возможно устроит Вас на 100%.
Если нужен именно ipfw - то разбирайтесь от простого к сложному, не нужно сразу писать много правил, делайте все постепенно.

koklushkin
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-06-12 11:45:07

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение koklushkin » 2011-12-12 18:49:24

squid к 110 и 25 порту отношения не имеет.
Резреши все всем с минимальным правилом и настрой nat что бы ходила почта, а потом крути под свои нужды.

P.S. PF рулит. Имхо!

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-12 19:19:42

Спасибо за направление на изыскание, будем пилить в этом направлении! Но не могли бы вы поделиться конкретными примерами к сожалению ввиду ограниченности времени, на верно не успею, а мне осталось только пробросить 25 и 110 порты для Outlook......

koklushkin
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-06-12 11:45:07

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение koklushkin » 2011-12-12 20:56:38

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

ext_if="em0"
int_if="em1"

int_net="{10.0.0.0/8}"
host2="10.48.245.5"

tcp_out="20,21,25,110,443,465,3128"

table <bruteforce> persist file "/var/log/bruteforce"

set block-policy drop
set skip on lo
set timeout { frag 10, tcp.established 3600 }
scrub in all no-df fragment reassemble
scrub out all random-id max-mss 1400

nat on $ext_if from $int_net to !(self) -> ($ext_if)

block all

antispoof log quick for {lo0, $int_if, $ext_if}

block drop quick from <bruteforce>

pass quick on $int_if inet proto tcp from $int_net to any port {$tcp_out} modulate state

pass in on $int_if  proto udp from $int_net  to any   port domain   queue qdns keep state

pass in on $int_if proto tcp from $host2 to $int_if  port ssh  queue ( qssh, qack ) synproxy state (max-src-conn-rate 5/360, overload <bruteforce> flush global)

pass out on $ext_if   modulate state
ядро

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

device pf
device pflog
device pfsync
для примера хватит) будут вопросы спрашивай!

Аватара пользователя
sadchok
сержант
Сообщения: 271
Зарегистрирован: 2011-10-13 10:40:54
Откуда: Алтайский край

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение sadchok » 2011-12-13 6:07:05

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

Gateway# cat /etc/rc.ipfw1
#!/bin/sh
 fwcmd="/sbin/ipfw"
 ${fwcmd} -f flush 
# VAR
 if_dmz="vr0"                   # внешний сетевой интерфейс
 ip_dmz="172.16.0.2"            # ip внешнего сетового интерфейса
 if_cor="rl1"                   # сетевой интерфейс корпоративной сети
 ip_cor="192.168.24.0/24"       # корпоративная сеть
 if_lan="rl0"                   # сетевой интерфейс локальной сети
 ip_lan="172.16.24.0/24"        # наша подсетка

# Для себя любимого

 ${fwcmd} add check-state 
 ${fwcmd} add allow ip from me to any keep-state via ${if_dmz}
 ${fwcmd} add allow ip from me to any keep-state via ${if_cor}
 ${fwcmd} add allow ip from me to any  
 
# Consultant

 ${fwcmd} add allow ip from 172.16.24.0/24 to 192.168.24.101 via ${if_cor}  
 ${fwcmd} add allow ip from 192.168.24.101 to 172.16.24.0/24 via ${if_cor}

# proxy
 
 ${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.24.0/24 to not me dst-port 80 in recv ${if_lan}

# NAT

 ${fwcmd} nat 1 config log if ${if_cor} reset same_ports redirect_addr 172.16.24.2 192.168.24.2
 ${fwcmd} add nat 1 ip from any to any via ${if_cor}
The brain can not be found. Runs the software emulation

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-14 13:14:18

Спасибо всем за ответ буду пробовать !!!

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 12:48:20

С добавление правил моему конфигу заработала почта через Outlook mail.ru, yandex.ru, icq, mail agent:
Тоесть обращение на 80 идёт на обработку Squid 3128, а всё остальное через нат....

${ipfw} add 41 allow all from ${local} to me 3128
${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80

${ipfw} add 43 allow tcp from any to ${net} 995 via ${iif}

${ipfw} add 44 allow tcp from any to ${net} 2041 via ${iif}
${ipfw} add 45 allow tcp from any to ${net} 2042 via ${iif}

${ipfw} add 46 allow tcp from any to ${net} 5190 via ${iif}

${ipfw} add 48 allow tcp from any to ${net} 465 via ${iif}
${ipfw} add 49 allow tcp from any to ${net} 993 via ${iif}
${ipfw} add 50 allow tcp from any to ${net} 20 via ${iif}

${ipfw} add 51 allow tcp from any to ${net} 1024 via ${iif}
${ipfw} add 52 allow tcp from any to ${net} 443 via ${iif}



Осталось пробросить Торрент и Скайп....
Погуглив нашол мануал как пробросить на закачку и раздачу Торрент:

maks="192.168.10.193" (это я)
iif="msk0" (это моя сетевая которая смотрит наружу в Интернет)
inif="192.168.10.250" (это локальный адресс моего сервака с Прокси)


${ipfw} add allow udp from any to ${maks} 30341 in via ${iif}
${ipfw} add allow udp from any to ${maks} 30341 out via ${inif}
${ipfw} add allow udp from ${igor} 30341 to any in via ${inif}


rc.conf

natd_flags=»-dynamic -f /etc/natd.conf

cat /etc/natd.conf

redirect_port udp 192.168.10.193:30341 30341


По совету мануала это порт (30341) был прописан в Торрент клиенте на Винде. Или есть какие то специфические настройки Торрент клиента для взаимодействия через Фаер.....?
Данная процедура не сработала к сожалению.....

как можно реализовать Торрент на закачку и раздачу и Скайп тоже, прошу Вашей помощи..... Желательно с примерами если можно.......Help ! :st:

Аватара пользователя
kharkov_max
капитан
Сообщения: 1809
Зарегистрирован: 2008-10-03 14:56:40

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение kharkov_max » 2011-12-16 13:05:21

Если по простому ...

Повесь на Squid порты 80 443 8080 8081 и от себя можешь парочку добавить.

1. Skype через Squid.
2. Торрент на скачку через Nat - дай полный NAT тому компу у которого стоит торент клиент (по всем портам). На сколько я понимаю это твой комп.

А на раздачу нужно порты пробрасывать.
Тут или без раздачи сидеть или учи IPFW. (сорбственно зачем на работе что то раздавать ?) На месте Вашего начальства узнав про такое я бы Вас уволил.
Если будешь учить ipfw - используй сразу ядерный NAT а не natd.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1809
Зарегистрирован: 2008-10-03 14:56:40

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение kharkov_max » 2011-12-16 13:07:59

jenks писал(а):С добавление правил моему конфигу заработала почта через Outlook mail.ru, yandex.ru, icq, mail agent:
Тоесть обращение на 80 идёт на обработку Squid 3128, а всё остальное через нат....
Фаер супер - зачем тебе тогда Squid ?
Не проще ли всех пустить через NAT ?

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 13:10:04

Буду пробывать спасибо!

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 13:12:58

Я пускаю Юзеров через Логин пароль через сквид а админю через Sams, удобно через него, а всё остальное через нат вот Торрент иСкайп остало только пробросить.....

Гость
проходил мимо

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение Гость » 2011-12-16 13:13:16

kharkov_max писал(а): Условно правила любого фаервола можно разделить так:
1. Определение переменных (таблиц)
2. Правила нормализации трафика
3. Правила Nat, редиректа.
4. Правила фильтрации.
Вот она, вот она схема фаервола моей мечты!!! Спасибо тебе, товарищ!

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 13:19:55

Уважаемый kharkov_max вы не могли бы привести пример правила которое даёт полный НАТ как вы написали ниже на скачку торрента, об этом я как то и не подумал..

(2. Торрент на скачку через Nat - дай полный NAT тому компу у которого стоит торент клиент (по всем портам). На сколько я понимаю это твой комп.)

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 13:29:10

Спасибо вам ОГРОМНЕЙШЕЕЕ! kharkov_max Скайп повесил подредактировав строку

${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80

изменил на

${ipfw} add 42 fwd 127.0.0.1,3128 tcp from ${local} to any dst-port 80,443

осталось торрент....

Аватара пользователя
kharkov_max
капитан
Сообщения: 1809
Зарегистрирован: 2008-10-03 14:56:40

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение kharkov_max » 2011-12-16 13:37:49

jenks писал(а):Я пускаю Юзеров через Логин пароль через сквид а админю через Sams, удобно через него, а всё остальное через нат вот Торрент иСкайп остало только пробросить.....
Обрати внимание на то что ты "пытаешься" пускать пользователей через прозрачный Squid - для прозрачного Squid авторизация по большому счету не нужна.
Т.е.
Пользователь идет идет в инет на сайт висящий на 80 или 443 порту, фаер ловит обращение по этим портам и заворачивает трафик в Squid на порт 3128, далее Squid от себя выкачивает страничку и отдает ее пользователю. Для пользователя это выглядит не заметно (он не настраивает в браузере подключение к Squid и не вводит логин и пароль) - пользователь думает что ходит в инет напрямую.

Что сделал ты - ты пустил юзеров через Squid только по 80 порту, а все остальное пустил через NAT.
Ведь сайты в инете работают не только на 80 портах, а как же 8080 или 8081 или 443 и т.д ?
Т.е. задачу руководства ты сделал на половину - я бы даже сказал что ни как не сделал ... Просто замылил им глаза (тебе должно быть стыдно ...)

Определись для начала зачем тебе или руководству нужен Squid (к примеру для подсчета трафика или для будущих правил по которым будут блокироваться сайты или данные, музыка/ файлы).

Если это так - то лучше:
1. Настроить не прозрачный Squid (на каждом клиенте в браузере или программе ICQ и т.д ) нужно будет указывать подключение к прокси. (в твоем фаере отключить правила fwd)
2. Выключи NAT по всем портам (т.е. ни кого не пускать в инет) - оставь Nat только на 25 и 110 портах (для почты).
3. Не используй ipfw - тебе PF за глаза хватит и он гораздо проще и понятнее для начинающих. Правила NAT и редиректа там делаются в 5 сек по одной строчке. Примеров в инете ВАЛОМ. А ты взял сложный фаер IPFW и не понимая принципов работы фаервола вообще пытаешься как то его "натянуть" ...

jenks
рядовой
Сообщения: 12
Зарегистрирован: 2011-12-12 14:12:27

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение jenks » 2011-12-16 14:11:19

Я настроил связку Squid+Sams+Rejik и авторизация в Шаблоне Sams поставил по Логину и паролю (NSCA) и при запуске браузера он требует Логин и Пароль, а если мы не прописываем прокси вобще или прописываем его на 80 или 8080 порты то он не работает с натом, соответственно и интернет не работает , у меня не прозрачный прокси стоит в том то и дело а все запросы идут на сквид....

Аватара пользователя
kharkov_max
капитан
Сообщения: 1809
Зарегистрирован: 2008-10-03 14:56:40

Re: HELPPP! Связка FreeBSD+IPFW+NAT+Squid !!

Непрочитанное сообщение kharkov_max » 2011-12-16 14:28:46

Вроде как твои слова....
а всё остальное через нат....
Разберись по шагам как работает то что ты настроил.

На данный момент из того что ты показал в squid попадает трафик клиента который хочет идти в инет на сайты по портам 80 и 443