И так ситуация такая необходимо всех кто смотрит в тырнет через шлюз (условно обозначим 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 ....
Подскажите, пожалуйста
Заранее благодарен!

2 (04.04.2011 16:05:05 отредактировано Kettler)

А ещё точнее чтоб 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
Может ругаться на синтаксис)

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

3

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

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

4

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

5

сейчас попробую попроще рассказать,
компы 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 порт.

6 (04.04.2011 17:34:00 отредактировано Kettler)

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
как то так я предполагаю

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

7

Чего то я не понимаю, можно по подробнее?
Вот первая строка
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 так?

8

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

9

Ага ну значит понял я правильно, тогда на до вот так
первая строчка
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 будет выполняться первая строчка вот тут и загвоздка

10

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

11

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

12

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

13

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

14 (06.04.2011 09:44:00 отредактировано Kettler)

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

15

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 не попадает под первое правило
во общем как то так получается на скок я тебя понял.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

16

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

17

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

18

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



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

19 (06.04.2011 14:49:18 отредактировано Kettler)

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

20

#!/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 но уже через проксю

21

Ок надо подумать позже выложу что надо наверняка

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

22 (06.04.2011 16:58:38 отредактировано Kettler)

Давай так
nano /home/firewall.sh
туды

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle
 
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
#Маскардинг в инет и локалку
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t nat -A PREROUTING -s 1.1.1.2 -p tcp --dport 3128 -j REDIRECT --to-ports 80
iptables -t nat -A PREROUTING -s 1.1.1.4 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:3128

сохраняем
chmod +x /home/firewall.sh
выполняем
./home/firewall.sh
проверяем с 1.1.1.4 пробуем зайти

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

23

неа тоже не катит. если смотреть трасертом то после шлюза он просто теряется т.е. он даже не перенаправляет на 1.1.1.2

24

причём обрубило тырнет совсем а не только на той машине...