LINUX.ORG.RU
решено ФорумAdmin

Завернуть трафик устройств за NAT через Pivoxy. Как?

 , , ,


0

1

Сейчас такие правила:

# Generated by iptables-save v1.4.21 on Sun Mar 22 21:57:58 2015
*mangle
:PREROUTING ACCEPT [8908:879349]
:INPUT ACCEPT [6297:589682]
:FORWARD ACCEPT [1892:228039]
:OUTPUT ACCEPT [9344:65145122]
:POSTROUTING ACCEPT [11254:65375057]
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
COMMIT
# Completed on Sun Mar 22 21:57:58 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 21:57:58 2015
*filter
:INPUT DROP [636:275682]
:FORWARD ACCEPT [1892:228039]
:OUTPUT ACCEPT [9344:65145122]
:BAD_PACKETS - [0:0]
:ICMP_PACKETS - [0:0]
:SAFETY_TRACE - [0:0]
:TCP_PACKETS - [0:0]
:UDP_PACKETS - [0:0]
-A INPUT -j SAFETY_TRACE 
-A INPUT -j BAD_PACKETS 
-A INPUT -p tcp -j TCP_PACKETS 
-A INPUT -p udp -j UDP_PACKETS 
-A INPUT -p icmp -j ICMP_PACKETS 
-A BAD_PACKETS -m conntrack --ctstate INVALID -j DROP 
-A BAD_PACKETS -f -j DROP 
-A BAD_PACKETS -s 127.0.0.0/8 ! -i lo -j DROP 
-A BAD_PACKETS -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate INVALID,NEW -j LOG --log-prefix "iptabler:ip spoofing: " 
-A BAD_PACKETS -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate INVALID,NEW -j REJECT --reject-with tcp-reset 
-A BAD_PACKETS -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -m limit --limit 3/min -j LOG --log-prefix "iptabler:new not syn: " 
-A BAD_PACKETS -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j DROP 
-A BAD_PACKETS -p udp -m udp --dport 113 -m limit --limit 3/min -j LOG --log-prefix "iptabler:udp storm: " 
-A BAD_PACKETS -p udp -m udp --dport 113 -j REJECT --reject-with icmp-port-unreachable 
-A ICMP_PACKETS -p icmp -m icmp --icmp-type 4 -j ACCEPT 
-A ICMP_PACKETS -p icmp -m icmp --icmp-type 0 -j ACCEPT 
-A ICMP_PACKETS -p icmp -m icmp --icmp-type 12 -j ACCEPT 
-A SAFETY_TRACE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
-A SAFETY_TRACE -i lo -j ACCEPT 
-A SAFETY_TRACE -s 192.168.13.0/24 -i eth0 -j ACCEPT 
-A TCP_PACKETS -p tcp -m tcp --dport xxxx -j ACCEPT 
-A TCP_PACKETS -p tcp -m tcp --dport xxxx -j ACCEPT 
-A UDP_PACKETS -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT 
-A UDP_PACKETS -p udp -m udp --dport 123 -j ACCEPT 
COMMIT
# Completed on Sun Mar 22 21:57:58 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 21:57:58 2015
*nat
:PREROUTING ACCEPT [76:12456]
:INPUT ACCEPT [1:60]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A OUTPUT -p tcp -m owner --uid-owner 119 -j ACCEPT 
-A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8118 
-A POSTROUTING -s 192.168.13.0/24 -o ppp0 -j SNAT --to-source 77.66.xxx.xx 
COMMIT
# Completed on Sun Mar 22 21:57:58 2015

http трафик идет через privoxy который болтается на стандартном порту 8118.

А трафик клиентов из подсети 192.168.13.0 нет. Как и их туда завернуть?

РЕШЕНИЕ:

-A PREROUTING -s 192.168.13.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.13.1:8118 
-A OUTPUT -p tcp -m owner --uid-owner 119 -j ACCEPT 
-A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.13.1:8118
Здесь 192.168.13.1 - ip шлюза во внутренней сети. Так же необходимо в настройках privoxi указать его же в listen-address

