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

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

Путеводители, Как сделать, Jul-08-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 Предоставляет контейнеру необходимые возможности сетевого администрирования для создания прокси-туннеля, предоставляя ему доступ к сетевому стеку.

In this example, I am using Proxyscrape residential proxies, but you can also use premium proxies or any other proxies as well.
Now that we have created the container that does the proxying, we can use any container we want to use this container’s network by just adding the --network=container:tun2socks flag.

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

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

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

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

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

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