LINUX.ORG.RU
ФорумAdmin

Проброс портов мимо прокси


0

2

Есть компьютерная сеть <- Шлюз на Linux <- Выход в интернет. Настроен непрозрачный прокси с авторизацией. Получилось так, что некоторые программы (клиент-банки, бух. учет....) не настраиваются под прокси и как следствие, не соединяются с сервером.

Подскажите, как в iptables разрешить outgoing allow по некоторым портам или IP адресам, но в обход прокси.

Буду рад любым идеям

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s <комп_из_локалки> -d <куда_стучится> -p <протокол> --dport <номер_порта> -j ACCEPT

Kiteman ()

еще включить в ядре форвардинг
и на забывать NAT

Kiteman ()

В Debian/Ubuntu/Mint делаешь под root'ом такие шаги:

1) создаешь файл /etc/network/iptab.set:

#!/bin/sh

LOCINT=eth0  #глядит в лок. сеть
EXTINT=eth1  #глядит в роутер в режиме "бридж"
PPPINT=ppp0  #поднимается pppoeconf через бридж
LOCNET=192.168.0.0/24
INTSERVERIP=192.168.0.200
INTROUTERIP=192.168.1.1
MAILRUNET=94.100.177.0/24
YARUNET=213.180.204.0/24
GMAILCOM=209.85.135.0/24
POSTBANKIP=212.120.162.37
ABSOLUTIP=91.199.156.22
ADMINIP=51.112.12.22
KAV1=81.177.31.0/24
KAV2=85.12.57.0/24
GLBUH=192.168.0.15
SBIS1=213.187.98.0/24
SBIS2=85.158.55.0/24
SBIS3=217.70.122.0/24
SBIS4=94.25.1.0/24

iptables -F
iptables -X
#iptables -Z

iptables -F -t nat
iptables -X -t nat
#iptables -Z -t nat

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $PPPINT -p tcp --dport 80 -j DROP
iptables -A INPUT -i $PPPINT -p tcp --dport 445 -j DROP
iptables -A INPUT -s $ADMINIP -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s $ADMINIP -p tcp --dport 10001:10255 -j ACCEPT
iptables -A INPUT -i $LOCINT -s $LOCNET -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j LOG --log-prefix "INPUT "
iptables -A INPUT -j DROP

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o $LOCINT -d $LOCNET -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type any -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT "
iptables -A OUTPUT -j DROP

iptables -N icq-out
iptables -A icq-out -d 64.12.0.0/16 -j ACCEPT
iptables -A icq-out -d 205.188.0.0/16 -j ACCEPT
iptables -A icq-out -j DROP

iptables -N usr-out
iptables -A usr-out -p icmp --icmp-type any -j ACCEPT
iptables -A usr-out -p udp --dport 53 -j ACCEPT
iptables -A usr-out -p tcp --dport 5190 -j icq-out
iptables -A usr-out -p tcp -d $MAILRUNET --dport 25 -j ACCEPT
iptables -A usr-out -p tcp -d $MAILRUNET --dport 110 -j ACCEPT
iptables -A usr-out -p tcp -d $YARUNET --dport 25 -j ACCEPT
iptables -A usr-out -p tcp -d $YARUNET --dport 110 -j ACCEPT
iptables -A usr-out -p tcp -d $GMAILCOM --dport 25 -j ACCEPT
iptables -A usr-out -p tcp -d $GMAILCOM --dport 465 -j ACCEPT
iptables -A usr-out -p tcp -d $GMAILCOM --dport 995 -j ACCEPT
#iptables -A usr-out -p tcp --dport 110 -j ACCEPT
iptables -A usr-out -p tcp -d $POSTBANKIP --dport 7011 -j ACCEPT
iptables -A usr-out -p tcp -d $POSTBANKIP --dport 9091 -j ACCEPT
iptables -A usr-out -p tcp -d $ABSOLUTIP --dport 443 -j ACCEPT
#iptables -A usr-out -p tcp --dport 80 -j ACCEPT
#iptables -A usr-out -p tcp --dport 443 -j ACCEPT
#iptables -A usr-out -p tcp --dport 21 -j ACCEPT
iptables -A usr-out -p tcp -d $KAV1 --dport 443 -j ACCEPT
iptables -A usr-out -p tcp -d $KAV2 --dport 443 -j ACCEPT
iptables -A usr-out -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A usr-out -d $SBIS1 -p tcp --dport 25 -j ACCEPT
iptables -A usr-out -d $SBIS2 -p tcp --dport 25 -j ACCEPT
iptables -A usr-out -d $SBIS3 -p tcp --dport 25 -j ACCEPT
iptables -A usr-out -d $SBIS1 -p tcp --dport 80 -j ACCEPT
iptables -A usr-out -d $SBIS2 -p tcp --dport 80 -j ACCEPT
iptables -A usr-out -d $SBIS3 -p tcp --dport 80 -j ACCEPT
iptables -A usr-out -d $SBIS4 -p tcp --dport 80 -j ACCEPT
iptables -A usr-out -d $SBIS1 -p tcp --dport 110 -j ACCEPT
iptables -A usr-out -d $SBIS2 -p tcp --dport 110 -j ACCEPT
iptables -A usr-out -d $SBIS3 -p tcp --dport 110 -j ACCEPT
iptables -A usr-out -d $SBIS1 -p tcp --dport 8585 -j ACCEPT
iptables -A usr-out -d $SBIS2 -p tcp --dport 8585 -j ACCEPT
iptables -A usr-out -d $SBIS3 -p tcp --dport 8585 -j ACCEPT
#iptables -A usr-out -s $GLBUH -p tcp --dport 80 -j DROP
#iptables -A usr-out -s $GLBUH -p tcp --dport 25 -j ACCEPT
#iptables -A usr-out -s $GLBUH -p tcp --dport 80 -j ACCEPT
#iptables -A usr-out -s $GLBUH -p tcp --dport 110 -j ACCEPT
#iptables -A usr-out -s $GLBUH -p tcp --dport 8585 -j ACCEPT
iptables -A usr-out -s $GLBUH -p tcp -j LOG --log-prefix "GLBUH "
iptables -A usr-out -j LOG --log-prefix "LOCFRW "
iptables -A usr-out -j DROP

