Собственно, почитал вот это http://www.opennet.me/docs/RUS/iptables/#HOWARULEISBUILT и много другого, но толком ничего не понял.
Стоит задача:
1)настроить шлюз на debian
2)настроить проброс портов для всяких внешних приложений
3)настроить маршрутизацию внутри сети (если это нужно, потому как я не догоняю, как шлюз будет и будет ли вообще (все компы и точки доступа в локале подключены через тупой свитч) пересылать пакеты от одного локального клиента другому локальному клиенту)
4)настроить удаленный доступ к серваку по ssh
5)правила iptables поставить в автозагрузку
6)запретить определенные сайты для всех кроме определенных ipЧто я сделал, но ,к сожалению, нормально даже это не заработало:
1) ну дебиан7 я поставил, управление по ssh, обе сетевые настроены: eth1 это локалка,
eth0 это в интернет(статика). Настроил dhcp, с ним все как надо.
2)для блокировки сайтов поставил squid3, запускается с конфигом без ошибок, настроен как прозрачный, порт 3128
3)на этапе настроек iptables уперся в не понимание его работы, на руках только готовые правила отсюда http://howitmake.ru/blog/ubuntu/86.html
раскомментил строку net.ipv4.ip_forward=1 в файле /etc/sysctl.confiptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuс этими настройками интернет заработал на одном ноутбуке подключенном через точку доступа->свитч->шлюз, кучу других в интернет не пустило, большинство подключены к свитчу
настройки iptables загружаю через строку в /etc/network/interfaces # iptables-restore > /etc/iptables-save
есть примерные наборы правил, но в каком порядке их писать и будут ли они работать как надо, и где ошибка, не могу сейчас разобраться
подскажите, пожалуйста, какие правила написаны не правильно, и где бы почитать мануал попроще чем по ссылке в начале
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
это правило подменяет адрес пакетам из локальной сети?
для обратных пакетов нужно ли что либо еще?
#iptables -A FORWARD -i eth0 -o eth0 -j REJECT
это правило для маршрутизации пакетов в локалке, без интернета?
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
вот это правило вообще не понимаю
хочу добавить проброс портов правилом
iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
заработает ли оно и куда ставить все эти пробросы портов?# правила для прокси, вроде бы перенаправляют, раз один компьютер сайты открывал
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to "ipпрокси_и_шлюза":3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
будет ли их достаточно для открывания страничек в том числе по https?#для ssh, достаточно ли этого правила для подключения с обеих сторон от шлюза?
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPTя понимаю, что никто не обязан мне помогать или что нибудь объяснять, буду благодарен за любую помощь, ссылки, объяснения, критику и прочее.
> Собственно, почитал вот это http://www.opennet.me/docs/RUS/iptables/#HOWARULEISBUILT
> и много другого, но толком ничего не понял.
> Стоит задача:
> 1)настроить шлюз на debian
> 2)настроить проброс портов для всяких внешних приложений
> 3)настроить маршрутизацию внутри сети (если это нужно, потому как я не догоняю,
> как шлюз будет и будет ли вообще (все компы и точки
> доступа в локале подключены через тупой свитч) пересылать пакеты от
> одного локального клиента другому локальному клиенту)в таблице маршрутизации есть маршрут для локальной подсети согласно которому клиенты будут обмениваться пакетами на прямую, даже если прописан шлюз
>[оверквотинг удален]
> только готовые правила отсюда http://howitmake.ru/blog/ubuntu/86.html
> раскомментил строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf
> iptables -F
> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> iptables -A FORWARD -i eth0 -o eth0 -j REJECT
> iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> с этими настройками интернет заработал на одном ноутбуке подключенном через точку доступа->свитч->шлюз,
> кучу других в интернет не пустило, большинство подключены к свитчу
> настройки iptables загружаю через строку в /etc/network/interfaces # iptables-restore
> > /etc/iptables-saveэто не загрузка ,а перенаправление вывода iptables-restore в файл /etc/iptables-save
> есть примерные наборы правил, но в каком порядке их писать и
> будут ли они работать как надо, и где ошибка, не могу
> сейчас разобраться
> подскажите, пожалуйста, какие правила написаны не правильно, и где бы почитать мануал
> попроще чем по ссылке в началетам и так просто и понятно для понимающих как работает сеть, после первого прочтения может получится каша в голове, но как только начинаете сами писать правила все проясняется.
> # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> это правило подменяет адрес пакетам из локальной сети?да
> для обратных пакетов нужно ли что либо еще?автоматом, в мануале сказано
> #iptables -A FORWARD -i eth0 -o eth0 -j REJECT
> это правило для маршрутизации пакетов в локалке, без интернета?блокирует с уведомлением пакеты которые пришли и должны были уйти через eth0
> # iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> вот это правило вообще не понимаюпри проблемах с mtu, если проблем нет то не нужно его вставлять, ну и логичней было бы -A, а не -I
> хочу добавить проброс портов правилом
> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
> заработает ли оно и куда ставить все эти пробросы портов?да если в таблице фильтров разрешено прохождение для этих пакетов и для ответов
> # правила для прокси, вроде бы перенаправляют, раз один компьютер сайты открывал
> iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j
> DNAT --to "ipпрокси_и_шлюза":3128да
> iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
> REDIRECT --to-port 3128заварачивать на прокси то что пришло с инета опасно
> будет ли их достаточно для открывания страничек в том числе по https?https будет идти через MASQUERADE
> #для ssh, достаточно ли этого правила для подключения с обеих сторон от
> шлюза?
> iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPTесть политики по умолчанию, если они в ACCEPT, то не имеет значения, а так да разрешит обращения через все сетевые интерфейсы
> я понимаю, что никто не обязан мне помогать или что нибудь объяснять,
> буду благодарен за любую помощь, ссылки, объяснения, критику и прочее.
спасибо огромное за помощь
> при проблемах с mtu, если проблем нет то не нужно его вставлять,
> ну и логичней было бы -A, а не -I
>> хочу добавить проброс портов правилом
>> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
>> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
>> заработает ли оно и куда ставить все эти пробросы портов?
> да если в таблице фильтров разрешено прохождение для этих пакетов и для
> ответовпоявился один вопрос:
правило такого вида будет разрешать пакетам из правила выше проходить, или я что-то написал не так?
iptables -I FORWARD 1 -m multiport --dport "тут перечисляю через запятую все проброшенные порты" -j ACCEPT
>[оверквотинг удален]
>>> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
>>> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
>>> заработает ли оно и куда ставить все эти пробросы портов?
>> да если в таблице фильтров разрешено прохождение для этих пакетов и для
>> ответов
> появился один вопрос:
> правило такого вида будет разрешать пакетам из правила выше проходить, или я
> что-то написал не так?
> iptables -I FORWARD 1 -m multiport --dport "тут перечисляю через запятую все
> проброшенные порты" -j ACCEPT--dport 1024:65535, но -m multiport --dports 80,443
синтаксис проверяйте по man iptables, по сравнению с Tutorial 1.1.19 он немного изменился, но общее представление осталось тем же
И ответные пакеты разрешите.
еще раз спасибо
если не сложно, гляньте конфиг который получился в итоге, может что-то не правильноiptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "внешний ip"
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4000 -j DNAT --to-destination 192.168.0.77:3389
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPTбудет ли это пропускать локальных пользователей на сайты через прокси на 3128 (с условием что прокси настроена правильно), будет ли работать проброс портов 4000->3389 , и будут ли ответные пакеты пропускаться, или для них еще что-то нужно добавить?
или правило для ответных пакетов вида
iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
будет пропускать ответные пакеты?
>[оверквотинг удален]
> если не сложно, гляньте конфиг который получился в итоге, может что-то не
> правильно
> iptables -P FORWARD ACCEPT
> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "внешний ip"
> iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports
> 3128
> iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4000 -j
> DNAT --to-destination 192.168.0.77:3389
> iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
> будет ли это пропускать локальных пользователей на сайты через прокси на 3128вы запрос клиента завернули на прокси, далее прокси отправит свой запрос, он пойдет через OUTPUT, ответ от сайта к прокси пойдет через INPUT если в них разрешено то что нужно для прохождения пакетов то ваши клиенты увидят странички, но это только для 80 порта, остальное от/к ним пойдет через FORWARD , SNAT
> (с условием что прокси настроена правильно), будет ли работать проброс портов
> 4000->3389 , и будут ли ответные пакеты пропускаться, или для них
> еще что-то нужно добавить?в PREROUTING с помощью DNAT вы меняете адрес и порт назначения, пакет пойдет через FORWARD
а там у вас похоже все во все стороны разрешено и ответ пойдет через FORWARD> или правило для ответных пакетов вида
> iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j
> ACCEPTэто для ответов на запросы ушедшие через OUTPUT, от машины где настраиваете iptables
INPUT/OUTPUT - к/от машины где настраиваете iptables
FORWARD - то что идет транзитом через машину где настраиваете iptables> будет пропускать ответные пакеты?
спасибо огромное, вы мне очень помогли
пожалуйста, подскажите еще однохочу заблокировать доступ к vk.com и youtube.com по ip для всех кроме 5 человек со статикой,
хотел через сквид, а он вроде https не умеет фильтроватьсобственно правила
iptables -A -s 192.168.0.53 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.54 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.55 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.56 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.12 -d vk.com --dport 443 -j ACCEPT
iptables -A -d vk.com --dport 443 -j DROP
это будет давать доступ к вк по 443 порту группе ip, а остальным закрывать? или последнее правило будет закрывать доступ потому что стоит последним, или пакет удовлетворяющий правилу выше не будет отброшен последним правилом и следовательно пройдет?
> пожалуйста, подскажите еще одно
> хочу заблокировать доступ к vk.com и youtube.com по ip для всех кроме
> 5 человек со статикой,http://www.opennet.me/openforum/vsluhforumID10/3830.html#41
продолжение осмотра:
ggogle://блокировка вконтакте iptables site:opennet.ru
ssl-bump vk.com site:opennet.ru
iptables -A FORWARD -s 192.168.0.1-192.168.0.11 -d vk.com -j REJECTсобственно такое правило не принимается, потому как диапазон ip указан не правильно, но мне не нужен диапазон вообще весь
могу ли я написать диапазон таким образом, чтобы ограничить ip 0.1-0.11 0.13-0.52 0.57-0.210 0.212-0.254?
и если могу, то приведите пример, пожалуйста, если вас не затруднит
> iptables -A FORWARD -s 192.168.0.1-192.168.0.11 -d vk.com -j REJECT
> собственно такое правило не принимается, потому как диапазон ip указан не правильно,
> но мне не нужен диапазон вообще весь
> могу ли я написать диапазон таким образом, чтобы ограничить ip 0.1-0.11 0.13-0.52
> 0.57-0.210 0.212-0.254?каждый диапазон по отдельности через -m iprange (описание в man), только толку от этого -d vk.com не заблокирует все ip которые есть у них, вы бы прочитали весь топик по ссылке приведенную Андреем
> и если могу, то приведите пример, пожалуйста, если вас не затруднит