темный логотип proxyscrape

Как использовать Proxyscrape Proxies с Docker

Путеводители, Как сделать, Jul-07-20245 минут чтения

В некоторых случаях требуется проксировать трафик в программах, которые изначально не поддерживают прокси. В предыдущем блоге обсуждалось, как это возможно на Windows, но есть также множество случаев использования прокси в Linux или даже в контейнерах Docker для дополнительной гибкости.

В этой статье мы расскажем о том, как использовать прокси для контейнеров Docker с помощью контейнера Docker xjasonlyu/tun2socks.
tun2socks - это легкий и портативный инструмент сетевого туннелирования, позволяющий направлять трафик через прокси-сервер. Он написан на языке Go и доступен как отдельный исполняемый файл или как контейнер Docker.
В этом руководстве я расскажу, как использовать его в Docker, чтобы вы могли подключить к нему любой другой контейнер Docker и заставить его использовать прокси.

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

docker run -d --name tun2socks \
-e EXTRA_COMMANDS='echo "nameserver 1.1.1.1" > /etc/resolv.conf;ip rule add iif lo ipproto udp dport 53 lookup main;' \
-e PROXY=http://<user>:<pass>@rp.proxyscrape.com:6060 \
-v '/dev/net/tun:/dev/net/tun' --cap-add=NET_ADMIN \
xjasonlyu/tun2socks
  • EXTRA_COMMANDS необходим для корректной работы DNS, поскольку контейнер tun2socks по умолчанию не обрабатывает DNS и выполняет только проксирование.
  • PROXY - это место, где вы устанавливаете прокси, который вы хотите использовать, это может быть http/https и socks4/5. Подробный список можно найти здесь:
  • -v '/dev/net/tun:/dev/net/tun' Монтирует виртуальное сетевое устройство хост-машины (/dev/net/tun) в контейнер, позволяя tun2socks манипулировать сетевым трафиком.
  • --cap-add=NET_ADMIN Предоставляет контейнеру необходимые возможности сетевого администрирования для создания прокси-туннеля, предоставляя ему доступ к сетевому стеку.

В этом примере я использую прокси для жилых домов Proxyscrape , но вы также можете использовать премиум-прокси или любые другие прокси.
Теперь, когда мы создали контейнер, который выполняет проксирование, мы можем использовать любой контейнер, чтобы использовать сеть этого контейнера, просто добавив флаг --network=container:tun2socks.

Чтобы проверить, все ли работает правильно, вы можете использовать тестовый контейнер, который я создал для возврата данных о местоположении IPinfo.

docker run --rm --network=container:tun2socks hibenji/checkip

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

Такой подход к проксированию в Docker открывает целый мир возможностей. Теперь вы можете использовать прокси в сочетании практически с любым контейнером Docker, даже с теми, в которых нет встроенной поддержки прокси. Это может расширить возможности ваших контейнерных приложений, позволяя выполнять задачи, которые без такого уровня контроля сети были бы сложны или невозможны.

Спасибо за чтение, надеюсь, вы узнали что-то новое!

Эта статья была написана Бенджи, пользователем ProxyScrape .