Назад | Перейти на главную страницу

Маршрутизация вашего интернета через openvpn и Squid Proxy

Я пытаюсь настроить прокси для фильтрации интернет-трафика. Для этого на одном и том же сервере ubuntu были установлены следующие комбинации Client -> Openvpn -> squidproxy -> internet Squid proxy и openvpn. Хотя установлен openvpn этот учебник Digital Ocean. Openvpn в настоящее время работает и правильно направляет трафик в Интернет. Но мне не удалось заставить запросы проходить через прокси-сервер squid, даже после того, как я настроил его для прозрачной маршрутизации и добавил несколько настроек iptables.

Я также добавил это сообщение конфигурации, в котором HTTP-запросы на порт 80 не достигают Интернета и прокси-сервера squid (http_port 3128 transparent определяется в squid.conf прозрачно перехватить запрос)

-A PREROUTING -i tun0 -p tcp --dport 80 -j DNAT --to 10.0.2.15:3128
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Глядя на то, что вы сделали, я не вижу ничего плохого - хотя есть некоторые существенные пробелы.

Все большая часть Интернета работает только по HTTPS. И я ожидал, что такое приложение, как Whatsapp, будет использовать SSL для всего своего трафика. Хотя можно ретранслировать SSL-трафик на прокси-сервер (используя простой перенаправитель портов, такой как socat), если вам нужна возможность контролировать обмен данными, это гораздо более сложное предложение. Squid действительно имеет возможность генерировать сертификаты SSL на лету и, следовательно, расшифровывать / повторно шифровать трафик. Но для этого требуется, чтобы корневой ЦС, который вы используете, был установлен на клиентских устройствах, что будет довольно сложно сделать на мобильных устройствах, которые не были рутированы.

Я полагаю, вы пытаетесь подключить разных пользователей к Интернету с помощью этой комбинации, верно? Ваши клиенты и ваш сервер находятся в одной сети?

Я не понимаю, зачем вам для этого нужен OpenVPN сервер. Почему бы вам просто не установить Squid на свой сервер и не заставить клиентов использовать его напрямую в качестве прокси-сервера? Если они получили видимость и порт, который вы настраиваете в Squid, не фильтруется брандмауэром, он должен работать. Вы даже можете настроить Squid для пересылки запросов на второй прокси-сервер, если это необходимо.

Если вы по-прежнему хотите использовать OpenVPN для шифрования трафика от клиентов к серверу, вам все равно необходимо настроить прокси-сервер Squid в качестве прокси-сервера на ваших клиентах. В противном случае они просто подключатся напрямую, используя только VPN-соединение.

Я использовал то же руководство для настройки прокси-сервера VPN Squid в Интернет. После многих дней попыток понять, почему мои журналы доступа к squid были пустыми, и после некоторых исследований я пришел к выводу, что dnat и редирект в Ubuntu не работают. Это было подтверждено небольшим поиском в Google nat, который не работает в Ubuntu, кажется, проблема.

Я переключился на CentOS, чтобы повторить попытку, это все еще требует большой работы по переустановке и перенастройке сервера penvpn, поэтому, столкнувшись с перенаправлением портов с помощью socat, я решил использовать socat в моей существующей установке Ubuntu, чтобы восстановить некоторые потерянные дни.

Что касается комментария о сертификатах для каждого клиента, это красивое и элегантное решение для фильтрации трафика для мобильных пользователей, особенно с использованием унифицированных клиентских файлов ovpn openvpn, в которые встроены серверные и клиентские ключи, включая ключ hmac. Один совет: наконец-то появился единый формат для работы со скриптом из сети под названием ovpn gen.