LinuxForum.Fans
Тема

CentOS-ClaerOS Необходимо перенаправить всё подсеть кроме 1 ip

Автор: skyshooter 24 сообщений 5869 просмотров
#147921

И так ситуация такая необходимо всех кто смотрит в тырнет через шлюз (условно обозначим 1.1.1.1 - это шлюз 1.1.1.2 это прокси), надо так чтоб при обращение, кого либо из данной подсети, через 80 порт его перенаправляло на 1.1.1.2:3128 прокси только так чтоб этот же 1.1.1.2 свободно обращался к шлюзу через 80 ну т.е. чтоб не получилась петля.
Прочитал не мало литературы и про xinetd + netcat и про rinetd, но что-то как то не то думаю всё таки остановиться на iptables и про него тоже прочитано не мало, вот например что скорее всего стоит использовать:
iptables -t nat -A PREROUTING -d EXT_IP -i EXT_IF -p tcp -m tcp --dport 8101 -j DNAT -to-destination INT_IP:80
iptables -t nat -A POSTROUTING -d INT_IP -o EXT_IF -p tcp -m tcp --dport 80 -j SNAT --to-source EXT_IP
iptables -A FORWARD -d INT_IP -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
INT_IP - ip на который осуществляем проброс
EXT_IF - номер eth (0,1...) смотрящего наружу
EXT_IP - внешний ip.


либо
-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128


но как это всё использовать в моём случае я что-то не понимаю ....да ещё ведь надо исключить из этого правила один ip ....
Подскажите, пожалуйста
Заранее благодарен!

#147924

А ещё точнее чтоб 1.1.1.2 не обращался на 1.1.1.2:3128
?
Попробовать такс
iptables -t nat -I PREROUTING 1 -s 127.0.0.1 -p tcp -m tcp -j REDIRECT --to-ports 80
Может ругаться на синтаксис)

#147953

точнее, 1.1.1.2 это ещё один сервак на котором стоит прокси через стандартный порт 3128 и соответственно он тоже смотрит в интернет через шлюз 1.1.1.1 используя 80 порт, т.е. если 1.1.1.2 не исключить из правила получиться что когда на него перешлют любой ip из сетки он через прокси и сама прокся полезет в тырнет через шлюз используя 80 порт и тут сработает правило которое проксю перебросить на проксю чтот опять пробовал пройти в интернет, вот и петля...

А почему стоит указывать локалхост если надо всё подсеть да ещё так чтоб всё они пошли на 1.1.1.2 на порт 3128

#147966

Накидаю схему не пойму или может кто другой вкурит

#147980

сейчас попробую попроще рассказать,
компы 1.1.1.5-1.1.1.9 смотрят в тырнет напрямую через шлюз 1.1.1.1 используя 80 порт. это есть
надо, чтоб они же шлюзом при обращении на 80 были переправлены на 1.1.1.2 через порт 3128 и исключить переадресацию 1.1.1.2 когда он полезит на шлюз (1.1.1.1) используя 80 порт.

#147983

iptables -t nat -A PREROUTING -p tcp --dport 3128 -j DNAT --to-destination 1.1.1.2:3128
iptables -t nat -A PREROUTING -s 1.1.1.2 -p tcp --dport 80 -j REDIRECT --to-ports 3128
?
Это всё на 1.1.1.1
как то так я предполагаю

#148196

Чего то я не понимаю, можно по подробнее?
Вот первая строка
iptables -t nat -A PREROUTING -p tcp --dport 3128 -j DNAT --to-destination 1.1.1.2:3128
что отсюда следует всех кто идёт используя 3128 отправить на 1.1.1.2 на тот же порт 3128. я правельно понимаю структуру?
а вторая строчка
iptables -t nat -A PREROUTING -s 1.1.1.2 -p tcp --dport 80 -j REDIRECT --to-ports 3128
говорит о том что кто стучиться на 1.1.1.2 через порт 80 направить на порт 3128 так?

#148226

Первая кто стучиться на 1.1.1.1:3128 идёт на 1.1.1.2:3128
вторая кто идёт с 1.1.1.2:80 идёт на 1.1.1.1:3128

#148239

Ага ну значит понял я правильно, тогда на до вот так
первая строчка
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:3128
А вот вторая строчка не актуальна
на 1.1.1.1 порта 3128 у меня нет
а если написать чтоб с 1.1.1.2:80 он шёл на 1.1.1.1:80 будет выполняться первая строчка вот тут и загвоздка

#148257

Ещё какие вопросы?

#148293

так вот вопрос то и остаётся как сделать так чтоб 1.1.1.2 шёл на 1.1.1.1 через 80 порт но чтоб для него не выполнялось правило по 1 строчке

#148316

Легко!!! Разобраться в своей сети и настроить по человечески а не через задний проход.
Щас поясню для чего! Кривость собранной сети, на фиг слать друг через друга пакеты?

#148476

Да, у меня есть мысль поставить на шлюз проксю, но шлюз это просто комп там сделано пару шар сам шлюз и почта а есть реально сервак на котором организован прокси...А ещё это более удароустойчивая система чем всё на одном серваке т.е. пробросив пакеты таким образом злоумышленник например не будет знать что пакеты проходят через проксю а не напрямую через шлюз ...

#148481