iptables -N out-usr
iptables -A out-usr -p tcp -s $ADMINIP -j ACCEPT
iptables -A out-usr -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A out-usr -j DROP

iptables -A FORWARD -i $LOCINT -o $PPPINT -s $LOCNET -j usr-out
iptables -A FORWARD -i $PPPINT -o $LOCINT -j out-usr
iptables -A FORWARD -i $PPPINT -o $EXTINT -s $ADMINIP -p tcp -d $INTROUTERIP --dport 80 -j ACCEPT
iptables -A FORWARD -i $EXTINT -o $PPPINT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j LOG --log-prefix "FORWARD "
iptables -A FORWARD -j DROP


iptables -t nat -A POSTROUTING -o $PPPINT -s $LOCNET -d ! $LOCNET -j MASQUERADE
iptables -t nat -A POSTROUTING -o $EXTINT -d 192.168.1.1 -s $ADMINIP -j SNAT --to-source 192.168.1.2

iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10255 -j DNAT --to-destination 192.168.1.1:80
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10001 -j DNAT --to-destination 192.168.0.1:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10014 -j DNAT --to-destination 192.168.0.14:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10015 -j DNAT --to-destination 192.168.0.15:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10017 -j DNAT --to-destination 192.168.0.17:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10020 -j DNAT --to-destination 192.168.0.20:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10021 -j DNAT --to-destination 192.168.0.21:4899
iptables -t nat -A PREROUTING -i $PPPINT -s $ADMINIP -p tcp --dport 10101 -j DNAT --to-destination 192.168.0.101:4899
даешь ему права 755 (chmod 755 ./iptab.set) запускаешь - правила применяются

2) создаешь файл /etc/network/iptab.save

#!/bin/sh
iptables-save > /etc/network/iptables.conf
даешь ему права 755
запускаешь

3) создаешь файл /etc/network/iptables.sh:

#!/bin/sh
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
/sbin/iptables-restore < /etc/network/iptables.conf
даешь ему права 755

4) редактируешь в /etc/network/interfaces интерфейс lo:

auto lo
iface lo inet loopback
pre-up /etc/network/iptables.sh

5) раскомментируешь строку в файле /etc/sysctr.conf:

net.ipv4.ip_forward=1

6) открываешь /boot/grub/grub.cfg, добавляешь selinux=0 в параметры ядра, например так:

linux /vmlinuz-2.6.35-22-generic root=/dev/sda2 ro quiet splash selinux=0

Перезагружаешься.

7) создаешь файл /etc/network/iptab.list:

#!/bin/sh
iptables -L -n -v >./iptab.txt
iptables -L -t nat -n -v >>./iptab.txt
даешь ему права 755
запускаешь

8) смотришь файл iptab.txt, понимаешь, что это именно то, что ты задавал, успокаиваешься.

Пункты 6 и дальше - необязательные.
Если правила в файле /etc/network/iptab.set изменил, запускаешь сначала его, а потом /etc/network/iptab.save.

P.S. Файл настроек используется у одного из моих клиентов в маленькой конторе.

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