LinuxForum.Fans
Тема

Iptables + squid не пашет

Автор: komrad-zack 14 сообщений 5761 просмотров
#145697

имеется скрипт для iptables
eth0 внутрь eth1 наружу
[console]
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward
# удалить все действующие правила
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
echo "Old rules removed"
# Правила по умолчанию
iptables -P INPUT DROP #Запрещаем все входящие!
iptables -P OUTPUT ACCEPT #Разрешаем все исходящие!
iptables -P FORWARD DROP #Запрещаем все проходящие (транзит)!
echo "New policy load"
echo "Loading rules"
# Если надо ограничить доступ на определённый порт из какой-то одной сети,
# то правило приобретёт примерно такой вид:
# $IPTABLES -A INPUT -p tcp -m tcp -i $LAN_IFACE --dport #порта -j ACCEPT
echo "Open ports"
# Открываем порты
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #www
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT #ftp
iptables -A INPUT -p tcp -m tcp --dport порт -j ACCEPT #ssh
# Разрешить соединения, которые инициированы изнутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i !eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Enables Ping requests"
# Разрешаем пинг из внутренней сети
iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp -o eth1 --icmp-type echo-request -j ACCEPT
echo "ICMP fragment drop"
# ICMP - перенаправление
# ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
# пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
iptables -A INPUT --fragment -p ICMP -j DROP
iptables -A OUTPUT --fragment -p ICMP -j DROP
echo "Accept forwarding"
# Разрешить доступ из LAN-сети к внешним сетям
#iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport #порта -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 50025 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 50110 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 2226 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 143 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 5223 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 87 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 465 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
echo "Enable Proxy"
# Transparent
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source внешний ip
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128
#iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
echo "Enable RDP to SERVER"
# Перенаправление RDP запросов из внешней сети на windows тачку
iptables -t nat -A PREROUTING -d внешний ip системы/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.25
iptables -t nat -A POSTROUTING -d 192.168.0.25/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source внешний ip системы
iptables -A FORWARD -s 192.168.0.25/32 -p tcp -m tcp --dport 3389 -j ACCEPT
echo "Loading iptables complete"
[/console]
Без этого скрипта инет через squid пашет и подключение к виндовой тачке по правилам
[console]
*nat
:PREROUTING ACCEPT [84045:5230245]
:POSTROUTING ACCEPT [78239:4814593]
:OUTPUT ACCEPT [75248:4531707]
-A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -d внешний ip/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.25
-A POSTROUTING -d 192.168.0.25/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source внешний ip
[/console]

С ним не работает инет,пинги тоже не идут наружу,подключение к серверу виндовому тоже не работает
,хотя наружу RDP пашет
Как быть что делать?

#145765

Попробуй вот в скрипте заменить это правило

text
iptables -A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT

на

text
iptables -A INPUT -i eth1 -p all  -s  192.168.0.0/24  -j ACCEPT

тоить дать доступ к серверу из внутреней сети.

#145778
komrad-zack написал:
имеется скрипт для iptables
eth0 внутрь eth1 наружу

Вы уверенны?
Судя по скрипту iptables всё совсем наоборот.
Вот например:
[console]# Разрешаем пинг из внутренней сети
iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp -o eth1 --icmp-type echo-request -j ACCEPT[/console]

или я чегойто не пойму...

И если у вас внешний статический адрес то использовать маскарад не лучшая идея

ИМХО вот так правильнее будет:

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j SNAT --to-source $WAN1 #ваш внешний IP

#145782

Vadimsky чисто тебе вопрос если на сквид завернуть 5190 21 22 110 25 3389 он их примит?

#145789

На счёт 3389 (Win RDP) не знаю не пробовал, по теории должен, Teamviewer, например, прекрасно через сквид проходит.
Остальные да принимает, 5190 - работает сразу, 21 22 110 25 почта, фтп и ssh - в конфиге сквида нужно правильно прописать для каждого, например фтп он не может кешировать, поэтому должен просто пробрасывать запросы и т.д.
Да, ещё на цепочку OUTPUT нужно дать разрешающие правила для тех портов, котрые заворачиваете в сквид.
Подчёркиваю, именно на OUTPUT, а не на FORWARD, если сквид находится физически на той же машине, что и фаервол (читай шлюз) в интернет.
А вообще, моё наблюдение, что сквид может очень много, хотя в мануалах написано что не может те и те порты пропускать, у меня через него работает даже одна специфичная програмка, которая по утверждениям разработчиков даже в теории не может работать через прокси. И даже обнавляется wink
Так что всё дело в хитрости рук....

#145792

smile разницы между OUTPUT и FORWARD знаю :cool:
спс будем ломать и пробовать)

