LINUX.ORG.RU
ФорумAdmin

Помогите с настройкой iptables + redsocks + privoxy

 , , ,


0

2

Помогите, плз, с настройкой…

Компьютер в локальной домашней сети имеет адрес 192.168.1.104.

Домашний роутер имеет адрес 192.168.1.1.

На роутере выход в интернет осуществляется через wireguard (машину 10.0.0.1). В сети 10.0.0.0/24 роутер имеет адрес 10.0.0.2.

На порту 8888 машины 10.0.0.1 работает redsocks. redsocks пересылает трафик на порт 3128, где работает privoxy.

На машине 10.0.0.1 настроены такие правила iptables:

iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8888
iptables -A POSTROUTING -o eth0 -j MASQUERADE

На 10.0.0.1:

  • wg0 - это интерфейс с адресом 10.0.0.1
  • через eth0 выход в интернет

Когда пытаюсь открыть страницы в браузере на 192.168.1.104, получаю ошибку PR_END_OF_FILE_ERROR.

НО! Если машину 192.168.1.104 подключить к VPN серверу напрямую, ну, т.е., запустить клиент WG, приконнектиться, получить IP (он будет 10.0.0.7), то для 192.168.1.104 всё заработает идеально! Трафик пойдет на 10.0.0.1, https будет перенаправляться на redsocks, далее на privoxy, и потом в интернет. Сайты открываются.

Ну, и соответственно, если не подключать 192.168.1.104 к WG, использовать подключение на роутере, убрать на WG сервере правило:

iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8888

то тоже сайты будут открываться, но мне надо пустить трафик на сервере именно через privoxy.

Вопрос: почему в связке с redsocks это не работает без прямого подключения к серверу WG? И как это исправить?


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

Что было изначально: из домашней сети с устройств без всяких настроек на них, запросы к некоторым сервисам идут через WG.

Эти сервисы определяют IP источника, как IP сервера WG, и подсовывают некоторый контент, который свойственен региону IP сервера WG.

И вот подумалось, может, если передать сервису заголовки, типа X-Forwarded-For, X-Real-IP, X-Client-IP сервис будет «думать», что регион другой и не будет подсовывать нежелательный контент…

Заголовки умеют подсовывать некоторые прокси… Выбрал privoxy (нетребовательный, относительно простенький, по сравнению со squid, например), и он умеет добавлять свои заголовки и для http, и передавать в connect для https.

Установил, настроил, проверил - заголовки добавляются.

Прописал прокси в браузере - и оно действительно вчера сработало! Рядом с логотипом сервиса появилось RU, вместо DE и нежелательный контент пропал…

Ну, я и подумал, если это проканало, то надо настраивать заворачивание трафика на сервере через прокси, чтобы не прописывать его через роутер (маршрутизация к сервисам уже настроена, и заводить списки, «что через прокси, что напрямую» не хотелось)…

Заворачивать трафик с помощью iptables на прокси умеет redsocks.

И вот с настройкой этого вчера и возник «затык». Сегодня написал сообщение здесь, на форуме… А сейчас снова пробую и… что-то не появляется RU рядом с логотипом, даже когда прокси в браузере прописываю :(

Видимо, для этих целей надо покупать сервер, там, где нет нежелательного контента. Или в России, и использовать что-то типа этого или этого

Вот.

С ошибкой PR_END_OF_FILE_ERROR я разобрался. Надо было просто по-разному redsocks’ом перенаправлять http и https. Почему без прямого подключения к WG не работало пока не понял, но, видимо и не стоит заморачиваться…

le_
() автор топика