Нужна помощь squid / firewalld на CentOS 7 as dns, ftp, http, https transparent proxy

Я установил squid v3.3.8 на CentOS 7, который имеет два следующих интерфейса:

внутренний

interface: ens32    

внешний

interface: ens33    >   masquerade is enabled here

Прежде всего, я включил пересылку IPv4:


внутренний

interface: ens32    

внешний

interface: ens33    >   masquerade is enabled here

Прежде всего, я включил пересылку IPv4:

внутренний

interface: ens32    

внешний

interface: ens33    >   masquerade is enabled here

Прежде всего, я включил пересылку IPv4:
sysctl -w net.ipv4.ip_forward = 1

Я хочу, чтобы в моем браузере был установлен IP-адрес ens32 с портом 3128, и у меня был доступ к Интернету по ftp, http или https. Честно говоря, мне нужно разрешить все типы трафика позже, но заблокировать некоторые веб-сайты, потому что некоторым приложениям, которые я использую, нужен трафик tcp / udp на разных портах.

Я добавил правило firewalld:

firewall-cmd --permanent --zone=internal --add-service=squid

Я могу telnet ens32 IP на порт 3128!

В качестве неудачного начала я оставил squid.conf как есть, но добавил "перехват" после http_port 3128, чтобы направить трафик с ens32 на ens33. Когда я пытаюсь выйти в Интернет из своего браузера, я всегда получаю следующее:

The following error was encountered while trying to retrieve the URL: http://www.whatever.com

    Access Denied.

Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

Your cache administrator is root.

Я также не знаю, как правильно создать необходимые правила firewalld для пересылки запросов, полученных на ens32, на ens33. Все учебники, которые я читал, использовали iptables, что мне действительно нужно, так это firewalld. Я новичок в мире Linux, я никогда раньше не изучал iptables.

Сначала мне нужно заставить работать http-запросы, а потом я продолжу работу.

Заранее спасибо

0
задан 24 May 2016 в 18:47
1 ответ

Будем надеяться, что кто-то сочтет этот ответ полезным, так как я нигде не нашел этих вещей в Интернете!

Я получил ошибку «Доступ запрещен», потому что когда я впервые заявил в своем вопросе, что у меня было

http_port 3128 intercept

Оно означало, что этот порт squid был предназначен для перехвата трафика, а не для его пересылки, поэтому ожидалось, что firewalld будет перенаправлять трафик с порта 3128 на другой порт, например порт 3126:

firewall-cmd --permanent --zone=internal --add-forward-port=port=80:proto=tcp:toport=3126:toaddr=LAN_INTERFACE_IP
firewall-cmd --reload

, чтобы позволить squid обрабатывать трафик и перенаправлять его на порт 3126, слушая порт 3128. Конечно, мне пришлось открыть порт 3126 следующим образом:

firewall-cmd --permanent --zone=internal --add-port=3126/tcp

, и тогда я могу сделать squid таким образом:

http_port  3126 intercept
http_port  3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myca.pem

Обратите внимание, что порт 3128 не находится в режиме перехвата. Итак, когда firewalld пересылает http-трафик на порт 3126. squid выполняет свою работу, прослушивая порт 3128, в то время как ipv4-пересылка пересылает неизвестный трафик (что мы и хотели в первую очередь) на интерфейс WAN, то есть ens33.

Чтобы иметь возможность связаться с сервер из другой подсети, просто добавьте статический маршрут к интерфейсу LAN, где шлюз этого маршрута настроен на фактический шлюз подсети, к которой принадлежит IP-интерфейс LAN.

Что касается сертификата, я сделал следующее:

mkdir /etc/squid/ssl_cert/
cd /etc/squid/ssl_cert
openssl req -new -newkey rsa:1024 -days 1365 -nodes -x509 -keyout myca.pem -out myca.pem
openssl x509 -in myca.pem -outform DER -out myca.der
chown -R squid:squid /etc/squid/ssl_cert/

Наконец, SELinux включен, я решил таким образом, по иронии судьбы, я нашел решение в журнале ошибок SELinux:

grep ssl_crtd /var/log/audit/audit.log | audit2allow -M ssl_crtd_pol
semodule -i ssl_crtd_pol

Это должно ответить на мой вопрос и все мои комментарии выше ..

1
ответ дан 4 December 2019 в 16:36

Теги

Похожие вопросы