1 (11.08.2014 19:59:06 отредактировано Shandor)

Здравствуйте,
Поставил CentOS7 на реальное железо (не виртуализации) Настроил сеть, пользователя для SSH
Ставлю squid - yum install squid

смотрю в /etc/squid/squid.conf  (Вижу всего 75 строк. Когда то, ставил на FreeBSD  было около 5 тыщ строк - Это вообще нормально ? : ) )
в Конф добавляю строку  acl localnet src 192.168.5.0/24
и http_port 192.168.5.251:3128
Если верить всяким статейкам, то этого, в принципе должно быть достаточно

Затем service squid start
Сквид вроде стартует, но по факту не работает

Подскажите пжалста, где, что я не так?
/etc/squid/squid.conf

#
# Recommended minimum configuration:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
acl localnet src 172.16.0.0/12    # RFC1918 possible internal network
acl localnet src 192.168.0.0/16    # RFC1918 possible internal network
acl localnet src 192.168.5.0/24
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
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

#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 192.168.5.251:3128

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern .        0    20%    4320

Сетевой интерфейс

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=
IPV6_DEFROUTE=
IPV6_FAILURE_FATAL=no
NAME=enp3s2
UUID=af318c70-f6e0-4f6a-8d16-2ffdc6dad071
ONBOOT=yes
HWADDR=00:11:85:04:14:DF
IPADDR0=192.168.5.251
PREFIX0=24
GATEWAY0=192.168.10.254
DNS1=192.168.10.202
IPV6_PEERDNS=
IPV6_PEERROUTES=
[root@localhost network-scripts]# ps -aux | grep squid
root      2760  0.0  0.1  85076  3016 ?        Ss   18:16   0:00 /usr/sbin/squid -f /etc/squid/squid.conf
squid     2762  0.0  0.8  99308 15388 ?        S    18:16   0:00 (squid-1) -f /etc/squid/squid.conf
squid     2763  0.0  0.0  27384  1228 ?        S    18:16   0:00 (logfile-daemon) /var/log/squid/access.log
root      3096  0.0  0.0 112640   936 pts/0    S+   18:57   0:00 grep --color=auto squid

2

Shandor пишет:

Затем service squid start
Сквид вроде стартует, но по факту не работает

