Как сделать так, чтобы внешние запросы с сервера LAMP обходили интернет-цензуру?

Как сделать так, чтобы внешние запросы с сервера LAMP обходили интернет-цензуру?

У меня был другойвопросна сайте askUbuntu и перенес эту версию из Server Faultвопрос, так как я думаю, что Суперпользователь — лучшее место, чтобы задать этот вопрос.

Фон:

У меня есть локальная (Drupal) среда разработки, состоящая из сервера LAMP, работающего на виртуализированной ОС Xubuntu 12.04 с хостовой ОС Ubuntu 12.04. Мостовая сеть не включена.

Я хотел бы начать экспериментировать с аспектами интеграции Web 2.0 в Drupal (например, интеграция с Youtube и Facebook), но все эти сайты блокируются массивным режимом фильтрации, который включает в себя как минимум блокировку IP, фильтрацию DNS, фильтрацию URL и фильтрацию пакетов, а также использует пакеты сброса соединения для обеспечения соблюдения этих правил. Похоже, что некоторые интернет-провайдеры также используют глубокую фильтрацию пакетов для обнаружения туннелей ssh, которые затем ограничивают пропускную способность, — к счастью, мой интернет-провайдер в моей квартире, похоже, в настоящее время этого не делает. Иностранцам не запрещено использовать прокси/vpns и т. д., если они не используют их для нарушения закона (например, для обмена запрещенными материалами с гражданами Китая).

Для обычного просмотра веб-страниц и других задач, требующих доступа к заблокированному контенту, я использую туннель ssh к серверу (Ubuntu Server 10.04, с включенными только ssh и openvpn) в другой стране в качестве прокси-сервера socks5. Chromium и Firefox могут отправлять DNS-запросы через прокси-сервер socks5 (первый по умолчанию, а второй — путем изменения настроек конфигурации). Это решение отлично работает для всех подключений на стороне браузера к запрещенным сайтам.

Однако многие модули Drupal для интеграции с Web 2.0 также требуют, чтобы сервер сам запрашивал ограниченные внешние сайты.

Мой вопрос:

Какой будет наилучший способ маршрутизации через мой туннель SSH и обойти режим фильтрации:

  • Все внешние запросы и DNS-поиски с моего сервера Apache2,

или

  • Только запросы (и DNS-поиски) с моего сервера Apache2 на указанные хосты?

Рассмотренные/попытки решения

  • Самым простым решением было бы использовать LAMP-сервер на машине вне режима фильтрации (той, к которой я подключаюсь по ssh). Однако я бы предпочел этого не делать по ряду причин (нет физического доступа к этой машине на случай, если что-то пойдет не так, устаревшее оборудование, если я потеряю соединение с этим сервером, я не смогу продолжить разработку и т. д.)
  • Использовать глобальные настройки прокси - Xubuntu не имеет возможности для глобальных настроек socks5 согласно моим исследованиям. Также я не знаю, поймает ли это мои DNS-запросы.

  • использование tsocks: это, кажется, лучший кандидат, но у меня есть две проблемы/вопроса:

    1. Где находится скрипт, который запускает/перезапускает Apache2, чтобы я мог начинать эти команды с tsocks?

    2. Как перехватить и перенаправить DNS-запросы через прокси-сервер socks5?

      Редактирование /etc/hosts/файла обеспечивает ограниченный обходной путь, но такие сайты, как youtube.com, загружают медиа и другой контент с такого количества внешних сайтов (и, следовательно, URL-адресов), что отслеживание всех этих (потенциально сбрасывающих соединение) сторонних URL-адресов практически невозможно. Использование socatдля захвата, преобразования и отправки UDP-трафика через прокси-сервер socks5 (как описаноздесь) кажется хорошим решением, но мне не удалось реализовать его так, как описано в связанном руководстве. (Если socatбудет подтверждено, что использование является правильным способом решения моей проблемы, я могу опубликовать команды, которые я использую, для обзора)

решение1

Apache на самом деле не создает исходящие соединения; это делает PHP. Так что PHP должен общаться с SOCKS-прокси.

Соответствующий:https://stackoverflow.com/questions/10490962/установление-сокетного-подключения-в-php-использование-socks-прокси

Было бы проще, если бы у вас был HTTP-прокси, и проще всего с VPN. Возможно, вам стоит еще раз попробовать настроить OpenVPN?

В качестве альтернативы вы можете настроить Privoxy на своем сервере для взаимодействия с вашим прокси-сервером SOCKS, а затем настроить PHP для использования Privoxy в качестве прокси-сервера HTTP.

Связанный контент