Skip to content

Sarvensky/gosoeth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gosoeth (SocksToEth)

SOCKS5 прокси-сервер на Go с минимальным функционалом, написанный специально для работы с несколькими сетевыми адаптерами (например, несколькими VPN туннелями) на одной машине.

Основные возможности

  • Interface Binding: Каждый SOCKS5 порт привязывается к конкретному сетевому адаптеру (Ethernet, Wi-Fi, VPN/tun).
  • Interface Validation: Автоматическая проверка существования сетевых интерфейсов или локальных IP-адресов перед стартом (предотвращает запуск прокси "в никуда").
  • Multi-Server: Возможность запускать неограниченное количество независимых прокси-серверов на разных портах.
  • DoH/DoT DNS: Поддержка DNS-over-HTTPS и DNS-over-TLS индивидуально для каждого порта. Запросы DNS выходят строго через тот же адаптер, что и основной трафик.
  • IPv6 Filtering: Автоматическая блокировка IPv6 запросов (отключаемая) для предотвращения утечек и ускорения работы в IPv4-сетях.
  • Log Rotation: Логирование с автоматической ротацией файлов по датам и удалением старых записей.

Быстрый старт

  1. Скачайте готовую сборку для вашей системы из раздела Releases.
  2. Распакуйте архив и настройте config.ini на основе ваших сетевых адаптеров.
  3. Запустите исполняемый файл.

Если вы хотите собрать проект самостоятельно:

  1. Склонируйте репозиторий.
  2. Перейдите в папку builds и запустите соответствующий скрипт:

Windows:

.\builds\build.ps1

Linux:

chmod +x builds/build.sh
./builds/build.sh

Настройка конфигурации (config.ini)

Программа использует INI-файл для настройки. Присутствует одна глобальная секция [SocksToEth] и неограниченное количество секций для каждого SOCKS5 прокси-сервера (например, [Proxy1], [Proxy2]).

Глобальные настройки [SocksToEth]

  • log_dir (по умолчанию: Logs) — папка для хранения логов.
  • log_max_backups (по умолчанию: 30) — сколько дней хранить старые логи перед их автоматическим удалением.
  • verbose_log (по умолчанию: false) — включить детальное логирование в файл (дублирует туда все DNS-запросы).
  • skip_interface_check (по умолчанию: false) — отключить проверку существования сетевого адаптера перед запуском. Полезно, если нужный VPN-туннель появляется в системе позже, чем стартует прокси.

Настройки прокси-серверов (любая пользовательская секция, например [Proxy1])

  • listen_port (Обязательно) — локальный порт для запуска SOCKS5 сервера (например, 1080).
  • interface (Обязательно) — имя сетевого адаптера (например, Ethernet, tun0) или его точный локальный IP-адрес. Весь исходящий TCP-трафик и DNS-запросы пойдут исключительно через него.
  • ipv6_enable (по умолчанию: false) — разрешить обработку IPv6-трафика. Если выключено — AAAA-запросы блокируются для ускорения работы чисто IPv4-сетей.
  • dns_crypto — адрес зашифрованного DNS-сервера, эксклюзивного для этого прокси: DoH (https://...) или DoT (tls://...:853).
  • dns_basic — обычный DNS-сервер (в формате IP:PORT, например 8.8.8.8:53). Игнорируется, если задан dns_crypto.

Установка как служба

Программа автоматически определяет режим запуска. При запуске через менеджер служб — работает как служба, при обычном запуске — в интерактивном режиме.

Windows:

sc create gosoeth binPath= "C:\путь\к\gosoeth.exe" start= auto
sc start gosoeth

Удаление: sc delete gosoeth

Linux (systemd):

sudo cp gosoeth /usr/local/bin/
sudo mkdir -p /etc/gosoeth
sudo cp config.ini /etc/gosoeth/
sudo cp builds/gosoeth.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now gosoeth

Статус: sudo systemctl status gosoeth

Требования

  • Go 1.26+
  • Библиотеки: armon/go-socks5, miekg/dns, ini.v1, http2.

About

SOCKS5 прокси-сервер на Go с минимальным функционалом

Topics

Resources

Stars

Watchers

Forks

Contributors