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

Моя домашняя сеть подключается к Интернету через кабельный модем, который имеет подключение по Ethernet к маршрутизатору, на котором работает OpenWRT. Этот маршрутизатор образует коммутатор, который соединяет все мои беспроводные и проводные клиенты и домашние серверы.

Подключается ли прозрачный прокси-шлюз, который я хочу настроить, просто как другой клиент к коммутатору маршрутизатора, или я настраиваю его на пути между маршрутизатором и модемом? Если да, нужно ли мне поместить его в какую-то DMZ или он просто должен выступать в роли маршрутизатора, а мой нынешний маршрутизатор может просто получать информацию DHCP от шлюза squid и действовать как коммутатор для остальных моих LAN?

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

Если это имеет значение, вот соответствующая спецификация моего Squid Gateway: Celeron J1800 4 ГБ ОЗУ 64 ГБ SSD 3x гигабитный Ethernet (2x на дискретной PCI-E-карте Broadcom)1x беспроводная a/b/g mpcie карта Lubuntu 16.04

1 ответ1

1

Компьютер, на котором размещен прокси-сервер, можно настроить параллельно с вашими постоянными клиентами в локальной сети. Маршрутизатор будет направлять весь HTTP-трафик (кроме прокси-машины) на вашу прокси-машину. Это делается путем объединения IPTables (чтобы выбрать, какой трафик для переадресации) и Policy Routing (выполняет переадресацию).

Я протестировал следующие шаги на OpenWrt Chaos Calmer (15.05.1, r48532) в VMware. Они основаны на этом руководстве.

Во-первых, чтобы настроить политику маршрутизации, вам нужен iproute2. Установите это:

opkg update # If you haven't done it since rebooting
opkg install ip

Затем откройте /etc/firewall.user вашем любимом редакторе и вставьте следующие команды:

PROXYIP4=192.168.1.10
PROXYIP6=fe80:dead:beef::10

CLIENTIFACE=br-lan

FWMARK=2

# Permit Squid box out to the Internet
iptables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP4 -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP6 -j ACCEPT

# Mark everything else on port 80 to be routed to the Squid box
iptables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
iptables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
ip6tables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT

# NP: Ensure that traffic from inside the network is allowed to loop back inside again.
iptables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT
ip6tables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT

# Fill 'proxy' routing table
ip route flush table proxy
ip route add default via $PROXYIP4 table proxy dev $CLIENTIFACE
ip -6 route add default via $PROXYIP6 table proxy dev $CLIENTIFACE

Обязательно настройте переменные по мере необходимости!

Затем отредактируйте /etc/iproute2/rt_tables , добавив строку для proxy таблицы, используя любой свободный идентификатор:

...
201     proxy

Последний кусок - это политика для трафика, помеченного $FWMARK . Откройте /etc/config/network и создайте запись правила:

config rule
    option mark 0x2
    option in lan
    option lookup proxy

Убедитесь in правильности имени в сети и т.д.

На этом завершается часть установки OpenWrt. Прокси-машина теперь (эффективно) стала шлюзом по умолчанию для трафика HTTP. Если эта машина работает под управлением Linux, вы можете продолжить это руководство по TPROXY.

Накладные расходы на маршрутизацию должны быть минимальными. Остальное зависит от прокси-хоста.

Если вы нарушили доступ к Интернету, вы можете легко восстановить его, удалив правило маршрутизации:

ip rule del fwmark 2

Правило также может быть легко добавлено снова:

ip rule add fwmark 2 table proxy

ТЛ; др

Прокси-хост действительно должен быть между клиентами и Интернетом. Тем не менее, при умной маршрутизации любая машина с прямым доступом может стать «человеком посередине».

Вот так:

перехват трафика

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .