69 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
| ---
 | ||
| title: Обход блокировок через VPN (privoxy) 
 | ||
| description: 
 | ||
| published: true
 | ||
| date: 2024-04-24T09:54:44.065Z
 | ||
| tags: privoxy, vpn
 | ||
| editor: markdown
 | ||
| dateCreated: 2024-04-24T09:54:39.876Z
 | ||
| ---
 | ||
| 
 | ||
| Западные блокировки в интернете добавляют лишнюю суету в повседневную работу. Я вам покажу очень простой и быстрый способ, как их обходить на примере загрузки и запуска продуктов elastic. Как известно, с территории РФ их скачать невозможно, как и воспользоваться репозиторием docker образов. 
 | ||
| 
 | ||
| Для этого нам понадобится любая VPS и доступ к ней по SSH. Главное, чтобы с неё ничего не блокировалось. Ставим туда локальную прокси privoxy:
 | ||
| 
 | ||
| `# apt install privoxy`
 | ||
| 
 | ||
| Больше можно ничего не настраивать. Нам подойдут настройки по умолчанию. Прокси сама запустится на локальном интерфейсе 127.0.0.1:8118. Можно тут её оставить на постоянную работу.
 | ||
| 
 | ||
| Теперь идём на сервер, куда мы хотим установить elasticsearch. Если мы просто попытаемся скачать пакет, у нас ничего не выйдет:
 | ||
| 
 | ||
| `# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb`
 | ||
| HTTP request sent, awaiting response... 403 Forbidden
 | ||
| 
 | ||
| Доступ заблокирован. Подключимся по SSH к серверу с privoxy и пробросим её порт 8118 локально на машину на порт 3128:
 | ||
| 
 | ||
| `# ssh -L 3128:localhost:8118 root@1.2.3.4`
 | ||
| 
 | ||
| Проверяем, что порт проброшен:
 | ||
| 
 | ||
| `# ss -tulnp | grep 3128`
 | ||
| ```
 | ||
| tcp  LISTEN 0   128    127.0.0.1:3128    0.0.0.0:*  users:(("ssh",pid=1350,fd=5))
 | ||
| ```
 | ||
| Теперь сделаем так, чтобы wget работал через прокси. Для этого рисуем конфиг ~/.wgetrc:
 | ||
| ```
 | ||
| use_proxy=yes
 | ||
| http_proxy=127.0.0.1:3128
 | ||
| https_proxy=127.0.0.1:3128
 | ||
| ```
 | ||
| И снова скачиваем пакет. Теперь он успешно загрузится, можно устанавливать. 
 | ||
| 
 | ||
| Если хочется запустить elasticsearch в докере из официального образа, то подключаем прокси докеру. Для этого передаём ему переменные через systemd. Все возможные варианты настройки прокси в докере описаны в документации (https://docs.docker.com/config/daemon/systemd/).
 | ||
| 
 | ||
| `# mkdir -p /etc/systemd/system/docker.service.d`
 | ||
| `# mcedit /etc/systemd/system/docker.service.d/http-proxy.conf`
 | ||
| ```
 | ||
| [Service]
 | ||
| Environment="HTTP_PROXY=http://127.0.0.1:3128"
 | ||
| Environment="HTTPS_PROXY=http://127.0.0.1:3128"
 | ||
| ```
 | ||
| ` # systemctl daemon-reload`
 | ||
| ` # systemctl restart docker`
 | ||
| 
 | ||
| Обращаю внимание, что в качестве HTTPS_PROXY я передаю http подключение. Это важно. Privoxy не настроен на работу по https, а Docker хочет именно по https забирать образы. Проверим, что переменные объявлены:
 | ||
| 
 | ||
| `# systemctl show --property=Environment docker`
 | ||
| ```
 | ||
| Environment=HTTP_PROXY=http://127.0.0.1:3128 HTTPS_PROXY=http://127.0.0.1:3128
 | ||
| ```
 | ||
| Теперь можно забрать образ последней версии и запустить его:
 | ||
| 
 | ||
| `# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.2`
 | ||
| `# docker run -d -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:8.13.2`
 | ||
| 
 | ||
| После того, как всё скачано и запущено, настройки прокси можно отключить.
 | ||
| 
 | ||
| Такой простой и быстрый метод с использованием своего прокси. Не надо искать сторонние репозитории или настраивать свои. Не надо подключать VPN и что-то ставить дополнительно на исходный сервер. Забрали всё с репозитория разработчиков, сделав минимум движений на сервере, куда всё устанавливали. 
 | ||
| 
 | ||
|  |