Добрый день. У меня есть 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}