#145793

Удачи, спрашивайте, если что smile

#145795
Vadimsky написал:
[quote=komrad-zack]имеется скрипт для iptables
eth0 внутрь eth1 наружу

Вы уверенны?
Судя по скрипту iptables всё совсем наоборот.
Вот например:
[console]# Разрешаем пинг из внутренней сети
iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp -o eth1 --icmp-type echo-request -j ACCEPT[/console]

или я чегойто не пойму...

И если у вас внешний статический адрес то использовать маскарад не лучшая идея

ИМХО вот так правильнее будет:

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j SNAT --to-source $WAN1 #ваш внешний IP[/quote]
Это опечатка в комментах.
а насчет остального
Попробую завтра и тогда отпишусь.

#145908

Не помог ни один из советов.

#145915

Попробуй просто выполнить ниже приведённый скрипт и проверь

text

#!/bin/sh
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 DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP

# Открываем порты iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #www iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT #ftp iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #ssh iptables -A INPUT -p tcp -m udp --dport 53 -j ACCEPT #dns

#разрешаем локальный траффик для локальной сети iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT

# Разрешаем пинг из внешки iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-reply -j ACCEPT iptables -A OUTPUT -p icmp -m icmp -o eth1 --icmp-type echo-request -j ACCEPT iptables -A INPUT --fragment -p ICMP -j DROP iptables -A OUTPUT --fragment -p ICMP -j DROP

# Разрешить доступ из LAN-сети к внешним сетям iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 50025 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 50110 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 2226 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 143 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 993 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 5223 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 87 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 465 -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 22 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 21 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 3389 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 25 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 50025 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 50110 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 110 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 2226 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 143 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 993 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 5223 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 87 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 465 -j ACCEPT

# Masquerade. iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Transparent iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128

#145931

решилось все помогло сделать так
[console]iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128[/console]
и убрать маскарад.
+ добавил
[console]# Пропускаем обратную петлю
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
# Пропускаем пакеты уже установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
и еще в форвандинге поправил
с
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport
на
iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport
[/console]

#146115

Все готово вот рабочий скрипт eth0 внутрь eth1 наружу
[console]
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward
# удалить все действующие правила
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
echo "Old rules removed"
# Правила по умолчанию
iptables -P INPUT DROP #Запрещаем все входящие!
iptables -P OUTPUT ACCEPT #Разрешаем все исходящие!
iptables -P FORWARD DROP #Запрещаем все проходящие (транзит)!
echo "New policy load"
echo "Loading rules"
# Пропускаем обратную петлю
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
# Пропускаем пакеты уже установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Open ports"
# Открываем порты
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #www
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT #ftp
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #ssh
iptables -A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT #RDP
echo "Enables Ping requests"
# Разрешаем пинг
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -A OUTPUT -o eth1 -p icmp -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT
echo "ICMP fragment drop"
# ICMP - перенаправление
# ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
# пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
iptables -A INPUT --fragment -p ICMP -j DROP
iptables -A OUTPUT --fragment -p ICMP -j DROP
echo "Accept rdp connect"
# Перенаправление RDP запросов из внешней сети на windows RDP 192.168.0.25
iptables -t nat -A PREROUTING -d внешний_ip/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.25:3389
iptables -t nat -A POSTROUTING -d 192.168.0.25/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source внешний_ip
iptables -A FORWARD -d 192.168.0.25/32 -o eth0 -p tcp -m tcp --dport 3389 -j ACCEPT
echo "Accept forwarding"
# Перенаправление запросов из внутренней сети наружу
#iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport порт -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp -m tcp --dport 3389 -j ACCEPT #RDP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT #SSH
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 21 -j ACCEPT #FTP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 25 -j ACCEPT #SMTP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 110 -j ACCEPT #POP3
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 143 -j ACCEPT #IMAP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 993 -j ACCEPT #IMAPS
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 5223 -j ACCEPT #Google Talk
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 465 -j ACCEPT #GMail

# Запрещаем доступ из внешней сети на порт
iptables -A INPUT -i eth1 -p tcp -m tcp --dport 3001 -j DROP
# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
# Transparent
iptables -A INPUT -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source внешний_ip
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128 #Transparent SQUID
echo "Loading iptables complete"
[/console]

#146206

Дропай
iptables -P OUTPUT ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT #SSH
не вижу обратного прохождения

# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
да уш :D слов нет

#146421
Kettler написал:
Дропай
iptables -P OUTPUT ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT #SSH
не вижу обратного прохождения

# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
да уш :D слов нет

Исходящий решили не дропать.
SSH нормально проходит туда и обратно.
А вот последнюю не увидел.И правда бесполезная вещь)))

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