перенаправить все протоколы и все порты на socks5 прокси с использованием iptables и ip6tables

Вопрос или проблема

Я хочу перенаправить все протоколы, tcp, udp, icmp и т.д. через все порты 1-65535 на прокси, работающий на моем локальном хосте 127.0.0.1:3128

Я могу установить глобальные правила прокси, но это будет только для http, https и ftp в /etc/environment

Я хочу, чтобы это было включено как для ipv4, так и для ipv6

У меня это уже работало с iptables, поэтому я знаю, что это возможно, просто не помню, как я это сделал

Я пробовал:

sudo iptables -t nat -A OUTPUT -p tcp --match multiport --dports 1:65535 -j DNAT --to-destination 127.0.0.1:3128

вместе с аналогичной командой для ip6tables с ipv6 локальным хостом на порту 3128

Это также было вместе с несколькими другими командами для udp и других протоколов

Я также пробовал настроить пересылку ipv4 и ipv6 в /etc/sysctl.conf

При всех моих попытках иногда пакеты выходят, но не приходит ничего, или возникают таймауты

Я пытался сделать это в течение нескольких часов, и ближе всего к ответу оказалось, что кто-то в комментарии сказал, что мне следует установить nginx в качестве обратного прокси, потому что это ‘правильный способ’ сделать это, но я не запускаю веб-сервер, я просто хочу, чтобы весь трафик проходил через мой локальный прокси

Ответ или решение

Для перенаправления всего трафика (включая все протоколы и порты) через SOCKS5-прокси, работающий на локальном хосте (127.0.0.1:3128), с использованием инструментов iptables и ip6tables, необходимо выполнить несколько шагов. Рассмотрим весь процесс подробно.

Общая Концепция

Первоначально важно понимать, что iptables и ip6tables предназначены в основном для работы с пакетами IP, и хотя вы можете настраивать NAT для TCP и UDP, ICMP-пакеты не могут быть перенаправлены таким образом. Однако, для большинства сценариев, включая HTTP(S) и другие протоколы, TCP и UDP решат вашу задачу.

Предварительная Подготовка

  1. Убедитесь, что пакет dante-server (или другой SOCKS5-прокси) установлен и запущен на вашем локальном устройстве на порту 3128. Если у вас его нет, вы можете установить его с помощью:

    sudo apt-get install dante-server
  2. Проверьте, что ваши правила iptables не блокируют локальный трафик. Вам может понадобиться временно сбросить свои правила или добавить новые, чтобы убедиться, что они не мешают локальному трафику.

Настройка iptables для IPv4

  1. Перенаправление TCP и UDP трафика:

    Чтобы перенаправить весь TCP и UDP трафик на ваш SOCKS5-прокси, используйте следующие команды:

    # Для TCP
    sudo iptables -t nat -A OUTPUT -p tcp -m multiport --dports 1:65535 -j DNAT --to-destination 127.0.0.1:3128
    
    # Для UDP
    sudo iptables -t nat -A OUTPUT -p udp -m multiport --dports 1:65535 -j DNAT --to-destination 127.0.0.1:3128
  2. Не забудьте разрешить исходящие подключения к прокси-серверу:

    sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 --dport 3128 -j ACCEPT
    sudo iptables -A OUTPUT -p udp -d 127.0.0.1 --dport 3128 -j ACCEPT

Настройка ip6tables для IPv6

Аналогично для IPv6, используйте следующие команды:

# Для TCP
sudo ip6tables -t nat -A OUTPUT -p tcp -m multiport --dports 1:65535 -j DNAT --to-destination ::1:3128

# Для UDP
sudo ip6tables -t nat -A OUTPUT -p udp -m multiport --dports 1:65535 -j DNAT --to-destination ::1:3128

Проверка и Тестирование

После выполнения вышеуказанных команд рекомендуется протестировать, правильно ли перенаправляется трафик. Вы можете использовать утилиты вроде curl, wget или traceroute, чтобы убедиться, что трафик проходит через прокси.

Важные Заметки

  1. Настройки Sysctl: Убедитесь, что ваши настройки в /etc/sysctl.conf включают:

    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding = 1

    Примените изменения с помощью:

    sudo sysctl -p
  2. Персистентность Правил: Чтобы ваши правила сохранялись после перезагрузки, вам может понадобится установить iptables-persistent или ручное добавление в сценарий инициализации системы.

  3. Безопасность: Убедитесь, что ваш прокси-сервер настроен безопасно и доступен только для локальных соединений.

Заключение

Используя вышеприведённые команды, вы сможете перенаправить весь трафик через локальный SOCKS5-прокси как для IPv4, так и для IPv6 с помощью iptables и ip6tables. Обязательно проводите тестирование и при необходимости корректируйте правила для достижения желаемых результатов. Сохраняйте хорошую практику в безопасности конфигурации сетевых правил.

Оцените материал
Добавить комментарий

Капча загружается...