В CentOS 7 теперь Systemd, так что почитайте документацию по Systemd и разберитесь как запускать unit`ы.

3

На счет конфига все правильно, это стандартный конфиг, такой был в 5,6 и теперь в 7-ой ветки.  По крайней мере я такой видел всегда).

На счет - squid не работает, видимо тебе надо посмотреть параметры firewalld. Или тупо его выключить на время:

systemctl stop firewalld.service

4

И да. Прокси не прозрачный же? Не забыл прописать его в браузере?

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

5

Или просто посмотреть логи сквида, чтобы понять в чём проблема и есть ли проблема со стартом сквида вообще.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

6

Shandor пишет:

Сквид вроде стартует, но по факту не работает

Это как? Что в логах? Что в службах?

7 (12.08.2014 09:39:03 отредактировано Cruiser78)

Shandor пишет:


Поставил CentOS7 на реальное железо (не виртуализации) Настроил сеть, пользователя для SSH
Ставлю squid - yum install squid

Затем service squid start
Сквид вроде стартует, но по факту не работает
....
Подскажите пжалста, где, что я не так?

Задам несколько простых вопросов:
1. Зачем Вам так много acl localnet src? У вас что, несколько локальных сетей к сквиду подключены? Или все-таки одна?
2. Какой физический смысл имеет запись:

acl localnet src 192.168.0.0/16
acl localnet src 192.168.5.0/24 

При явно очевидном условии, что первая сеть поглощает полностью вторую...

Но, ладно, это просто мусор, на саму работу сквида влияния не оказывающий.

3. теперь смотрим сюда:

http_access allow localhost manager
http_access deny manager

Что за acl такой с именем localhost? И кто такой manager?
Поэтому я бы добавил в Ваш конфиг, в самое его начало определение этих параметров. У меня сделано так:

acl manager proto cache_object
acl localhost src 127.0.0.1/32 

Далее, по настройке сетевого интерфейса:

IPADDR0=192.168.5.251
PREFIX0=24
GATEWAY0=192.168.10.254
DNS1=192.168.10.202

Вы в этом сильно уверены? Уверены, что хост имеющий адрес 192.168.5.251 в 24-й сети сможет достучаться до 192.168.10.254? У Вас один интерфейс на хосту или, все-таки два?
Далее, чтобы трафик пошел на сквид надо в правилах iptables нарисовать следующее перенаправление:

-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i br1 -p tcp -m multiport --dports 80,5190 -j REDIRECT --to-ports 3128 

Естественно, адреса и интерфейсы свои подставить.

8

Всем спасибо за ответы,
Действительно, я и представления не имел, что - "В CentOS 7 теперь Systemd"
А именно  "systemctl stop firewalld.service"
Пытался выключать его по старинке "service iptables stop"

Теперь буду фаервол смотреть.
А еще, есть ли смысл в антивирусе на шлюзе? или достаточно грамотно настроенного iptables?

9

Cruiser78

1. Зачем Вам так много acl localnet src? У вас что, несколько локальных сетей к сквиду подключены? Или все-таки одна?
2. Какой физический смысл имеет запись:
acl localnet src 192.168.0.0/16
acl localnet src 192.168.5.0/24

acl localnet src 192.168.0.0/16 По умолчанию уже была прописана в squid.conf 

http_access allow localhost manager
http_access deny manager

Что за acl такой с именем localhost? И кто такой manager?

Это тоже было в "голом" squid.conf 

GATEWAY0=192.168.10.254
Вы в этом сильно уверены?

Тут да, ошибся, сразу после того как запостил, увидел ошибку.

-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i br1 -p tcp -m multiport --dports 80,5190 -j REDIRECT --to-ports 3128

Если будут на сквид стучаться с разных сетей, соответственно, нужно будет для каждой сети отдельная строчка?

Спасибо

10

Shandor пишет:

-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i br1 -p tcp -m multiport --dports 80,5190 -j REDIRECT --to-ports 3128

Если будут на сквид стучаться с разных сетей, соответственно, нужно будет для каждой сети отдельная строчка?
Спасибо

1. Антивирус, тот же clamav поставить желательно. Так как антивирус, подключенный к сквиду контролирут проходящий через него контент. Чего в принципе делать не умеет межсетевой экран. Страницы интернета могут быть вполне себе атакующими. Без анлиза содержания их не прихватить.
2. Достоинство большинства конфигов в линуксе то, что они очень легко читаемы. Определить то и то так и так. Читайте базовый конфиг и включайте голову - зачем там такое написано. И чего именно вы хотите добиться добавлением своей строки. Например, нет никакого смысла в определении дополнительной локальной сети 192.168.5.0/24 если определена сеть 192.168.0.0/16.
3. Последнее - ну переведите на понятный, опять же, язык правило iptables: перед всеми обработками перекинуть на порт 3128 локального хоста трафик, если он приходит с адресов нашей локальной сети через интерфейс, смотрящий в эту локальную сеть и идет на порты http (80, про 5190 - не помню зачем у меня это ссделано) хостов не принадлежащих нашей локальной сети. Если сможете обойтись в своей практике одной строчкой, то зачем писать их две?

11

Cruiser78
По поводу

Например, нет никакого смысла в определении дополнительной локальной сети 192.168.5.0/24 если определена сеть 192.168.0.0/16.

Это я понимаю, я говорил, что строчка "затесалась" случайно (сейчас все подчищено)

А по поводу iptables, то в Centos7 уже ж да, firewalld
И опять вопрос, что лучше  iptables или  firewalld ?

12

Shandor пишет:

Cruiser78
А по поводу iptables, то в Centos7 уже ж да, firewalld
И опять вопрос, что лучше  iptables или  firewalld ?

Считайте, что это одно и тоже. Просто firewalld имеет более "развесистый" интерфейс. Ну и по умолчанию firewalld манипулирует понятием "зона", то есть можно разные сети и хосты распихать по разным зонам и иметь для  них зональное управление правилами. iptables делает то же самое (фильтрует трафик), но с более лапидарным интерфейсом. Плюс - iptables более древнее произведение и документации для него сильно больше, чем для firewalld. Естественно, и документация на разные программы ориентирована будет больше на применение iptables (даже с примерами, которые можно копипастить). Для firewalld это надо переводить на "новый язык" управления.
Поэтому вопрос что лучше лишен смысла. Они оба делают одно и тоже и одинаково эффективно. iptables, при этом, более привычен. Да и для сервера (где открывается пара-другая портов всего) его возможностей более чем достаточно.

13

Помимо этого firewalld применяет изменение правил без перезапуска сервиса, что немаловажно для непрерывной доступности сервера.

14

Vascom пишет:

Помимо этого firewalld применяет изменение правил без перезапуска сервиса, что немаловажно для непрерывной доступности сервера.

Ну я как-то не замечал ни разу, что после измения правил фильтрации командой "iptables bla-bla-bla" надо перезагружать сам сервис. Так же на лету меняются правила.

15

Однако это так.

16

Вопрос по firewalld

Есть Сквид, на 3128
Стартую фаервол, и зону с портом 3128
firewall-cmd --zone=public --add-port=3128/tcp

Захожу через браузер, пускает и на http и на https
почему так? если конкретно 443 не прописываю

17

Лучше задай этот вопрос отдельной темой в разделе форума  "Администрирование и настройка сетей".

18

Тогда по Сквиду еще вопрос
Не дает качать файлы, примерно, больше 40мб.
До 40 мб. качаются без проблем. А то, что выше, или не качается вообще или останавливается на разных стадиях закачки.
http://s019.radikal.ru/i637/1408/84/e89b0cc61a73.jpg

Конфиг Сквида в самом начале., добавлено, только

acl blocked_urls url_regex "/etc/squid/blocked_urls.txt"
http_access deny blocked_urls

Фаервол отключал, та же ерунда.
А в идеале, хотело бы указать, что-бы можно было качать файлы не больше 500мб

19

Shandor пишет:

Тогда по Сквиду еще вопрос
Не дает качать файлы, примерно, больше 40мб.
До 40 мб. качаются без проблем. А то, что выше, или не качается вообще или останавливается на разных стадиях закачки.
http://s019.radikal.ru/i637/1408/84/e89b0cc61a73.jpg

Конфиг Сквида в самом начале., добавлено, только

acl blocked_urls url_regex "/etc/squid/blocked_urls.txt"
http_access deny blocked_urls

Фаервол отключал, та же ерунда.
А в идеале, хотело бы указать, что-бы можно было качать файлы не больше 500мб

Гм, похоже, проблема именно в этом хосте (с которого пытался качать)
Sorry