здравствуйте. так случилось что админа в организации не стало, а меня воткнули на его место. С freebsd я новичек, знаю только азы. помер HDD на сервере. Конечно заменил, установил freebsd с пересборкой ядра +pf+squid+openvpn. все работает кроме сквида. уже 2 недели пытаюсь найти решение в интернете да на форумах но пока безуспешно.
pf успешно направляет на squid, а что дальше происходит не пойму.
если оставляю http_port 3128, то на локальной машине с использованием прокси все работает
ставлю прозрачное проксирование http_port 3128 intercept и тишина. http ресурсы недоступны.
конфиги pf u squid удалось вытащить со старой системы. Возможно на новой версии freebsd u squid изменился синтаксис или какие команды..
uname -a
FreeBSD proxy 11.1-RELEASE FreeBSD 11.1-RELEASE #0: Sat Aug 19 15:52:29 MSK 2017 strannik@proxy:/usr/obj/usr/src/sys/GENERIC1 amd64
# squid -v
Squid Cache: Version 3.5.26
и странно что не могу поставить squid 3.5.8, доступен только 3.5.26
squid
acl localnet src 192.168.2.0/24
acl localnet_21 src 10.0.0.0/16
acl localnet_22 src 10.1.22.0/24
acl localnet_23 src 10.1.23.0/24
acl localnet_24 src 10.1.24.0/24
acl localnet_39 src 10.1.39.0/24
acl localnet_40 src 10.1.40.0/24# Порт SSL для подключений по HTTPS-протоколу
acl SSL_ports port 443# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#acl RestrictedDomains dstdomain "/usr/local/etc/squid/AccessLists/url_block.txt"
#acl RestrictedDomains2 dstdomain "/usr/local/etc/squid/AccessLists/url_block_2.txt"
#acl white url_regex -i "/usr/local/etc/squid/AccessLists/white.txt"
acl AdDomains url_regex -i "/usr/local/etc/squid/AccessLists/url_porno.txt"http_access allow manager localhost
http_access allow localnet_21 manager
http_access deny manager# Запретить доступ к портам, отсутствующим в списке выше
http_access deny !Safe_ports
# Запретить метод CONNECT не на SSL-порт
http_access deny CONNECT !SSL_portshttp_access deny AdDomains
# запрещаем доступ к листу 1
http_access deny RestrictedDomains# открываем этим подсетям доступ ко всему остальному
http_access allow localnet
http_access allow localnet_21
http_access allow localnet_22
http_access allow localnet_24
#http_access allow localnet_39
#http_access allow localnet_40#закрываем доступ к листу 2
http_access deny RestrictedDomains2# остальное делаем доступно для подсетей ниже
#http_access allow localnet_22
http_access allow localnet_23
http_access allow localnet_40# Последнее правило, блокирует все, что не было разрешено выше
http_access deny all
icp_access allow localnet
icp_access allow localnet_21
icp_access allow localnet_22
icp_access allow localnet_23
icp_access allow localnet_24
icp_access allow localnet_39
icp_access allow localnet_40icp_access deny all
http_port 3129
http_port 3128 intercept
#http_port 127.0.0.1:3128 options=NO_SSLv3:NO_SSLv2
#hierarchy_stoplist cgi-bin ?always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEERdelay_pools 2
#ограничение по скорости
delay_class 1 2
delay_parameters 1 -1/-1 256000/128000 #2mb/s
delay_access 1 allow localnet
delay_access 1 allow localnet_21
delay_access 1 allow localnet_22
delay_access 1 allow localnet_23
delay_access 1 allow localnet_24
delay_access 1 allow localnet_39
delay_access 1 allow localnet_40delay_access 1 deny all
delay_class 2 2
delay_parameters 2 1280000/1280000 256000/256000
#delay_access 2 allow localnet_50
#delay_access 1 allow localnet_34
delay_access 2 deny alldelay_initial_bucket_level 50
forwarded_for transparent
via off
cache_mem 256 MB
maximum_object_size_in_memory 64 KB
memory_replacement_policy lru
cache_replacement_policy lrucache_dir ufs /usr/local/squid/cache 4000 16 256
store_dir_select_algorithm least-loadmaximum_object_size 8 MB
cache_swap_low 90
cache_swap_high 95
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mtaccess_log /usr/local/squid/log/access.log squid
cache_log /usr/local/squid/log/cache.log
cache_store_log /usr/local/squid/log/store.log
pid_filename /var/run/squid/squid.pidstrip_query_terms off
refresh_pattern ^ftp: &n... 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320# По умолчанию, приоритет отдается протоколу IPv6, что может привести к ошибкам соединения, если IPv6 недоступен
dns_v4_first on
shutdown_lifetime 1 secondsvisible_hostname proxy.orlyonok.local
check_hostnames on
coredump_dir /usr/local/squid/cache
поубирал из конфига кучу сетей чтоб не мешались.
еще момент: squid ругался на строку hierarchy_stoplist cgi-bin ?
я её закоментировал и добавил
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
не уверен что правильно.
ниже конфиг pf
\#-------------------------Интерфейсы-------------------------#
prov="re2"#Cisco
int_5="re0"#Интерфейсы ПК
int_16="re1"#-------------------------Адреса-------------------------#
srvprov="188.128.х.х"srv_5="10.5.1.44"
#Адреса интерфейсов ПК
srv_16="192.168.2.6"
#-------------------------Подсети-------------------------#
#Обобщенные подсети для ПК и WiFi
lan_pk="10.0.0.0/8"#OpenVPN
lan_vpn="10.2.0.0/24"
lan_vpnEv="12.0.1.0/24"
lan_vpnOHO="10.3.0.0/16"#Cisco
lan_5="10.5.1.0/24"#Подсети ПК
table <lan_r> {10.1.22.0/24, !10.1.22.10, !10.1.22.11, !10.1.22.20, !10.1.22.56, 10.1.23.0/24, 10.1.24.0/24, 10.1.39.0/24, 10.1.40.0/24}
table <lan_all> {10.1.22.0/24, 10.1.23.0/24, 10.1.24.0/24, 10.1.25.0/24, 10.1.26.0/24, 10.1.27.0/24, 10.1.28.0/24, 10.1.29.0/24, 10.1.30.0/24, 10.1.31.0/24, 10.1.32.0/24, 10.1.33.0/24, 10.1.34.0/24, 10.1.35.0/24, 10.1.36.0/24, 10.1.37.0/24, 10.1.38.0/24, 10.1.40.0/24, 10.1.41.0/24, 10.1.42.0/24, 10.1.43.0/24, 10.1.44.0/24, 10.1.45.0/24, 10.1.46.0/24, 10.1.47.0/24, 10.1.48.0/24, 10.1.49.0/24, 10.1.52.0/24, 10.1.53.0/24, 10.54.0.0/16, 10.20.30.0/24}lan_16="192.168.2.0/24"
lan_21="10.0.0.0/16"
lan_22="10.1.22.0/24"
lan_23="10.1.23.0/24"
lan_24="10.1.24.0/24"
lan_39="10.1.39.0/24"
lan_40="10.1.40.0/24"
#-------------------------Порты-------------------------#
port_tcp="{21, 22, 25, 53, 80, 81, 88, 110, 123, 143, 443, 445, 465, 587, 993, 1051, 1540, 1541, 1560:1591, 3110, 3128, 3129, 3000, 3333, 3389, 3690, 5051, 5222, 5938, 7779, 8080, 8090, 9000, 13000, 13005}
port_udp="{22, 25, 53, 67, 68, 110, 123, 1184, 3000:3003, 3110, 7000, 7779, 8000:8150, 9000:9150}"
port_proxy="{80}"
port_ext="{1024, 1184, 3690}"
port_video="{4444, 4445}"#-------------------------Адреса халявщиков)-------------------------#
#Открываем все порты
ip_allp="{192.168.2.22, 192.168.2.28, 10.1.22.10, 10.1.22.11, 10.1.22.49, 10.1.22.51, 10.1.22.55, 10.1.22.56, 10.1.22.61, 10.1.22.66, 10.1.22.70, 10.1.22.71, 10.1.22.75, 10.1.22.90, 10.1.22.101, 10.1.22.102}
#для тех кто не на прокси
ip_np="{10.1.32.2, 10.1.32.3, 10.1.45.10, 10.1.22.10, 10.1.22.11, 10.1.22.49, 10.1.22.51, 10.1.22.55, 10.1.22.56}#-------------------------Дополнительные макросы-------------------------#
#Разрешенные типы icmp сообщений
allowed_icmp_types="{echoreq, unreach}"#Cписок немаршрутизируемых адресов
non_route_nets_inet="{127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, 240.0.0.0/4}"#-------------------------Сам файерволл-------------------------#
#DDOS secure)
set block-policy drop#Не проверяем на локальной петле
set skip on lo0#Изменяем время для состояния установленного tcp соединения, которое по-умолчанию чересчур большое (24часа).
set timeout {frag 10, tcp.established 3600}#Собирать пакеты перед отправкой
scrub in all#Разрешаем ходить в инет через нат
nat on $prov inet from $lan_16 to any -> $prov #2 диапазон с серверамиnat on $prov inet from $lan_21 to any -> $prov #ОИТ
nat on $prov inet from $lan_22 to any -> $prov #У
nat on $prov inet from $lan_23 to any -> $prov #Гя
nat on $prov inet from $lan_24 to any -> $prov #Г
nat on $prov inet from $lan_39 to any -> $prov #В
nat on $prov inet from $lan_40 to any -> $prov #Ф
#Перенаправляем на прокси
#rdr on $int_16 proto tcp from <lan_r> to any port $port_proxy -> $srv_16 port 3128
rdr on $int_16 proto tcp from $lan_39 to any port $port_proxy -> $srv_16 port 3128rdr on $prov proto tcp from any to $srvprov port 3690 -> 10.0.0.255 port 3690
#-------------------------Правила фильтрации-------------------------#
# Блокируем всяких нехороших людей стандартный антиспуфинг средствами pf.
antispoof log quick for lo0
antispoof log quick for $int_16
antispoof log quick for $prov#-------------------------Внешние настройки-------------------------#
#Блокируем все входящие на внешнем интерфейсе
block in on $prov#Рубаем Мультикастовые рассылки (Данные, предназначенные для приемом группой машин. В отличие от unicast и broadcast)
block in on $prov from any to 240.0.0.0/4#Блокируем приватные сети на внешний интерфейс
block drop in quick on $prov from $non_route_nets_inet to any
block drop out quick on $prov from any to $non_route_nets_inet#Разрешаем пинги на внешний интерфейс
#pass in on $prov inet proto icmp all icmp-type $allowed_icmp_types
block in on $prov inet proto icmp all icmp-type $allowed_icmp_types
pass in on $prov inet proto icmp from {188.128.88.21, 87.226.226.242, 94.25.127.70} to $srvprov icmp-type $allowed_icmp_types#Разрешаем открытые порты на внешнем интерфейсе
pass in on $prov inet proto {tcp, udp} from any to any port $port_ext flags S/SA keep state
pass in on $prov inet proto {tcp, udp} from any to any port $port_video flags S/SA keep state#Разрешить все исходящие на внешнем интерфейсе
pass out on $prov keep state
#-------------------------VPN-------------------------#
#block on tun0 from {10.2.0.5, 10.2.0.6, 10.2.0.9, 10.2.0.10, 10.2.0.13, 10.2.0.14} to any
pass in log quick on tun0 from any to any keep state
pass out log quick on tun0 from any to any keep state
#-------------------------Внутренние настройки-------------------------#
# Блокируем все входящие на внутр. интерфейсе
block in on $int_16 all#ICMP - Разрешаем пинговать
pass on $int_16 inet proto icmp all icmp-type $allowed_icmp_types
pass on $int_5 inet proto icmp all icmp-type $allowed_icmp_types#Для ната
pass in on $int_5 inet proto {tcp, udp} from $lan_5 to any flags S/SA keep state
pass in on $int_16 inet proto {tcp, udp} from $lan_16 to any flags S/SA keep state
#!!
pass in on $int_16 inet proto {tcp, udp} from $lan_21 to any flags S/SA keep state
pass in on $int_16 inet proto {tcp, udp, gre} from $ip_allp to any keep state#Temp squid
pass on $int_16 inet proto udp from any to any port 53 keep state
pass in on $int_16 inet proto tcp from $ip_np to any port 80 flags S/SA keep state#pass in on $int_16 inet proto {tcp, udp} from <lan_all> to any port { 25, 53, 110, 443, 465, 995} flags S/SA keep state
pass in on $int_16 inet proto {tcp, udp} from <lan_all> to any port { 25, 53, 80, 110, 443, 465, 995} flags S/SA keep state
pass in on $int_16 inet proto {tcp, udp} from $lan_39 to any port { 25, 53, 110, 443, 465, 995} flags S/SA keep state#Разрешаем открытые порты на внутр. интерфейсе
pass in on $int_16 inet proto tcp from $lan_pk to $srv_16 port $port_tcp flags S/SA keep state
pass in on $int_16 inet proto udp from $lan_pk to $srv_16 port $port_udp keep state#NTop
pass in on $int_16 inet proto tcp from $lan_21 to $srv_16 port 3000 keep state#-------------------------Маршрутизация между подсетями-------------------------#
#vpn
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_vpn to $lan_16 keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_vpnEv to $lan_16 keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_vpnOHO to $lan_16 keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_16 to $lan_vpn keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_16 to $lan_vpnEv keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_16 to $lan_vpnOHO keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_vpn to $lan_21 keep state
pass quick on {$int_16, tun0} proto {icmp, gre, tcp, udp} from $lan_21 to $lan_vpn keep state#lan 5
pass quick on $int_5 proto {icmp, gre, tcp, udp} from $lan_5 to $lan_5 keep statepass out on $int_16 keep state
pass out on $int_5 keep state
pf правила где?
> pf правила где?выложил.
подключил 1 машину через сквид, дабы получить логи.
access.log остался пустым
cache.log помимо множества сообщений имеет ошибки от этой машины
2017/08/24 14:27:27 kid1| PF open failed: (13) Permission denied
2017/08/24 14:27:27 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local=192.168.2.6:3128 remote=10.1.39.51:55945 FD 14 flags=33
2017/08/24 14:27:27 kid1| PF open failed: (13) Permission denied
2017/08/24 14:27:27 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local=192.168.2.6:3128 remote=10.1.39.51:55947 FD 14 flags=33
2017/08/24 14:27:29 kid1| PF open failed: (13) Permission denied
2017/08/24 14:27:29 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local=192.168.2.6:3128 remote=10.1.39.51:55957 FD 14 flags=33
2017/08/24 14:27:30| Pinger exiting.
2017/08/24 14:27:30 kid1| PF open failed: (13) Permission denied
2017/08/24 14:27:30 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local=192.168.2.6:3128 remote=10.1.39.51:55959 FD 14 flags=33чую что ответ на поверхности, но догадаться не могу, а знаний не хватает.
store.log так же пуст
> 2017/08/24 14:27:30 kid1| PF open failed: (13) Permission deniedв /etc/devfs.conf добавить права:
own pf root:squid
perm pf 0640и перезагрузить /etc/rc.d/devfs restart
>> 2017/08/24 14:27:30 kid1| PF open failed: (13) Permission denied
> в /etc/devfs.conf добавить права:
> own pf root:squid
> perm pf 0640
> и перезагрузить /etc/rc.d/devfs restartи побежали данные :) ох как я вам благодарен. большое большое спасибо. есть еще вопросик :)
PF states limit reached
на сервере часто выскакивает эта ошибка. пробовал увеличить
sysctl kern.ipc.nmbclusters=4073888
сначала эти сообщения пропали, но через пол дня появились вновь.
добавил в правило loader.conf, применил. все равно появляется примерно раз в 5 минут.
что с этим делать?
как я понял значение можно увеличивать вдвое, но система не принимает..ругается.
может ли быть так, что теперь, с нормальной работой сквида эти ошибки исчезнут?и еще один момент, если вы не против,
squid ругался на строку hierarchy_stoplist cgi-bin ?
я её закоментировал и добавил
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
не уверен что правильно.и ещё, все в кучу, чтоб не захламлять тему, мне удалось установить из портов версию сквида 3.5.29, но как я понял новая версия 3.5.8 . Почему-то её поставить я не могу . порты обновлял перед сборкой ядра, после сборки ядра. Почему не доступно не пойму.
обновлял так portsnap fetch && portsnap extract && portsnap fetch && portsnap update
pkg update
pkg autoremove
после сборки проделал то же и получил ответ
Ports tree is already up to date.
Где вы взяли 3.5.29? На офф сайте последняя версия 3.5.27 ;)
> Где вы взяли 3.5.29? На офф сайте последняя версия 3.5.27 ;)прошу прощения. я совсем запутался :)
Squid Cache: Version 3.5.26
а в инете про 3.5.8 пишут.. или он не для freebsd?
>> Где вы взяли 3.5.29? На офф сайте последняя версия 3.5.27 ;)
> прошу прощения. я совсем запутался :)
> Squid Cache: Version 3.5.26
> а в инете про 3.5.8 пишут.. или он не для freebsd?Ну исходники squid вроде мультиплатформенные.