squid вроде умеет работать через прочий прокси. На что намекаю ставь на 1.1.1.1 сквид и ему указывай прокси на 1.1.1.2
Поидее понял в течении дня попробую что нибудь придумать

#148538

iptables -t nat -A PREROUTING -s 1.1.1.5 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:3128
iptables -t nat -A PREROUTING -s 1.1.1.2 -p tcp --dport 3128 -j REDIRECT --to-ports 80

Смотри при такой схеме)
с 1.1.1.5:80 -> 1.1.1.2:3128
1.1.1.2:3128 - > 1.1.1.1:80

и 1.1.1.1:80 не попадает под первое правило
во общем как то так получается на скок я тебя понял.

#148555

Спасибо, попробую сегодня, у меня тоже появилось пару надумок, потом отпишусь что получилось
А как думаешь в этой схеме не надо использовать
iptables -A FORWARD .... ?
Просто читал что бывает не срабатываю перенаправления без форварда (как я понял он идёт в схеме iptables после прероутинга и получается прероутинг отрабатывается а форвард не пропускает)

#148564

А покажи вывод
iptables -L -n

#148611

Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x12/0x12 state NEW reject-with tcp-reset
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
DROP all -- 127.0.0.0/8 0.0.0.0/0
DROP all -- 169.254.0.0/16 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 3
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 11
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:67 dpt:68
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:20
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:110
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 8.6.34.58 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:1875
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:5522
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:85
ACCEPT 47 -- 0.0.0.0/0 8.6.34.58
ACCEPT tcp -- 0.0.0.0/0 8.6.34.58 tcp dpt:1723
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:1024:65535 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 1.1.1.16 tcp dpt:5558
ACCEPT tcp -- 0.0.0.0/0 1.1.1.16 tcp dpt:5558
ACCEPT tcp -- 0.0.0.0/0 1.1.1.58 tcp dpt:5557
ACCEPT tcp -- 0.0.0.0/0 1.1.1.58 tcp dpt:5557
ACCEPT tcp -- 0.0.0.0/0 1.1.1.15 tcp dpt:5559
ACCEPT tcp -- 0.0.0.0/0 1.1.1.15 tcp dpt:5559
ACCEPT tcp -- 0.0.0.0/0 1.1.1.10 tcp dpt:5555
ACCEPT tcp -- 0.0.0.0/0 1.1.1.10 tcp dpt:5555
ACCEPT tcp -- 0.0.0.0/0 1.1.1.2 tcp dpt:5555
ACCEPT tcp -- 0.0.0.0/0 1.1.1.2 tcp dpt:5555
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:68 dpt:67
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:25
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:20
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:21
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:80
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:143
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:110
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:53
ACCEPT udp -- 8.6.34.58 0.0.0.0/0 udp spt:53
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:443
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:1875
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:5522
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:85
ACCEPT 47 -- 8.6.34.58 0.0.0.0/0
ACCEPT tcp -- 8.6.34.58 0.0.0.0/0 tcp spt:1723
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

Chain drop-lan (0 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0



Ну впринцепи я допёр зачем иногда прописывают форвардс я его просто пробрасываю через некую веб морду поэтому немного не знаком был с данной коммандой. но у меня внутри сети так что впринцепи форвардс мне и не нужен

#148623

Нужен покаж весь iptables скрипт
Chain FORWARD (policy DROP)

#148675

#!/bin/bash

# Lockfile location
FW_LOCKFILE="/var/run/firewall.pid"

# iptables for 2.6.9 kernel
KERNELVER=`uname -r | grep ^2.6.9-`
if ( [ -n "$KERNELVER" ] && [ -x /sbin/compat-iptables ] ); then
IPTABLESBIN="/sbin/compat-iptables"
else
IPTABLESBIN="/sbin/iptables-bin"
fi

RC=0
while true; do
if (set -o noclobber; echo "$$" > "$FW_LOCKFILE") 2> /dev/null; then
trap 'rm -f "$FW_LOCKFILE"; exit $RC' INT TERM EXIT
$IPTABLESBIN $@
RC=$?
break
fi
PID=$(cat $FW_LOCKFILE)
if [ -z "$PID" -o ! -d "/proc/$(cat $FW_LOCKFILE)" ]; then
rm -f "$FW_LOCKFILE"
continue
fi
sleep 1
done



Да, не прокатило, сетка повисла и как ты предлагал и мои наработки тоже не прокатили
А вот у тебя первая строчка 1.1.1.5 это к чему ? ну я так понял там 1.1.1.1
Да и вообще чего то я перечитал ещё раз, совсем запутался, наверно всё таки не так понял мне
попробую показать на простейшей схеме
1.1.1.2 -->1.1.1.1:80
1.1.1.1:80 ---> 1.1.1.2:3128
Почему это на первой строчке так как iptables выполняется до первого совпадения т.е. на первую строчку надо поставить разрешение на прямой проход в тырнет через шлюз айпишнику 1.1.1.2 а если это не 1.1.1.2 а любой другой получается первая строчка проходит не отработавшись и попадает под второе правило.

а вообще чтоб было проще возьмём ip пользюка 1.1.1.4 и он хочет в тырнет надо чтоб было так
1.1.1.4 --> 1.1.1.1:80 --> 1.1.1.2:3128 --> 1.1.1.1:80 и вот он тырнет для 1.1.1.4 но уже через проксю

Войдите или зарегистрируйтесь, чтобы ответить.