Использование redsocks с iptables и nftables для перенаправления трафика запросов.
Должено быть настроено защищённое подключение, например SOCKS5
, через которое будем пропускать трафик. Используем redsocks
для перенаправления трафика до цели с определённым IP-адресом через это защищённое подключение. Поскольку redsocks
не предоставляет возможности настройки файрвола, был написан скрипт, который читает IP-адреса из файла конфигурации и помогает быстро произвести настройки.
В системе должна быть установлена утилита 'host'
Shell> sudo apt install dnsutils -y
or
Shell> sudo yum install bind-utils
or
...
В этом репозитории есть скомпилированный бинарник для стабильной версии redsocks
(скомпилированы версии x86_64
и aarch64
при помощи alpine musl gilbc
, чтобы не устанавливать зависимости).
- Установка:
Shell> sudo ./install.sh # Установка для системы с iptables
please tell me you socks_server: 127.0.0.1 # Введите адрес прокси-сервера SOCKS5
please tell me you socks_port: 10808 # Введите порт прокси-сервера SOCKS5
or
Shell> sudo ./install.ntf.sh # Установка для системы с nftables
- Запуск redsocks:
Shell> sudo service redsocks start
- Выбор режима работы:
Глобальный режим прокси-сервера
Shell> sudo rs-proxyall # Включает режим глобального прокси
your iptabls OUTPUT chain like this....
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 RETURN tcp -- * * 0.0.0.0/0 192.168.188.0/24
2 0 0 RETURN tcp -- * * 0.0.0.0/0 127.0.0.1
3 0 0 RETURN tcp -- * * 0.0.0.0/0 127.0.0.1
4 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 redir ports 12345
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Частичное проксирование
В этом режиме проксируются только хосты, указанные в файле ToProxy.list
.
Shell> sudo rs-proxy
this ip[216.58.194.99] will use proxy connected ....
this ip[180.97.33.107] will use proxy connected ....
your iptabls OUTPUT chain like this....
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 RETURN tcp -- * * 0.0.0.0/0 192.168.188.0/24
2 0 0 RETURN tcp -- * * 0.0.0.0/0 127.0.0.1
3 0 0 RETURN tcp -- * * 0.0.0.0/0 127.0.0.1
4 0 0 REDIRECT tcp -- * * 0.0.0.0/0 216.58.194.99 redir ports 12345
5 0 0 REDIRECT tcp -- * * 0.0.0.0/0 180.97.33.107 redir ports 12345
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
- Выключение проксирования (удаляются правила файрвола) и остановка сервисов:
Shell> sudo service redsocks stop # Остановка прокси-сервера redsocks
- Добавление и удаление IP-адресов по имени хоста, к которым нужен доступ через прокси (в файле ToProxy.list). При этом будут созданы новые правила файрвола.
Shell> sudo rs-manage-ip -a google.ru # Добавление IP-адресов google.ru
Shell> sudo rs-manage-ip -d google.ru # Удаление IP-адресов google.ru
- Принудительный перезапуск прокси (для применения новых записей из ToProxy.list) Если вам нужен перезапуск прокси, то нужно обновить и правила для файрвола. Для этого не обязательно перезапускать сервис redsocks, нужно выполнить:
Shell> sudo rs-restart # Применяет новые правила для файрвола
- Если вы хотите изменить параметры подключения к Socks серверу (адрес или порт), то запустите 'install.sh' ещё раз.
apk --no-cache add busybox-extras musl-dev linux-headers libevent-static libevent-dev musl-dev gcc make vim bash