Здравствуйте знатоки iptables - этот вопрос для вас!
имееться сеть 169.254.0.0/24 - которую мы пускаем через прокси
но есть хосты которые должны этот прокси миновать спрашиваеться -как это реализовать?
Решено: Iptables (настройка редиректа с исключениями)
Модераторы: SLEDopit, Модераторы разделов
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Решено: Iptables
Напряг мозг и понял, что в сети на шлюзе (который для всех является шлюзом по-умолчанию) настроен редирект с помощью iptables на прокси-сервер, наверное даже squid, наверное даже работающий на этом же шлюзе, наверное даже в прозрачном режиме, иначе не работало бы...
Задача: сделать так, чтоб все так дальше и работали через прозрачный прокси, а некоторые - напрямую через шлюз (без прокси)
Если я тебя правильно понял, то просто перед правилом файервола типа:
iptables -t nat -A PREROUTING -s 169.254.0.0/24 -d !169.254.0.0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
вставить строки
iptables -t nat -A PREROUTING -s 169.254.0.1 -d !169.254.0.0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -s 169.254.0.2 -d !169.254.0.0 -p tcp --dport 80 -j ACCEPT
Таким образом над пакетами данного типа выполнится правило "разрешить" и дальше по критериям файервол не пойдет.
Задача: сделать так, чтоб все так дальше и работали через прозрачный прокси, а некоторые - напрямую через шлюз (без прокси)
Если я тебя правильно понял, то просто перед правилом файервола типа:
iptables -t nat -A PREROUTING -s 169.254.0.0/24 -d !169.254.0.0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
вставить строки
iptables -t nat -A PREROUTING -s 169.254.0.1 -d !169.254.0.0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -s 169.254.0.2 -d !169.254.0.0 -p tcp --dport 80 -j ACCEPT
Таким образом над пакетами данного типа выполнится правило "разрешить" и дальше по критериям файервол не пойдет.
-
skor
- Сообщения: 419
- ОС: RTFM-OS v127.0.0.1
Re: Решено: Iptables
iptables -A PREROUTING -t nat -s 169.254.0.10 -j ACCEPT
iptables -A PREROUTING -t nat -s 169.254.0.12 -j ACCEPT
iptables -A PREROUTING -t nat -s 169.254.0.20 -j ACCEPT
....
iptables -A PREROUTING -t nat -s 169.254.0.0/24 -p tcp --dport 80 -j REDIRECT 3128
...
iptables -A POSTROUTING -t nat -s 169.254.0.0/24 -j SNAT --to-source x.x.x.x <<<---- чтоб наружу не уходили с "серыми" адресами
Опередили
iptables -A PREROUTING -t nat -s 169.254.0.12 -j ACCEPT
iptables -A PREROUTING -t nat -s 169.254.0.20 -j ACCEPT
....
iptables -A PREROUTING -t nat -s 169.254.0.0/24 -p tcp --dport 80 -j REDIRECT 3128
...
iptables -A POSTROUTING -t nat -s 169.254.0.0/24 -j SNAT --to-source x.x.x.x <<<---- чтоб наружу не уходили с "серыми" адресами
Опередили
-
neol
- Сообщения: 600
- ОС: Debian Stable
-
danger08
- Сообщения: 715
- ОС: Linux (CentOS, Ubuntu)
Re: Решено: Iptables
(pelmen) писал(а):Задача: сделать так, чтоб все так дальше и работали через прозрачный прокси, а некоторые - напрямую через шлюз (без прокси)
Можно сделать красивее, сделать универсальное решение (не прерывая последовательности прохождения по цепочкам).
В решении "-A PREROUTING -s 169.254.0.0/24 -d !169.254.0.0" логика неочевидна (имхо, конечно).
Маркируем пакеты, которые не должны заворачиваться на прокси, например:
Код: Выделить всё
# пакеты с адресом назначения 194.226.32.15
iptables -t mangle -A PREROUTING -i eth0 -d 194.226.132.15 -j MARK --set-mark 5
# пакеты с адресом источника 192.154.0.10
iptables -t mangle -A PREROUTING -i eth0 -d 169.254.0.10 -j MARK --set-mark 5
# и т.д., в общем, маркируете все то, что не должно идти на проксиА потом заворачиваете весь трафик, который подпадает под критерии редиректа, кроме специально маркированного:
Код: Выделить всё
iptables -t nat -A PREROUTING -i eth0 -m mark ! --mark 5 -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-ports 3128Блогосайт - http://www.fateyev.com