Умный маршрутизатор трафика через динамические правила с полной поддержкой IPv4/IPv6
Автоматически перенаправляет трафик через SOCKS5-прокси с поддержкой современных сетевых стандартов. Идеально для обхода ограничений и мониторинга сети.
- 🚀 Автоматическое перенаправление трафика для заданных доменов/IP через прокси
- 🔄 Динамическое обновление IP-адресов доменов
- 🛡️ Интеграция с SOCKS5 прокси
- 📜 Логирование всех операций
- 🔧 Модульная архитектура с поддержкой параметров командной строки
- ⏰ Автоматическое обновление адресов каждые 3 часа
- 🌐 Поддержка IPv4, IPv6 и CIDR-диапазонов для гибкости в настройках
- Сервер/ПК с Linux (рекомендуется Ubuntu 22.04+)
- Два сетевых интерфейса (LAN/WAN)
graph LR
A[Локальная сеть] --> B(LAN Интерфейс)
B --> C{Проверка правил}
C -->|Совпадение| D[SOCKS Прокси]
C -->|Нет совпадения| E[Прямое подключение]
D --> F[WAN Интерфейс]
E --> F
Внимание в будущий LAN интерфейс должно быть подключено устройство которое будет принимать интернет (роутер, свитч) иначе не запустится DHCP сервер
- Клонируйте репозиторий:
git clone https://github.com/Divarion-D/transparent-proxy-gateway.git
cd transparent-proxy-gateway
- Запустите установку:
chmod +x proxy.sh
sudo ./proxy.sh --install
- Следуйте инструкциям на экране:
- 🖧 Выберите LAN и WAN интерфейсы
⚠️ Каждая новая запись должна начинаться с новой строки
- Добавьте домены в
config/domains.txt
:
sudo nano config/domains.txt
- Добавьте IP в
config/ips.txt
(поддерживаются как одиночные IP, так и CIDR-диапазоны):
sudo nano config/ips.txt
- Настройте прокси в
config/redsocks.conf
:
sudo nano config/redsocks.conf
redsocks {
local_ip = 0.0.0.0; # Не изменять
local_port = 12345; # Не изменять
ip = proxy_ip; # Адрес SOCKS-прокси
port = proxy_port; # Порт прокси
# login = proxy_login; # Имя пользователя прокси
# password = proxy_password; # Пароль прокси
type = socks5;
}
Раскомментируйте строки с логином и паролем если требуется аутентификация для прокси:
login = proxy_login;
password = proxy_password;
- Примените изменения:
sudo ./proxy.sh --update-ips
sudo ./proxy.sh --restart-redsocks
Команда | Описание |
---|---|
sudo ./proxy.sh --install |
🚀 Полная установка системы |
sudo ./proxy.sh --uninstall |
🚀 Полное удаление шлюза |
sudo ./proxy.sh --update-ips |
🌍 Принудительное обновление IP |
sudo ./proxy.sh --restart-redsocks |
🌍 Перезапуск readsocks |
sudo ./proxy.sh --reconfigure_firewall |
🛡️ Переконфигурация фаервола |
sudo ./proxy.sh --help |
📖 Показать справку |
Правила роутинга можно взять отсюда RockBlack-VPN или Диапазоны
- Выбираем сайт, который нам нужен.
- Открываем файл с правилами.
- Содержимое файла будет выглядеть примерно так:
route ADD 23.32.0.0 MASK 255.224.0.0 0.0.0.0
route ADD 47.236.0.0 MASK 255.252.0.0 0.0.0.0
route ADD 47.235.0.0 MASK 255.255.0.0 0.0.0.0
- Нужно удалить все, кроме самого IP-адреса, чтобы выглядело так:
23.32.0.0
47.236.0.0
47.235.0.0
- Сохраните эти правила в текстовый файл и положите его в папку
routing
. - Выполните команду для обновления правил роутинга:
sudo ./proxy.sh --update-ips
/transparent-proxy-gateway/
├── proxy.sh # 🖥️ Основной скрипт
├── config.sh # 🖥️ Главный файл конфигурации
├── redsocks.conf # ⚙️ Конфигурация прокси
├── user_list/
│ ├── domains.txt # 📜 Список ваших доменов для перенаправления
│ └── ips.txt # 📜 Список ваших IP для перенаправления
├── scripts/
│ ├──create_ru_list.sh # 🔄 Скрипт получения всех заюлокированых IP в россии
│ └── update_ips.sh # 🔄 Скрипт обновления IP
├── routing/ # 📜 Файлы с IP-адресами для сайтов
└── logs/ # 🗂️ Директория логов
Все операции записываются в папку logs/
. Для мониторинга в реальном времени:
tail -f logs/redsocks/redsocks.log
Если клиенты получают IP-адреса, но интернет отсутствует, выполните следующие проверки:
sudo systemctl status isc-dhcp-server
# Должен быть активен (active)
sudo cat /var/lib/dhcp/dhcpd.leases
# Должны отображаться выданные клиентам IP
sudo cat /etc/dhcp/dhcpd.conf
# Проверьте наличие:
# - Правильного диапазона (range)
# - Корректного шлюза (option routers)
sudo dhclient -v -r $LAN_IFACE # Сброс текущего DHCP
sudo dhclient -v $LAN_IFACE # Новая попытка получения IP
# На клиенте:
ping 10.0.0.1
# Если недоступно:
# - Проверьте кабельное подключение
# - Убедитесь в правильности выбора LAN-интерфейса
sudo journalctl -u isc-dhcp-server -f
# Ищите ошибки выделения адресов
# На клиенте:
sudo nslookup google.com 10.0.0.1
# Должен вернуть IP-адрес
- Проверьте привязку к интерфейсу:
sudo cat /etc/default/isc-dhcp-server
# INTERFACESv4 должно содержать $LAN_IFACE
- Перезапустите службу:
sudo systemctl restart isc-dhcp-server
Добавьте резервацию:
host printer {
hardware ethernet 00:1A:2B:3C:4D:5E;
fixed-address 10.0.0.50;
}
Выполните на шлюзе:
./proxy.sh --reconfigure_firewall && \
systemctl restart isc-dhcp-server redsocks
После проверок не забудьте сохранить изменения:
netfilter-persistent save
Примечание: Для применения всех изменений может потребоваться перезагрузка клиентов.
- 🔌 Проверьте физическое подключение кабелей
- ⚙️ Убедитесь в правильности выбора WAN-интерфейса
- 🕵️♂️ Проверьте настройки прокси в
redsocks.conf
- 📋 Проверить добавленные IP-адреса доменов:
sudo ipset list proxy_domains
- 📋 Проверить созданы ли правила роутинга:
sudo nft list ruleset
# Должно быть:
# - POSTROUTING
# - PREROUTING
# - PROXY_ROUTE
- 📋 Проверить созданы ли настройки firewall
sudo iptables -t nat -L -nv
# Должно быть:
# - POSTROUTING MASQUERADE
# - PREROUTING REDIRECT
# - PROXY_ROUTE
- 📝 Убедитесь, что домены добавлены в
domains.txt
- 🔄 Выполните принудительное обновление IP:
sudo ./proxy.sh --update-ips
Проверьте синтаксис файлов:
redsocks --test -c config/redsocks.conf
AGPL License. Подробнее см. в файле LICENSE.
🔹 Этот проект предоставляется "как есть" (as-is), без каких-либо гарантий, явных или подразумеваемых. Авторы не несут ответственности за любые прямые или косвенные последствия использования данного программного обеспечения. 🔹 Проект предоставляется в образовательных целях
💻 Разработано: Divarion-D
📂 Репозиторий: https://github.com/Divarion-D/transparent-proxy-gateway