Перенаправление трафика VPN на прокси-сервер Squid

Я использую SoftEther в качестве VPN и Squid для прокси.

Я хочу перенаправить этот VPN на прокси, а затем в Интернет .

Мое основное требование такое.

SmartPhone---->VPN--->Squid--->Internet
                        |
                        |
                        V
               internet access log

Пока я настроил SofteEther VPN, и он работает как обычный vpn, Squid is installed in server and it works when connected as a normal proxy.

I have tried to set iptables rules to forward vpn traffic to squid( ie from port 80 to 3128[squid listening port]), but it didn't worked.

I am not a well experienced person in this area, So I request you to help me find what I am doing wrong(or please let me know if this is not possible).

VPN and Squid is configured in Amazon EC2.

0
задан 12 April 2017 в 13:56
2 ответа

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

Если вы используете OpenVPN, вы можете использовать мой скрипт вверх / вниз для OpenVPN / squid. Вам также необходимо настроить BIND для работы через VPN:

#!/usr/bin/env bash

status="$1"
ip="$5"
configdir_squid="/etc/squid/proxyoff"
configdir_bind="/etc/named"

if [ "$status" = "up" ]; then
        echo "tcp_outgoing_address $ip" > "$configdir_squid/tcp_outgoing_address.conf"
        echo "http_access allow localnet" > "$configdir_squid/http_access.conf"
        echo "query-source address $ip;" > "$configdir_bind/query_source.conf"
else
        echo "" > "$configdir_squid/tcp_outgoing_address.conf"
        echo "http_access deny localnet" > "$configdir_squid/http_access.conf"
        echo "" > "$configdir_bind/query_source.conf"
fi

systemctl restart named squid transmission-daemon

Затем создайте папку с именем proxyoff внутри / etc / squid.Затем настройте скрипты в OpenVPN:

up "/opt/scripts/openvpn_tun1.sh up"
down "/opt/scripts/openvpn_tun1.sh down"

Вам потребуются правила IPtables, которые управляют обменом данными от squid и bind (вам необходимо настроить статические маршруты для вашего VPN-провайдера):

-A vyprvpn-only -o lo -j ACCEPT
-A vyprvpn-only -d 192.168.1.0/24,10.8.0.0/24 ! -o tun1 -j ACCEPT
-A vyprvpn-only ! -o tun1 -j REJECT --reject-with icmp-net-unreachable
-A OUTPUT -m owner --gid-owner transmission -j vyprvpn-only
-A OUTPUT -m owner --gid-owner squid -j vyprvpn-only
-A OUTPUT -m owner --gid-owner named -j vyprvpn-only

Добавьте где-нибудь в конце вашего http_access в squid, но ДО того, как http_access запретить все:

include /etc/squid/proxyoff/http_access.conf

Также добавьте после http_port или после ваших правил http_access:

include /etc/squid/proxyoff/tcp_outgoing_address.conf

Настройте свои серверы имен так, чтобы они отражали DNS-сервер в локальной сети, который будет проходить через VPN или Интернет-DNS-сервер, который будет проходить через DNS по правилам iptables:

dns_v4_first on
dns_nameservers 8.8.8.8 8.8.4.4

Например, у меня есть свои dns_nameservers как 3 DNS-сервера Windows, которые обрабатывают AD, а затем отправляют любые запросы, которые они не знают, обратно на серверы BIND, работающие на те же серверы, что и VPN.

Добавьте сбой шлюза для ACL локальной сети в squid или переименуйте ACL и ACL в сценарии:

deny_info ERR_GATEWAY_FAILURE localnet

Затем просто настройте автоконфиг прокси:

function FindProxyForURL(url, host) {
    var proxy_on = "PROXY 192.168.1.20:3128; PROXY 192.168.1.21:3128";
    var proxy_off = "DIRECT";
    var network = "192.168.1.0";
    var subnet = "255.255.255.0";

    var proxy_bypass = new Array(
        "pyronexus.lan", "*.pyronexus.lan",
        "pyronexus.com", "*.pyronexus.com",
        "amazon.com", "*.amazon.com",
        "amazon.co.uk", "*.amazon.co.uk",
        "channel4.com", "*.channel4.com",
        "c4assets.com", "*.c4assets.com",
        "ipv6-test.com", "*.ipv6-test.com",
        // Banks
        "tsb.co.uk", "*.tsb.co.uk",
        "bankofscotland.co.uk", "*.bankofscotland.co.uk",
        "barclays.co.uk", "*.barclays.co.uk",
        "halifax.co.uk", "*.halifax.co.uk",
        "rbs.co.uk", "*.rbs.co.uk",
        "natwest.com", "*.natwest.com"
    );

    var blockedsites = new Array(
        "trafficstars.com", "*.trafficstars.com",
        "trafficfactory.biz", "*.trafficfactory.biz"
    );

    // Blocked websites (block them in the proxy server configuration to prevent circumvention
    for (var i = 0; i < blockedsites.length; i++) {
        if (shExpMatch(host, blockedsites[i])) {
            return "proxy 127.0.0.1";
        }
    }

    // Below here evaluates the above.
    // Bypass proxy for local web servers in the same subnet as the client.
    if (isInNet(host, network, subnet)) {
        return proxy_off;
    }

    // Bypass proxy for those listed under proxy_bypass.
    for (var i = 0; i < proxy_bypass.length; i++) {
        if (shExpMatch(host, proxy_bypass[i])) {
            return proxy_off;
        }
    }

    // Everything else not caught by the above, should be checked to see if it is HTTP, HTTPS or FTP
    // before sending to a proxy server.
    if (shExpMatch(url, "http:*") ||
        shExpMatch(url, "https:*") ||
        shExpMatch(url, "ftp:*")) {
            return proxy_on;
    }

    // Finally, send all other requests direct.
    return proxy_off;
}

Добавьте это в / etc / named.conf в параметрах (добавить серверы пересылки к DNS-серверам в Интернете, но удалить корневые ссылки):

include "/etc/named/query_source.conf";

Добавить IP-адрес VPN в / e tc / hosts:

209.99.22.37    uk1.vyprvpn.com

И добавьте маршрут:

ip route add 209.99.22.37/32 via 192.168.1.1 dev eth0

Вы можете увидеть некоторые из моих других руководств по проксированию на https://pyronexus.com

2
ответ дан 4 December 2019 в 12:20

Вы можете прочитать это:

https://www.williamjbowman.com/blog/2015/12/22/a-transparent-ad-blocking-vpn-via-softether-privoxy/

Автор перенаправить весь 80-портовый трафик на privoxy, для блокировки рекламы вы можете изменить его команду на перенаправление на squid.

iptables -t nat -A PREROUTING -s YOUR.NET.ADDRESS/NETTMASK -p tcp -m multiport --dport 80 -j DNAT --to-destination 127.0.0.1:3128
1
ответ дан 4 December 2019 в 12:20

Теги

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