5 Настройка Nekoray & Docker & Terminal для использования прокси
Neur0toxine edited this page 2023-11-29 15:46:28 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Настройка Nekoray & Docker & Terminal для использования прокси

Предполагается, что у вас уже есть прокси, которые вы добавите в Nekoray. Это могут быть любые прокси, которые поддерживаются ядром Xray Core. Можно взять публичные прокси (вроде Антизапрета), но лучше настроить свои используя проекты вроде Hiddify, Marzban или 3X-UI / X-UI (или вообще настроить X-Ray на сервере вручную). Пример годной статьи по настройке своего сервера: https://habr.com/ru/articles/735536/

После настроек по этой инструкции изменится следующее:

  • Docker и терминал будут использовать прокси Nekoray.
  • Вы сможете включать и выключать прокси для Docker и в разрезе терминала по желанию (Docker-контейнеры потребуется перезапустить для достижения нужного эффекта).
  • Прокси будет действовать только для заблокированных сайтов.

Установка и настройка Nekoray

  1. Устанавливаем Nekoray:
sudo apt install -y nekoray
  1. Устанавливаем X-Ray Core в локальную директорию примерно так:
mkdir -p ~/.xray
cd ~/.xray
curl -fsSL -o xray.zip https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip
unzip -u xray.zip
rm xray.zip
  1. Запускаем Nekoray и выбираем только что скачанное ядро в нем:
  • Открываем НастройкиОсновные настройкиЯдро.
  • В секции Расположение файлов нажимаем Выбрать.
  • В поле Directory вписываем вручную ~/.xray и нажимаем Enter.
  1. Добавляем свои прокси в Nekoray.
  2. Настраиваем роутинг в Nekoray:
  • Открываем НастройкиНастройки маршрутовБазовые маршруты.
  • Outbound по умолчанию - ставим bypass.
  • В колонку Прокси для строки IP вставляем следующее:
geoip:ru-blocked-ips-noid2971
geoip:ru-blocked-ips-all
  • В колонку Прокси для строки Домен вставляем следующее:
geosite:category-ru-blocked-zones
regexp:.*get\.geojs\.io$
  • Нажимаем OK, соглашаемся на перезапуск Xray (если был запущен). Внимание: на этом этапе может возникнуть ошибка из-за отсутствия в базах geoip и geosite правил, которые мы указали в настройках. Ничего страшного в этом нет, мы заменим базы на те, что в этом репозитории - в них нужные категории есть.
  1. Обновляем базы geoip.dat и geosite.dat на версии из этого репозитория:
curl -fsSL -o ~/.xray/update-geoip-geosite.sh https://gitea.neur0tx.site/xray-addons/geoip-geosite-with-ru-blocklist/raw/branch/master/update.sh
chmod +x ~/.xray/update-geoip-geosite.sh
cd ~/.xray && ./update-geoip-geosite.sh

Готово. На этом этапе уже можно подключаться к прокси через Nekoray. Делается это так:

  • Выберите режим "Системный прокси".
  • В списке прокси выберите нужный (или любой рабочий) и нажмите Enter. В окне журнала должны начать появляться записи.

Проверить работоспособность прокси можно так:

  • 2ip.ru должен показывать адрес вашего провайдера.
  • get.geojs.io должен выводить информацию об адресе вашего прокси (в формате JSON).

Скрипт ~/.xray/update-geoip-geosite.sh можно запускать еженедельно с помощью cron чтобы своевременно обновлять базы заблокированных сайтов:

crontab -l | { cat; echo "0 10 * * 1 $HOME/.xray/update-geoip-geosite.sh" } | crontab -

В этом примере в crontab будет добавлена запись, которая будет запускать скрипт обновления geo-файлов в 10 часов утра каждый понедельник.

Настройка терминала и Docker

Сначала разрешите доступ к прокси из контейнеров - для этого нужно привязать прокси Nekoray ко всем сетевым интерфейсам Делается это так:

  1. В Nekoray откройте НастройкиОсновные настройки.
  2. В Адрес входящих подключений впишите 0.0.0.0.
  3. Нажмите ОК.

Для настройки терминала и Docker требуются следующие зависимости: jq curl bash. Установите их, а затем добавьте в ~/.bashrc / ~/.zshrc / -rc-файл вашей оболочки следующее содержимое и перезапустите терминал:

# Enables proxy for Docker & Terminal
proxyon () {
	if [[ ! -f ~/.docker/config.json ]]; then
		mkdir -p ~/.docker
		echo '{}' > ~/.docker/config.json
	fi
	cat ~/.docker/config.json | jq '.proxies = { default: { httpProxy: "http://172.17.0.1:2081", httpsProxy: "http://172.17.0.1:2081", noProxy: "*.test, 127.0.0.0/8" } }' | tee ~/.docker/config.json
	cat <<EOF | tee ~/.proxyrc
export HTTP_PROXY='http://127.0.0.1:2081'
export HTTPS_PROXY='http://127.0.0.1:2081'
EOF
	source ~/.proxyrc
}

# Disables proxy for Docker & Terminal
proxyoff () {
	rm -r ~/.proxyrc
	cat ~/.docker/config.json | jq -r 'del(.proxies)' | tee ~/.docker/config.json
	unset HTTP_PROXY
	unset HTTPS_PROXY
}

# Setup proxies if needed (contains HTTP_PROXY and HTTPS_PROXY variables).
[[ ! -f ~/.proxyrc ]] || source ~/.proxyrc

После этого вы сможете включать прокси в терминале и Docker командой proxyon и выключать командой proxyoff. Сам прокси в Nekoray должен быть включен, эта настройка лишь позволяет быстро и удобно активировать и деактивировать прокси в терминале & Docker. Контейнеры нужно будет перезапускать чтобы был эффект.

Проверить работу прокси можно командой:

curl https://get.geojs.io/v1/ip/geo.json | jq

Если прокси включен (proxyon) - команда должна выдавать информацию о прокси, если выключен (proxyoff) - информацию об IP вашего провайдера.

Возможные проблемы

  • Нет гарантии того, что все приложения после этого будут использовать прокси. Приложения могут выбирать использовать ли им прокси, или идти в Сеть напрямую... или же могут вообще не поддерживать прокси.
  • Для root прокси, чаще всего, не будет использоваться. Это ожидаемое поведение, для root нужна дополнительная настройка.
  • 0.0.0.0 в адресе входящих подключений в Nekoray может быть небезопасным если к машине есть доступ из Сети. Закройте порты 2080 и 2081 в локальном firewall чтобы сделать конфигурацию безопасной в таких случаях.
  • Режим TUN при такой конфигурации непригоден к использованию т.к. правила для доменов в таком случае не будут работать.
  • При включенной настройке Системный прокси и отсутствии запущенного прокси может пропадать Интернет. Включите прокси или снимите галку Системный прокси & выполните proxyoff в терминале.