имеется скрипт для 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 пашет
Как быть что делать?
Iptables + squid не пашет
Попробуй вот в скрипте заменить это правило
iptables -A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPTна
iptables -A INPUT -i eth1 -p all -s 192.168.0.0/24 -j ACCEPTтоить дать доступ к серверу из внутреней сети.
имеется скрипт для 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
Vadimsky чисто тебе вопрос если на сквид завернуть 5190 21 22 110 25 3389 он их примит?
На счёт 3389 (Win RDP) не знаю не пробовал, по теории должен, Teamviewer, например, прекрасно через сквид проходит.
Остальные да принимает, 5190 - работает сразу, 21 22 110 25 почта, фтп и ssh - в конфиге сквида нужно правильно прописать для каждого, например фтп он не может кешировать, поэтому должен просто пробрасывать запросы и т.д.
Да, ещё на цепочку OUTPUT нужно дать разрешающие правила для тех портов, котрые заворачиваете в сквид.
Подчёркиваю, именно на OUTPUT, а не на FORWARD, если сквид находится физически на той же машине, что и фаервол (читай шлюз) в интернет.
А вообще, моё наблюдение, что сквид может очень много, хотя в мануалах написано что не может те и те порты пропускать, у меня через него работает даже одна специфичная програмка, которая по утверждениям разработчиков даже в теории не может работать через прокси. И даже обнавляется wink
Так что всё дело в хитрости рук....
smile разницы между OUTPUT и FORWARD знаю :cool:
спс будем ломать и пробовать)
Удачи, спрашивайте, если что smile
[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]
Это опечатка в комментах.
а насчет остального
Попробую завтра и тогда отпишусь.
Не помог ни один из советов.
Попробуй просто выполнить ниже приведённый скрипт и проверь
#!/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
решилось все помогло сделать так
[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]
Все готово вот рабочий скрипт 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]
Дропай
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 слов нет
Дропай
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 нормально проходит туда и обратно.
А вот последнюю не увидел.И правда бесполезная вещь)))