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
- Устанавливаем Nekoray:
sudo apt install -y nekoray
- Устанавливаем 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
- Запускаем Nekoray и выбираем только что скачанное ядро в нем:
- Открываем Настройки ➡ Основные настройки ➡ Ядро.
- В секции Расположение файлов нажимаем Выбрать.
- В поле Directory вписываем вручную
~/.xray
и нажимаем Enter.
- Добавляем свои прокси в Nekoray.
- Настраиваем роутинг в 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
правил, которые мы указали в настройках. Ничего страшного в этом нет, мы заменим базы на те, что в этом репозитории - в них нужные категории есть.
- Обновляем базы
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 ко всем сетевым интерфейсам Делается это так:
- В Nekoray откройте Настройки ➡ Основные настройки.
- В Адрес входящих подключений впишите
0.0.0.0
. - Нажмите ОК.
Для настройки терминала и 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
в терминале.