типа "-A PREROUTING -s ... -p tcp --dport 80 -j DNAT --to-destination ip_proxy:8118"

vel ★★★★★ ()
Ответ на: комментарий от vel

Я пробовал нечто подобное. Ну и сейчас это попробовал - не. Просто на машинах в сети все становится недоступным (((

Кстати, а ip_proxy хотя бы в теории какой должен быть? IP который на внешнем интерфейсе? (я то все пробовал)

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

адрес который слушает pivoxy, IMHO это скорее всего адрес eth0

А этот pivoxy умеет быть прозрачным ?

vel ★★★★★ ()
Ответ на: комментарий от vel

Ну на локальной машине, которая шлюз и на которой он работает - да. Все отлично через него ходит. eth0 - это у меня внутренний интефейс шлюза. Внешка ppp0.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Это понятно :)

В конфиге pivoxy есть пункт listen-address. Он должен быть отличный от 127.0.0.1. Этот адрес и должен быть в DNAT

vel ★★★★★ ()
Ответ на: комментарий от Suntechnic

и еще не забыть «accept-intercepted-requests 1»

vel ★★★★★ ()
Ответ на: комментарий от vel

В конфиге pivoxy есть пункт listen-address. Он должен быть отличный от 127.0.0.1. Этот адрес и должен быть в DNAT

О - теперь запахало! Ну и я прочитал там комменты ))) Да, собака порылась в конфиге privoxy а не iptables оказывается...

Suntechnic ★★★★★ ()
Ответ на: комментарий от Kuzz

на какой из нескольких локальных адресов попадет этот редирект?

В multihomed варианте REDIRECT - непонятно как использовать. Другое дело DNAT!

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

и еще не забыть «accept-intercepted-requests 1»

Без этого он не пашет в режиме прозрачного прокси вообще. На эти грабли я наступал вчера )))

Suntechnic ★★★★★ ()
Ответ на: комментарий от vel

Мать его - если назначать ему адрес машины во внутренней сети - пашут все машины сети, но не пашет тогда на самом шлюзе (((

Suntechnic ★★★★★ ()
Ответ на: комментарий от vel

На тот же, на который пришел изначально.

Ну, раз DNAT заработал, то этот вариант не нужен)

Kuzz ★★★ ()
Ответ на: комментарий от Suntechnic

Потому что он идет через внешний адрес, по default route.

Если pivoxy можно настроить слушать все доступные адреса, то и локально заработает.
А от внешки закрыться iptables-ом.

Kuzz ★★★ ()
Ответ на: комментарий от Kuzz

Я еще раз хочу предупредить - REDIRECT - штука специфическая. Пользоваться ей нужно аккуратно.

vel ★★★★★ ()
Ответ на: комментарий от vel

Первое что сделал -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.13.1:8118

Но тут что-то странное. Вроде говорит что работает когда перехожу на config.privoxy.org но функций своих не выполняет. Может я настройки самого privoxy зашиб. Разбираюсь...

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Браузер при явном указании прокси работает ?

В логах что-нибудь есть ?

Я никогда эту хрень (pivoxy) не использовал, squid - наше фсе :)

vel ★★★★★ ()
Ответ на: комментарий от vel

Сквидгвард загрузил проц у меня до немогу. loadaverage до 27 доходил. Поэтому решил заюзать privoxy.

Кстати вроде нормально все работает. Почему-то на одном сайте не вырезал банеры какакое-то время. Теперь режет только впуть.

Suntechnic ★★★★★ ()
Ответ на: комментарий от vel

Ну кстати, проблему можно отметить как решенную. Спасибо всем!

Далее будем вникать как отстроить сам сервер.

Suntechnic ★★★★★ ()
Ответ на: комментарий от vel

А для https как такое можно провернуть? Аналогичные манипуляции с 443 портом ожидаемых результатов не приносят.

ethix ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.