Добрый день. У меня есть VPS с настроенным прокси и роутер на OpenWRT версии 19.07.10, на котором установлен REDSOCKS. В текущем скрипте, приведенном ниже, весь трафик с роутера, кроме локального, перенаправляется через прокси. ```bash START=90 INTERFACE=br-lan PORT=1337 # Проверка существует ли конфигурация [ -e "/etc/redsocks.conf" ] || exit 0 iptable_start() { /bin/echo -n "Запуск iptables для обхода прокси ..." # Команды iptables iptables -t nat -N REDSOCKS iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN # iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports ${PORT} iptables -t nat -A PREROUTING -i ${INTERFACE} -p tcp -j REDSOCKS iptables -A INPUT -i br-lan -p tcp --dport ${PORT} -j ACCEPT /bin/echo " готово" } ``` Как мне изменить этот скрипт, чтобы направлять только конкретный трафик по определенным IP-адресам и подсетям, например, 172.67.182.196, 104.21.32.39, 104.21.50.150, 172.67.163.237 и подсети 74.125.205.0/24, 142.251.1.0/24, 64.233.161.0/24 через прокси, а весь остальной трафик оставить без изменений?
Чтобы перенаправить трафик только с определенных IP-адресов и подсетей через прокси-сервер с помощью iptables, можно изменить ваш скрипт, добавив правила, которые будут фильтровать и направлять только указанные адреса. ```bash START=90 INTERFACE=br-lan PORT=1337 # Проверка существует ли конфигурация [ -e "/etc/redsocks.conf" ] || exit 0 iptable_start() { /bin/echo -n "Запуск iptables для обхода прокси ..." # Команды iptables iptables -t nat -N REDSOCKS # Возвращаем трафик на локальные адреса iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN # Перенаправляем трафик только с указанных IP и подсетей iptables -t nat -A REDSOCKS -d 172.67.182.196 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 104.21.32.39 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 104.21.50.150 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 172.67.163.237 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 74.125.205.0/24 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 142.251.1.0/24 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 64.233.161.0/24 -j REDIRECT --to-ports ${PORT} # Применяем правила к входящему трафику iptables -t nat -A PREROUTING -i ${INTERFACE} -p tcp -j REDSOCKS iptables -A INPUT -i br-lan -p tcp --dport ${PORT} -j ACCEPT /bin/echo " готово" } ``` ### Объяснение изменений: 1. **Фильтрация трафика**: Я удалил все правила, которые перенаправляли трафик, кроме указанных IP-адресов и подсетей. 2. **Каждое правило**: Для каждого IP и подсети добавлено правило, которое перенаправляет трафик на указанный порт. 3. **Общие адреса**: Правила для локальных адресов и multicast оставлены, чтобы не перенаправлять внутренний трафик. ### Замечания - Убедитесь, что ваш прокси-сервер настроен правильно и слушает заданный порт. - Возможно, потребуется адаптировать другие части скрипта под ваши нужды или тестировать его на отдельной среде перед использованием на рабочем сервере.
В приведенном скрипте весь трафик перенаправляется на порт прокси:
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports ${PORT}
Если все перенаправлять не требуется нужно указать трафик к каким адресам/подсетям перенаправлять т.е. вместо выше приведенной строчки указать примерно следующее:
iptables -t nat -A REDSOCKS -d 172.67.182.196 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 104.21.32.39 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 104.21.50.150 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 172.67.163.237 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 74.125.205.0/24 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 142.251.1.0/24 -j REDIRECT --to-ports ${PORT} iptables -t nat -A REDSOCKS -d 64.233.161.0/24 -j REDIRECT --to-ports ${PORT}